From 9e33245ee17cf978fa67cde4e0fe8113a564d691 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Tue, 30 Sep 2008 15:58:21 +0200 Subject: [PATCH] fix youtube find --- oxweb/youtube.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/oxweb/youtube.py b/oxweb/youtube.py index 449a607..2b3d602 100644 --- a/oxweb/youtube.py +++ b/oxweb/youtube.py @@ -2,10 +2,11 @@ # vi:si:et:sw=4:sts=4:ts=4 from urllib import quote import xml.etree.ElementTree as ET +import re import feedparser -from oxlib.cache import getUrl -from oxlib import findString +from oxlib.cache import getUrl, getUrlUnicode +from oxlib import findString, findRe def getVideoUrl(youtubeId, format='mp4'): @@ -26,6 +27,7 @@ def getMovieInfo(youtubeId): fd = feedparser.parse(data) return getInfoFromAtom(fd.entries[0]) +''' def getInfoFromAtom(entry): info = dict() info['title'] = entry['title'] @@ -38,7 +40,7 @@ def getInfoFromAtom(entry): info['thumbnail'] = "http://img.youtube.com/vi/%s/0.jpg" % info['id'] info['flv'] = getVideoUrl(info['id'], 'flv') info['mp4'] = getVideoUrl(info['id'], 'mp4') - info['embed'] = '''''' % (info['id'], info['id']) + info['embed'] = '' % (info['id'], info['id']) return info def find(query, max_results=10, offset=1, orderBy='relevance'): @@ -53,4 +55,32 @@ def find(query, max_results=10, offset=1, orderBy='relevance'): if len(videos) >= max_results: return videos return videos +''' + +def find(query, max_results=10, offset=1, orderBy='relevance', video_url_base=None): + url = "http://youtube.com/results?search_query=%s&search=Search" % quote(query) + data = getUrlUnicode(url) + regx = re.compile(''' video''') + id_title = regx.findall(data) + data_flat = data.replace('\n', ' ') + videos = {} + for video in id_title: + vid = video[0] + if vid not in videos: + v = dict() + v['id'] = vid + v['link'] = "http//youtube.com/watch.v=%s" % v['id'] + v['title'] = video[2].strip() + if video_url_base: + v['video_link'] = "%s/%s" % (video_url_base, v['id']) + else: + v['video_url'] = get_video_url(v['id']) + v['description'] = findRe(data, 'BeginvidDesc%s">(.*?)' % v['id']).strip().replace('', ' ').replace('', '') + v['thumbnail'] = video[1] + videos[vid] = v + if len(videos) >= max_results: + return videos.values() + return videos.values() +