]>
Commit | Line | Data |
---|---|---|
a524bea4 ER |
1 | --- clive-0.4.10/src/clive/parse.py 2008-04-21 10:54:55.000000000 +0300 |
2 | +++ clive-0.4.10-delfi/src/clive/parse.py 2008-04-26 01:09:31.000000000 +0300 | |
d063348f | 3 | @@ -50,6 +50,7 @@ |
95f38a39 AG |
4 | ('sevenload.com', 'sevenl', self._parse_sevenload), |
5 | ('myvideo.', 'myvideo', self._parse_myvideo), | |
77031ea2 | 6 | ('break.com', 'break', self._parse_break), |
a524bea4 | 7 | + ('delfi.', 'delfi', self._parse_delfi), |
f9a33831 | 8 | ] |
f51d0f1f | 9 | |
f9a33831 | 10 | ## Parses a video page data (HTML) |
a524bea4 | 11 | @@ -221,6 +222,72 @@ |
f9a33831 ER |
12 | url = self._parse_from_to(data, 'mediaURL=', '&', skip_from=1) |
13 | return (url, vid, low_quality) | |
bbc5d685 | 14 | |
a524bea4 ER |
15 | + def _graburl(self, url, read=1): |
16 | + from urlgrabber.grabber import URLGrabber, URLGrabError | |
17 | + data = '' | |
18 | + try: | |
19 | + g = URLGrabber( | |
20 | + http_headers = (('accept-encoding', 'gzip'),), | |
21 | + user_agent = self._opts.http_agent, | |
22 | + proxies = self._opts.http_proxy | |
23 | + ) | |
24 | + o = g.urlopen(url) | |
25 | + if read: | |
26 | + data = o.read() | |
27 | + if o.hdr.get('content-encoding') == 'gzip': | |
28 | + data = gzip.GzipFile(fileobj=StringIO(data)).read() | |
29 | + return data | |
30 | + except URLGrabError, err: | |
31 | + self._say('%s [%s]' % (e.strerror,url), is_error=1) | |
32 | + raise SystemExit | |
33 | + return data | |
bbc5d685 | 34 | + |
a524bea4 ER |
35 | + def _parse_delfi(self, url, data, low_quality): |
36 | + url = None | |
37 | + | |
38 | + s = self._parse_from_to(data, "flv_url:", ",") | |
39 | + if s: | |
40 | + # videobox | |
41 | + # http://www.delfi.ee/news/paevauudised/paevavideo/article.php?id=15218215 | |
42 | + try: | |
43 | + url = s.replace("'", "").split('flv_url: ',2)[1] | |
44 | + except IndexError: | |
45 | + pass | |
46 | + | |
47 | + if not url: | |
48 | + # videoproject embed | |
49 | + # http://www.delfi.ee/news/paevauudised/paevavideo/article.php?id=18759038 | |
50 | + s = self._parse_from_to(data, "_delfiVideoSalt", ";") | |
51 | + salt = None | |
52 | + try: | |
53 | + salt = s.split('"',2)[1] | |
54 | + except IndexError: | |
55 | + pass | |
56 | + | |
57 | + if salt != None: | |
58 | + # find url to videoproject | |
59 | + s = self._parse_from_to(data, "src=", "/js/embed.js") | |
60 | + s = s[5 + s.rfind("src"):] + "/video/" + salt + "/" | |
61 | + # fetch video page | |
62 | + s = self._graburl(s) | |
63 | + s = self._parse_from_to(s, "s1.addVariable('file'", ";"); | |
64 | + try: | |
65 | + url = s.split("'")[3] | |
66 | + except IndexError: | |
67 | + pass | |
68 | + | |
69 | + if not url: | |
70 | + # videoproject | |
71 | + # http://video.delfi.ee/video/Uu4gF58g/ | |
72 | + s = self._parse_from_to(data, "s1.addVariable('file'", ";"); | |
73 | + try: | |
74 | + url = s.split("'")[3] | |
75 | + except IndexError: | |
76 | + pass | |
77 | + | |
78 | + vid = md5.new(str(time.time())).hexdigest()[:8] | |
79 | + return (url, vid, low_quality) | |
f51d0f1f | 80 | + |
f9a33831 ER |
81 | def _random_vid(self): |
82 | return md5.new(str(time.time())).hexdigest()[:8] | |
83 |