tuto – ruby – newsgroup nntp

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/