- # -*- coding: utf-8 -*-
-
- #-#####################################################
- #- Classe permetant de gerer les connexions au serveurs nntp #
- #-
- #- Ce code n'est que la partie d'un projet plus vaste dans le but est de réaliser un client usenet
- #- en python ou en C++
- #- Ce code doit etre amélioré notament en geran au mieu les exceptions et en ajputant d'autres fonctionnalite
- #- temps passe a coder et valider = 2H
- #- Coded by azalsup@free.fr
- #- Code ouvert sans conditions
- #-
- #-#####################################################
-
- __revision__ = 0.1
-
- # Les includes se font par ici
- import nntplib, sys
-
-
- #Et si on declarait quelques variables globales
- serverName = "news.free.fr"
- groupName = 'proxade.free.adsl.degroupage'
- groupName = 'sci.crypt'
-
- #Les fonctions elementaires necessaires au bon fonctionnement du programme
- def END() :
- """Areter le programme"""
- sys.exit()
-
- def ERROR(msg):
- """Affiche un message d'erreur"""
-
- print '#'*len(msg)
- print msg
- print '#'*len(msg)
- END()
-
- def WARNING(msg):
- """Affiche un message de prevention"""
-
- print '*'*len(msg)
- print msg
- print '*'*len(msg)
-
- def INFO(msg):
- """Affiche un message d'information"""
-
- print '@'*len(msg)
- print msg
- print '@'*len(msg)
-
-
- class MyNNTP :
- """Cette classe permet de gerer la connexion aux serveurs nntp """
-
- def __init__(self, server = serverName, group = groupName):
- """Constructeur par defaut de la classe NNTP"""
-
- self.serverName = server
- self.groupName = group
- self.news = None
- self.group = None
- self.info = None
-
-
- # connexion au serveur
- def connect(self, server = None) :
- """ Se connecter au serveur indique"""
- if server != None :
- self.serverName = server
-
- try :
- self.news = nntplib.NNTP(self.serverName)
- except :
- ERROR("connexion impossible")
-
- INFO('connexion réussie : ' + self.news.getwelcome())
-
- # connexion au groupe
- def connect_2_group(self, group = None) :
- """ Se connecter au groupe indique"""
- if group != None :
- self.groupName = group
-
- INFO('%s - connexion au groupe' % self.groupName)
-
- try :
- self.group = self.news.group(self.groupName)
- except :
- ERROR('impossible de se connecter au groupe')
-
- INFO('connexion au groupe réussie : ' + self.group[0])
-
- # affichage des informations sur le groupe
- def show(self):
- """ affiche les informations sur le groupe"""
-
- self.info = {}
- self.info["debut"] = self.group[2]
- self.info['fin'] = self.group[3]
- self.info['nombre'] = self.group[1]
-
- #Afficher les informations
- _msg = "Nombre d'articles : " + self.info['nombre'] +'\n'
- _msg += "Identifiant du premier article : " + self.info['debut'] +'\n'
- _msg += "Identifiant du dernier article : " + self.info['fin'] +'\n'
- INFO(_msg)
-
- return int(self.info['debut']), int(self.info['fin'])
-
-
- def list(self, debut, fin):
- """Affiche les messages"""
-
- for _i in range(debut, fin):
- print _i
-
- try :
- _article = self.news.article(str(_i))
- _body = self.news.body(str(_i))
- except :
- WARNING('Article absent de ce groupe')
- continue
-
- print _body
-
- print "="*80
- print "Numéro: " + _body[1]
- print "Message-ID: " + _body[2]
-
- for _j in _article[3]:
- if ("References:" in _j):
- print _j
-
- print "-"*80
-
- for _j in _body[3]:
- print "*-"*4
- print _j
- print "*-"*4
- print "-"*80
-
- if __name__ == '__main__' :
-
- _nntp_free = MyNNTP(serverName, groupName)
-
- _nntp_free.connect()
- _nntp_free.connect_2_group()
- _msgIndexS, _msgIndexE = _nntp_free.show()
- _nntp_free.list(_msgIndexE - 20 , _msgIndexE)
# -*- coding: utf-8 -*-
#-#####################################################
#- Classe permetant de gerer les connexions au serveurs nntp #
#-
#- Ce code n'est que la partie d'un projet plus vaste dans le but est de réaliser un client usenet
#- en python ou en C++
#- Ce code doit etre amélioré notament en geran au mieu les exceptions et en ajputant d'autres fonctionnalite
#- temps passe a coder et valider = 2H
#- Coded by azalsup@free.fr
#- Code ouvert sans conditions
#-
#-#####################################################
__revision__ = 0.1
# Les includes se font par ici
import nntplib, sys
#Et si on declarait quelques variables globales
serverName = "news.free.fr"
groupName = 'proxade.free.adsl.degroupage'
groupName = 'sci.crypt'
#Les fonctions elementaires necessaires au bon fonctionnement du programme
def END() :
"""Areter le programme"""
sys.exit()
def ERROR(msg):
"""Affiche un message d'erreur"""
print '#'*len(msg)
print msg
print '#'*len(msg)
END()
def WARNING(msg):
"""Affiche un message de prevention"""
print '*'*len(msg)
print msg
print '*'*len(msg)
def INFO(msg):
"""Affiche un message d'information"""
print '@'*len(msg)
print msg
print '@'*len(msg)
class MyNNTP :
"""Cette classe permet de gerer la connexion aux serveurs nntp """
def __init__(self, server = serverName, group = groupName):
"""Constructeur par defaut de la classe NNTP"""
self.serverName = server
self.groupName = group
self.news = None
self.group = None
self.info = None
# connexion au serveur
def connect(self, server = None) :
""" Se connecter au serveur indique"""
if server != None :
self.serverName = server
try :
self.news = nntplib.NNTP(self.serverName)
except :
ERROR("connexion impossible")
INFO('connexion réussie : ' + self.news.getwelcome())
# connexion au groupe
def connect_2_group(self, group = None) :
""" Se connecter au groupe indique"""
if group != None :
self.groupName = group
INFO('%s - connexion au groupe' % self.groupName)
try :
self.group = self.news.group(self.groupName)
except :
ERROR('impossible de se connecter au groupe')
INFO('connexion au groupe réussie : ' + self.group[0])
# affichage des informations sur le groupe
def show(self):
""" affiche les informations sur le groupe"""
self.info = {}
self.info["debut"] = self.group[2]
self.info['fin'] = self.group[3]
self.info['nombre'] = self.group[1]
#Afficher les informations
_msg = "Nombre d'articles : " + self.info['nombre'] +'\n'
_msg += "Identifiant du premier article : " + self.info['debut'] +'\n'
_msg += "Identifiant du dernier article : " + self.info['fin'] +'\n'
INFO(_msg)
return int(self.info['debut']), int(self.info['fin'])
def list(self, debut, fin):
"""Affiche les messages"""
for _i in range(debut, fin):
print _i
try :
_article = self.news.article(str(_i))
_body = self.news.body(str(_i))
except :
WARNING('Article absent de ce groupe')
continue
print _body
print "="*80
print "Numéro: " + _body[1]
print "Message-ID: " + _body[2]
for _j in _article[3]:
if ("References:" in _j):
print _j
print "-"*80
for _j in _body[3]:
print "*-"*4
print _j
print "*-"*4
print "-"*80
if __name__ == '__main__' :
_nntp_free = MyNNTP(serverName, groupName)
_nntp_free.connect()
_nntp_free.connect_2_group()
_msgIndexS, _msgIndexE = _nntp_free.show()
_nntp_free.list(_msgIndexE - 20 , _msgIndexE)