OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [perl/] [gdown.pl] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 alirezamon
#!/usr/bin/env perl
2
#
3
# Google Drive direct download of big files
4
# ./gdown.pl 'gdrive file url' ['desired file name']
5
#
6
# v1.0 by circulosmeos 04-2014.
7
# v1.1 by circulosmeos 01-2017.
8
# v1.2, v1.3, v1.4 by circulosmeos 01-2019, 02-2019.
9
# //circulosmeos.wordpress.com/2014/04/12/google-drive-direct-download-of-big-files
10
# Distributed under GPL 3 (//www.gnu.org/licenses/gpl-3.0.html)
11
#
12
use strict;
13
#use POSIX;
14
 
15
use FindBin;
16
use lib $FindBin::Bin;
17
 
18
 
19
 
20
 
21
sub execute_command {
22
        my ($TEMP,$FILENAME,$URL)=@_;
23
    my $COMMAND="wget --progress=dot:giga --no-check-certificate --load-cookie $TEMP --save-cookie $TEMP \"$URL\"";
24
    $COMMAND.=" -O \"$FILENAME\"" if $FILENAME ne '';
25
    my $cmd = "xterm -e bash -c \'$COMMAND; sleep 5\'";
26
 
27
    #print "command = $cmd\n";
28
 
29
    my ($stdout,$exit,$stderr)=run_cmd_in_back_ground_get_stdout($cmd);
30
    if(length $stderr>1){
31
                        message_dialog("Error: $stderr",'error');
32
    }
33
    return 1;
34
}
35
 
36
sub download_from_google_drive{
37
        my ($URL,$FILENAME)=@_;
38
        my ($name,$path,$suffix) = fileparse("$FILENAME",qr"\..[^.]*$");
39
        my $TEMP="$ENV{PRONOC_WORK}/tmp/$name.cookie.temp";
40
        my $COMMAND;
41
        my $confirm;
42
        my $check;
43
 
44
 
45
        die "\n./gdown.pl 'gdrive file url' [desired file name]\n\n" if $URL eq '';
46
 
47
 
48
 
49
 
50
        $FILENAME='gdown.'.strftime("%Y%m%d%H%M%S", localtime).'.'.substr(rand,2) if $FILENAME eq '';
51
 
52
        if ($URL=~m#^https?://drive.google.com/file/d/([^/]+)#) {
53
            $URL="https://docs.google.com/uc?id=$1&export=download";
54
        }
55
        elsif ($URL=~m#^https?://drive.google.com/open\?id=([^/]+)#) {
56
            $URL="https://docs.google.com/uc?id=$1&export=download";
57
        }
58
 
59
        execute_command($TEMP,$FILENAME,$URL);
60
 
61
        while (-s $FILENAME < 100000) { # only if the file isn't download yet
62
            open fFILENAME, '<', $FILENAME;
63
            $check=0;
64
            foreach (<fFILENAME>) {
65
                        if (/href="(\/uc\?export=download[^"]+)/) {
66
                            $URL='https://docs.google.com'.$1;
67
                            $URL=~s/&amp;/&/g;
68
                            $confirm='';
69
                            $check=1;
70
                            last;
71
                        }
72
                        if (/confirm=([^;&]+)/) {
73
                            $confirm=$1;
74
                            $check=1;
75
                            last;
76
                        }
77
                        if (/"downloadUrl":"([^"]+)/) {
78
                            $URL=$1;
79
                            $URL=~s/\\u003d/=/g;
80
                            $URL=~s/\\u0026/&/g;
81
                            $confirm='';
82
                            $check=1;
83
                            last;
84
                        }
85
        }
86
                close fFILENAME;
87
            #die "Couldn't download the file :-(\n" if ($check==0);
88
                if($check == 0 ) {
89
                        message_dialog("Error: Couldn't download the file :-(",'error');
90
                        return;
91
                }
92
 
93
 
94
 
95
            $URL=~s/confirm=([^;&]+)/confirm=$confirm/ if $confirm ne '';
96
 
97
            execute_command($TEMP,$FILENAME,$URL);
98
        }
99
 
100
        unlink $TEMP;
101
 
102
}
103
 
104
1;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.