NNTP_lib
Publié : ven. 30/mai/2008 23:59
salut ..
je me suis fait une petite librairie pour lire et extraire les images uuencodé
et le texte des News group ..
la lib est dispo sur mon site..
voici en gros les fonctions
le code suivant est l'exemple qui est donné avec ma lib
un petit lecteur de news group
il s'agit d'un prg qui affiche les images trouvée sur le news group, et a sa droite affiche le texte trouvé
bouton de souris droite/gauche pour avancer ou reculer dans les articles
pour quitter il suffit de fermer la fenetre
je me suis fait une petite librairie pour lire et extraire les images uuencodé
et le texte des News group ..
la lib est dispo sur mon site..
voici en gros les fonctions
NNTP_Lib by Dobro
cette librairie se compose de quelques fonctions pour lire
du texte ou des images UUencodé
(les images sont majoritairement UUencodé dans les News group)
; ***********************************************************
nntp_init(IP$,login$,pass$) ; se connecter aux news
IP$ = "news.wanadoo.fr" ; votre prestataire (news.free.fr)
login$="********" ; votre login chez ce prestataire
pass$="******" ; votre pass
; ***********************************************************
nntp_list()
; cree un fichier "list.txt" qui contient la liste des Newgroups ex : " alt.binaries.pictures.lingerie "
; ***********************************************************
resultat.l=nntp_get_info(nom_group$,type)
renvois des information concernant le news group observé
nom_group$=" alt.binaries.pictures.lingerie "
si type =1 ; le code_erreur est retourné dans resultat.l
si type =2 ; le nombre d'article dans le groupe est retourné dans resultat.l
si type =3 ;le numero du premier article du group est retourné dans resultat.l
si type =4 ;le numero du dernier article du group est retourné dans resultat.l
; ***********************************************************
resultat.s=nntp_get_photo(nom_group$,numero de l'article a lire$)
cette fonction fait 2 choses
1- elle lit l'article, et génère 2 fichiers , le fichier "uucode.jpg" si une images uuencodé est trouvé dans le message
et le fichier "uucode.txt", qui est la Version texte de l'image
2- elle recupere dans "Resultat.s" , le text extrait de l'article
ps: ces 2 fichiers sont effacés a chaque appel de cette fonction
; ***********************************************************
; nntp_end()
; met fin a la connection aux news group
; ***********************************************************
; resultat.s=UUDecode_text(text$)
; décode un text UUencodé et met le resultat dans resultat.s
; ***********************************************************
; resultat=UUDecode_2()
; decode un Buffer nommé "buf$" UUencodé
; le resultat sera dans la meme variable
; "resultat" contiendra la longeur en octets du buffer decodé
; utile pour sauvegarder une image a partir d'un text UUencodé :
; Routine de LNA
; OpenFile(1,"uucode.txt")
; OpenFile(2,"uucode.jpg")
; While Eof(1)=0
; buf$=ReadString(1)
; buf$=(Right( buf$,Len( buf$)-1)) ; on retire le premier caractere de chaque lignes
; long_binaire=UUDecode_2() ; on decode le uuencode
; WriteData(2,@buf$,long_binaire) ; on ecrit le fichier decodé
; Wend
; CloseFile(2)
le code suivant est l'exemple qui est donné avec ma lib
un petit lecteur de news group

il s'agit d'un prg qui affiche les images trouvée sur le news group, et a sa droite affiche le texte trouvé
bouton de souris droite/gauche pour avancer ou reculer dans les articles
pour quitter il suffit de fermer la fenetre

Code : Tout sélectionner
; A LIRE
; cette exemple charge les images et affiche le texte dans un éditor gadget
; le bouton gauche de la souris lis les articles précédente
; le bouton droit lit les articles suivant
; pour quitter il faut fermer la fenetre avec la croix
; pour l'instant aucun control n'est effectué pour savoir si la connection marche ou pas...
; ce qui fait que de temps en temps, le prg peut se bloquer, seul un ALT+CTRL+DEL
; permet de le virer de la RAM ...
; ça fait un moment que je programme cette librairie, mais en y allant petit a petit
; donc c'est pas parfait, mais ça marche !!!
; certaine fois les premiers articles ne son plus disponibles, donc le prg se plante
;(puisque je n'ai pas mis de control pour le moment )
; n'hésitez pas dans ce cas a ajouter une valeur pour le premier article
; l'idéal (Gag) étant d'utiliser un lecteur de news, pour relever le premier article lisible...
#editor=1
UseJPEGImageDecoder()
; ============CHANGER ICI===================
IP$ = "news.wanadoo.fr" ; votre prestataire (news.free.fr)
login$="********" ; votre login chez ce prestataire
pass$="********" ; votre pass
nom_group$=" alt.binaries.pictures.lingerie " ; le nom du groupe qu'on va lire
;n_art=546347 ; ici le numero de l'article qu'on va lire !!!
; ============CHANGE HERE ===================
nntp_init(IP$,login$,pass$) ; connection aux NewsGroup
n_art=nntp_get_info(nom_group$,3)+28 ; premier article
dern_art=nntp_get_info(nom_group$,4) ; dernier article
n_article=n_art
debut:
n_article$=Str(n_article)
text$=nntp_get_photo(nom_group$, n_article$)
; ***********************************************************
; exemple d'utilisation
; *****************************************************************************
; AFFICHAGE DE l'image en clair dans une fenetre
; *****************************************************************************
If OpenWindow(0, 0, 0, 1024, 768, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
EditorGadget(#editor, 600, 10, 450, 768,#PB_Editor_ReadOnly)
SetGadgetText(#editor, text$)
If LoadImage(0, "uucode.jpg") ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
ImageGadget(0, 0, 0, 1024,768, ImageID(0)) ; imagegadget standard
EndIf
Repeat
event=WaitWindowEvent()
If event=#WM_RBUTTONDOWN ; bouton droit image suivante
n_article=n_article+1
ClearGadgetItemList(#editor)
text$=""
CloseWindow(0)
Goto debut
EndIf
If event=#WM_LBUTTONDOWN ; bouton gauche image precedente
n_article=n_article-1
ClearGadgetItemList(#editor)
text$=""
CloseWindow(0)
Goto debut
EndIf
Until event= #PB_Event_CloseWindow ; fermer la fenetre pour une autre image
nntp_end()
EndIf
End