Je me demandais comment illustrer l’utilisation du gem nntp avec ruby, et j’ai trouvé l’idée !
un petit bout de code pour se connecter à un serveur de newsgroup public et « scanner » les différents groupes existants. Le tout dans l’irb de ruby !
1.9.2p290 :001 > require 'nntp' => true 1.9.2p290 :002 > Net::NNTP.start('news.internetdienste.de', 119) do |nntp| 1.9.2p290 :003 > active_news = nntp.list() 1.9.2p290 :004?> end
Vous n’avez plus qu’à filtrer le résultat en sortie sur des topics particuliers. La même chose mais qui récupère les sujets d’un newsgroup spécifique.
1.9.2p290 :005 > newsgroup = 'fr.sci.biologie.botanique' => "fr.sci.biologie.botanique" 1.9.2p290 :007 > Net::NNTP.start('news.internetdienste.de', 119) do |nntp| 1.9.2p290 :008 > message_ids = nntp.listgroup(newsgroup) 1.9.2p290 :009?> nntp.group(newsgroup) 1.9.2p290 :010?> message_ids[1].each do |id| 1.9.2p290 :011 > nntp.head(id).each do |header| 1.9.2p290 :012 > header.each { |line| puts(line) if line.index('Subject:') } 1.9.2p290 :013?> end 1.9.2p290 :014?> end 1.9.2p290 :015?> end
donnera comme résultats :
Subject: =?ISO-8859-1?Q?=C9ric_Gonzal=E8s_diffam=E9_avec_la_complicit=E9_d=27Yves_?= Subject: [Kekcestruc] Nouvelles de janvier 2013 Subject: [Kekcestruc] Nouvelles de f�vrier 2013 Subject: [Kekcestruc] Nouvelles de mars 2013 Subject: [Kekcestruc] Nouvelles de mars 2013 Subject: =?ISO-8859-15?Q?[Determination]_Plante_de_l'Est=E9rel?= Subject: [Kekcestruc] Nouvelles d'avril 2013 Subject: [Kekcestruc] Nouvelles de mai 2013 Subject: Re: =?ISO-8859-15?Q?[Determination]_Plante_de_l'Est=E9rel?= Subject: Re: Solutions Manual for Essentials of Chemical Reaction Engineering Subject: Re: Th�orie du genre out ! Subject: Re: =?ISO-8859-1?Q?Th=E9orie?= du genre out ! Subject: Re: Th�orie du genre out ! Subject: =?windows-1252?Q?=AB_L=92Addiction_en__Question_=BB?= Subject: [Kekcestruc] Nouvelles de juin 2013 Subject: =?ISO-8859-1?Q?Gramin=E9e_inconnue_dans_le_pot_du_Dr?= Subject: Re: =?ISO-8859-1?Q?Gramin=E9e_inconnue_dans_le_pot_du_?= Subject: [Kekcestruc] Nouvelles du mois de juillet Subject: Re: =?ISO-8859-1?Q?Gramin=E9e_inconnue_dans_le_pot_du_?= Subject: [Kekcestruc] Nouvelles =?iso-8859-1?Q?d'ao=FBt?= 2013 Subject: [Kekcestruc] Nouvelles de septembre 2013 Subject: [Charte] fr.sci.biologie.botanique
voilà, je vous laisse fouiller un peu pour filtrer les messages avec des binaires et ainsi pouvoir scraper pleins de choses .. petit indice, il faut regarder du coté de la ligne contenant l’instruction « nntp.head » (plus d’infos ici => http://nntp.rubyforge.org/ )
en prime voici un petit lien avec des tas de serveurs de newsgroup publics et gratuits : http://www.freeusenetnews.com/