From: Vincent Le Gallic Date: Wed, 10 Apr 2013 04:28:29 +0000 (+0200) Subject: last_hugo, last_norman, last_cyprien, last_grenier X-Git-Url: http://gitweb.pimeys.fr/?p=today.git;a=commitdiff_plain;h=3948efcad7488ace6b42f22973e4239c3fd835d5 last_hugo, last_norman, last_cyprien, last_grenier --- diff --git a/today_server.py b/today_server.py index 3c79393..120bd51 100755 --- a/today_server.py +++ b/today_server.py @@ -58,6 +58,29 @@ def last_visiteur(): nepisodes = len(episodes) return nsaisons * 100 + nepisodes +def parse_youtube(username): + """Récupère les vidéos d'une chaîne Youtube""" + link = "https://gdata.youtube.com/feeds/api/users/%s/uploads?start-index=1&max-results=50" % (username,) + entries = [] + while link: + p = urllib.urlopen(link) + t = p.read() + x = etree.fromstring(t) + # lxml ne supporte pas les namespaces vides dans les requêtes XPath + ns = x.nsmap + ns["default"] = ns[None] + ns.pop(None) + # Il y a potentiellement une suite + nextlinks = x.xpath("//default:link[@rel='next']", namespaces=ns) + if nextlinks: + link = nextlinks[0].attrib["href"] + else: + link = False + localentries = x.xpath("//default:entry", namespaces=ns) + entries.extend(localentries) + titles = [e.xpath(".//default:title", namespaces=ns)[0].text for e in entries] + return titles + def get_season_episode(title): """Récupère les numéros de la saison et de l'épisode. Crash si ne trouve pas.""" ep = int(re.findall("ep([0-9]*)", title)[0]) @@ -93,32 +116,25 @@ def last_noob(): def last_warpzone(): return last_noob_warpzone()[1] -def parse_youtube(username): - """Récupère les vidéos d'une chaîne Youtube""" - link = "https://gdata.youtube.com/feeds/api/users/%s/uploads?start-index=1&max-results=50" % (username,) - entries = [] - while link: - p = urllib.urlopen(link) - t = p.read() - x = etree.fromstring(t) - # lxml ne supporte pas les namespaces vides dans les requêtes XPath - ns = x.nsmap - ns["default"] = ns[None] - ns.pop(None) - # Il y a potentiellement une suite - nextlinks = x.xpath("//default:link[@rel='next']", namespaces=ns) - if nextlinks: - link = nextlinks[0].attrib["href"] - else: - link = False - localentries = x.xpath("//default:entry", namespaces=ns) - entries.extend(localentries) - titles = [e.xpath(".//default:title", namespaces=ns)[0].text for e in entries] - return titles +def last_hugo(): + titles = parse_youtube("HugoToutSeul") + return len(titles) + +def last_norman(): + titles = parse_youtube("NormanFaitDesVideos") + return len(titles) + +def last_cyprien(): + titles = parse_youtube("MonsieurDream") + return len(titles) + +def last_grenier(): + titles = parse_youtube("joueurdugrenier") + return len(titles) def get_file(): - """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers.""" + """Récupère la liste des derniers ids de chaque truc, stockée dans le fichier.""" f = open(store_published_file) news = json.load(f) f.close() @@ -137,6 +153,10 @@ FETCHS = { "visiteur" : last_visiteur, "noob" : last_noob, "warpzone" : last_warpzone, + "hugo" : last_hugo, + "norman" : last_norman, + "cyprien" : last_cyprien, + "grenier" : last_grenier, } def fetch_all():