Provide HTML representation of responses
[mygpo-feedservice.git] / feedservice / youtube.py
blob6fd25e316b33ef59e0ee90a1c9449ed39c5f3fcc
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
4 # This file is part of my.gpodder.org.
6 # my.gpodder.org is free software: you can redistribute it and/or modify it
7 # under the terms of the GNU Affero General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or (at your
9 # option) any later version.
11 # my.gpodder.org is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
14 # License for more details.
16 # You should have received a copy of the GNU Affero General Public License
17 # along with my.gpodder.org. If not, see <http://www.gnu.org/licenses/>.
20 # taken from gPodder :)
22 import re
23 import urllib
25 def is_video_link(url):
26 return (get_youtube_id(url) is not None)
28 def get_youtube_id(url):
29 r = re.compile('http://(?:[a-z]+\.)?youtube\.com/v/(.*)\.swf', re.IGNORECASE).match(url)
30 if r is not None:
31 return r.group(1)
33 r = re.compile('http://(?:[a-z]+\.)?youtube\.com/watch\?v=([^&]*)', re.IGNORECASE).match(url)
34 if r is not None:
35 return r.group(1)
37 return None
40 def get_real_cover(url):
41 rs = [re.compile('http://www\\.youtube\\.com/rss/user/([^/]+)/videos\\.rss', re.IGNORECASE),
42 re.compile('http://www\\.youtube\\.com/profile_videos\\?user=([^\&]+)', re.IGNORECASE)]
44 for r in rs:
45 m = r.match(url)
46 if m is None:
47 continue
48 username = m.group(1)
49 api_url = 'http://gdata.youtube.com/feeds/api/users/%s?v=2' % username
50 data = urllib.urlopen(api_url).read()
51 match = re.search('<media:thumbnail url=[\'"]([^\'"]+)[\'"]/>', data)
52 if match is not None:
53 return match.group(1)
55 return None