]> git.pld-linux.org Git - packages/clive.git/blob - clive-delfi.patch
- updated to 0.5.0
[packages/clive.git] / clive-delfi.patch
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
3 @@ -50,6 +50,7 @@
4              ('sevenload.com', 'sevenl', self._parse_sevenload),
5              ('myvideo.', 'myvideo', self._parse_myvideo),
6              ('break.com', 'break', self._parse_break),
7 +            ('delfi.', 'delfi', self._parse_delfi),
8          ]
9  
10      ## Parses a video page data (HTML)
11 @@ -221,6 +222,72 @@
12          url = self._parse_from_to(data, 'mediaURL=', '&', skip_from=1)
13          return (url, vid, low_quality)
14  
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
34 +
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)
80 +
81      def _random_vid(self):
82          return md5.new(str(time.time())).hexdigest()[:8]
83  
This page took 0.099269 seconds and 3 git commands to generate.