]>
gitweb.pimeys.fr Git - today.git/blob - youtube.py
2 # -*- encoding: utf-8 -*-
4 """ Gestion des chaînes Youtube """
13 def parse_youtube(username
, regexp
=None, length
=False):
14 """Récupère les vidéos d'une chaîne Youtube"""
15 link
= "https://gdata.youtube.com/feeds/api/users/%s/uploads?start-index=1&max-results=50" % (username
,)
18 p
= urllib
.urlopen(link
)
20 x
= etree
.fromstring(t
)
21 # lxml ne supporte pas les namespaces vides dans les requêtes XPath
23 ns
["default"] = ns
[None]
25 # Il y a potentiellement une suite
26 nextlinks
= x
.xpath("//default:link[@rel='next']", namespaces
=ns
)
28 link
= nextlinks
[0].attrib
["href"]
31 localentries
= x
.xpath("//default:entry", namespaces
=ns
)
32 entries
.extend(localentries
)
33 titles
= [e
.xpath(".//default:title", namespaces
=ns
)[0].text
for e
in entries
]
34 if not regexp
is None: # On ne garde que les titres qui matchent la regexp
35 titles
= [t
for t
in titles
if re
.match(regexp
, t
)]
36 if length
: # On n'est intéressés que par le nombre
41 def get_parser(username
, regexp
=None):
42 """ Renvoie un parseur de chaîne youtube prêt à être appelé """
44 return parse_youtube(username
, regexp
, length
=True)
47 channels
= serverconfig
.load_file(serverconfig
.youtube_channels_file
)
48 functions
= {id : get_parser(username
, regexp
) for (id, username
, regexp
) in channels
}