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 :)
23 import urllib
.request
, urllib
.parse
, urllib
.error
25 def is_video_link(url
):
26 return (get_youtube_id(url
) is not None)
28 def get_youtube_id(url
):
32 r
= re
.compile('http://(?:[a-z]+\.)?youtube\.com/v/(.*)\.swf', re
.IGNORECASE
).match(url
)
36 r
= re
.compile('http://(?:[a-z]+\.)?youtube\.com/watch\?v=([^&]*)', re
.IGNORECASE
).match(url
)
43 def get_real_cover(url
):
44 rs
= [re
.compile('http://www\\.youtube\\.com/rss/user/([^/]+)/videos\\.rss', re
.IGNORECASE
),
45 re
.compile('http://www\\.youtube\\.com/profile_videos\\?user=([^\&]+)', re
.IGNORECASE
)]
52 api_url
= 'http://gdata.youtube.com/feeds/api/users/%s?v=2' % username
53 data
= urllib
.request
.urlopen(api_url
).read()
54 match
= re
.search('<media:thumbnail url=[\'"]([^\'"]+)[\'"]/>', data
)