]> gitweb.pimeys.fr Git - today.git/commitdiff
On peut récupérer les vidéos des chaînes Youtube grâce à l'API Youtube
authorVincent Le Gallic <legallic@crans.org>
Wed, 10 Apr 2013 03:47:37 +0000 (05:47 +0200)
committerVincent Le Gallic <legallic@crans.org>
Wed, 10 Apr 2013 03:47:37 +0000 (05:47 +0200)
today_server.py

index 98e484481a65bf5ae894bed1693ad3351dd19758..1be4d3f4def164937eefb3daad7366e7c0c7da36 100755 (executable)
@@ -14,6 +14,7 @@ import time, datetime
 import locale
 import re
 import BeautifulSoup
+from lxml import etree
 import os
 import sys
 import urllib
@@ -118,7 +119,31 @@ def last_noob_warpzone():
     ######
     ###### RHÂ, shit, y'a des fuckings trucs du genre "1er" dans les dates… :/
     return noobs, warpzones
-    
+
+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_file():
     """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers."""
     f = open(store_published_file)