4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the Revised BSD License.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 Revised BSD License for more details.
12 Copyright 2013 Cool Dude 2k - http://idb.berlios.de/
13 Copyright 2013 Game Maker 2k - http://intdb.sourceforge.net/
14 Copyright 2013 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
16 $FileInfo: beeg-dl.py - Last Update: 10/07/2013 Ver. 1.0.5 RC 6 - Author: cooldude2k $
19 import re
, os
, sys
, urllib
, urllib2
, cookielib
, StringIO
, gzip
, time
, datetime
, argparse
, urlparse
;
21 parser
= argparse
.ArgumentParser();
22 parser
.add_argument("url", help="beeg url");
23 getargs
= parser
.parse_args();
24 mlessvid
= getargs
.url
;
25 mregex_text
= re
.escape("http://beeg.com/")+"([a-zA-Z0-9\/]+)";
26 if(re
.findall(mregex_text
, mlessvid
)):
27 mlessvid
= re
.findall(mregex_text
, mlessvid
);
28 mlessvid
= mlessvid
[0];
29 fakeua
= "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0"";
30 geturls_cj = cookielib.CookieJar();
31 geturls_opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(geturls_cj));
32 geturls_opener.addheaders = [("Referer
", "http
://beeg
.com
/section
/long-videos
/"), ("User
-Agent
", fakeua), ("Accept
-Encoding
", "gzip
, deflate
"), ("Accept
-Language
", "en
-US
,en
-CA
,en
-GB
,en
-UK
,en
-AU
,en
-NZ
,en
-ZA
,en
;q
=0.5"), ("Accept
-Charset
", "ISO
-8859-1,ISO
-8859-15,utf
-8;q
=0.7,*;q
=0.7"), ("Accept
", "text
/html
,application
/xhtml
+xml
,application
/xml
;q
=0.9,*/*;q
=0.8"), ("Connection
", "close
")];
33 geturls_text = geturls_opener.open("http
://beeg
.com
/"+mlessvid);
34 if(geturls_text.info().get("Content
-Encoding
")=="gzip
" or geturls_text.info().get("Content
-Encoding
")=="deflate
"):
35 strbuf = StringIO.StringIO(geturls_text.read());
36 gzstrbuf = gzip.GzipFile(fileobj=strbuf);
37 out_text = gzstrbuf.read()[:];
38 if(geturls_text.info().get("Content
-Encoding
")!="gzip
" and geturls_text.info().get("Content
-Encoding
")!="deflate
"):
39 out_text = geturls_text.read()[:];
40 regex_text = re.escape("'file': '")+"(.*)"+re.escape("',");
41 post_text = re.findall(regex_text, out_text);
43 mlesslink = post_text[0]+"?start
=0";
46 getvidurls_cj = cookielib.CookieJar();
47 getvidurls_opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(getvidurls_cj));
48 getvidurls_opener.addheaders = [("Referer
", "http
://beeg
.com
/"+mlessvid), ("User
-Agent
", fakeua), ("Accept
-Encoding
", "gzip
, deflate
"), ("Accept
-Language
", "en
-US
,en
-CA
,en
-GB
,en
-UK
,en
-AU
,en
-NZ
,en
-ZA
,en
;q
=0.5"), ("Accept
-Charset
", "ISO
-8859-1,ISO
-8859-15,utf
-8;q
=0.7,*;q
=0.7"), ("Accept
", "text
/html
,application
/xhtml
+xml
,application
/xml
;q
=0.9,*/*;q
=0.8"), ("Connection
", "close
")];
49 getvidurls_text = getvidurls_opener.open(mlesslink);
50 def chunk_report(bytes_so_far, chunk_size, total_size):
51 percent = float(bytes_so_far) / total_size;
52 percent = round(percent*100, 2);
53 sys.stdout.write("Downloaded
%d of
%d bytes (%0.2f
%%)\r" %
54 (bytes_so_far, total_size, percent));
55 if bytes_so_far >= total_size:
56 sys.stdout.write("\n");
57 def chunk_read(response, chunk_size=8192, report_hook=None):
58 total_size = response.info().getheader("Content
-Length
").strip();
59 total_size = int(total_size);
62 chunk = response.read(chunk_size);
63 bytes_so_far += len(chunk);
67 report_hook(bytes_so_far, chunk_size, total_size);
69 chunk_read(getvidurls_text, report_hook=chunk_report);
70 vidfile = open(os.getcwd()+os.sep+os.path.basename(urllib2.urlparse.urlsplit(mlesslink)[2]), "wb
");
71 vidfile.write(getvidurls_text.read());