Donc le but, c'est d'arriver à extraire, par exemple, des posts d'un blog sous forme de fichier texte, avec comme nom de fichier le titre du post. En l'occurence, c'est un truc que je cherchais à faire depuis longtemps sur Blogger, mais le seul export c'est de l'XML au format Atom.
Solution simple, écrire un petit parser xml en un langage x ou y, perl ou Ruby, mais je n'avais vraiment pas envie de me prendre la tête.
On va donc utiliser Ruby et la gem "simple-rss".
Première étape:
gem install simple-rssEnsuite, un petit script super simple:
require "rubygems"
require "simple-rss"
require "open-uri"
feed = "http:/feedurl
rss = SimpleRSS.parse open('feed')
rss.entries.each do |item|
puts "#{item.title} #{item.send('link+alternate')} #{item.content} \n"
end
Reste un truc intéressant, comment récupérer du contenu spécifique dans le flux atom? Bonne question.
Comment récupérer un label particulier dans un flux RSS Blogger?
Et bien mes enfant c'est très simple, il suffit de formater son url de la façon suivante:
http://hostname/feeds/posts/default/-/labelOù hostname et label sont bien évidement à configurer suivant votre cas particulier.
Mais, il nous manque encore un truc: on a pas tous les posts...
Comment récuperer tous les posts d'un flux RSS Blogger?
Et bien pour cela rien de plus simple, il suffit d'aller jeter un coup d'oeil dans l'API de Google, il y a beaucoup de paramètres qui peuvent nous intéresser! Dans le cas présent, par exemple, on va utiliser "max-results", mais vous pouvez aussi aller regarder les paramètres published-min, published-max et fields.
Ce qui nous donne, pour récupérer tous les posts d'un label:
http://hostname/feeds/posts/default/-/label?max-results=5000
Et voilà!
Merci à toi pour tous ceux que ça va aider, mais c'est du chinois pour moi ! Je vais donc en rester à la bonne vieille méthode du "copier-coller" sous Word !!!
RépondreSupprimerBon, la version Ruby marche, mais simple-rss sort quelques warnings quand il tombe sur des caractères accentués.
RépondreSupprimerEn Perl ça donne ça:
1 (longue!) ligne:
perl -C -MXML::Twig -E'$,=" "; XML::Twig->parse( twig_handlers => { entry => sub { say $_->field( "title"), $_->field( q{link[@rel="alternate"]}), $_->field( "content"); } }, "http://frenchgirlinseattle.blogspot.com/feeds/posts/default?prettyprint=true")'
Ou plus propre, avec cache (option -c) pour pouvoir débogguer sans embêter le serveur http://xmltwig.org/xmltwig/examples/get_rss (j'arrive pas à formatter le code dans les commentaires)
Hello Mirod,
SupprimerTiens, ben en fait perl c'est vraiment mon language préféré et celui dans lequel je suis le plus à l'aise, mais je trouve que dans le cas présent, l'exemple en Ruby a une simplicité presque zen, loin du fouilli plein de charactères spéciaux de perl.
foreach item puts item.field, c'est vraiment enfantin, j'aime bien. XML::Twig a l'air sympa, ceci étant.
Je suis assez d'accord en fait. J'ai pondu les versions avec XML::Twig parce que bon, je suis obligé contractuellement ;--) Il y a probalement moyen de faire plus simple en Perl, avec le module qui va bien, mais c'est vrai que ta version Ruby est assez élégante.
RépondreSupprimer