begin process at 2010 07 29 16:01:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & internet

 > CLASSE NTTP

CLASSE NTTP


 Information sur la source

Note :
Aucune note
Catégorie :Réseau & internet Classé sous :usent, news, nntp, Nzb, newsbin Niveau :Débutant Date de création :23/10/2007 Vu / téléchargé :1 990 / 30

Auteur : azalsup

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Classe gérant la récupération de messages sur les newsgroup
Cette classe servira dans un projet plus important de client NNTP ou un grabeur de news binaire en Python

Source

  • # -*- 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)


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip LIRE ET PARSER UN FICHIER NZB ( XML AVEC SAX)

 Sources de la même categorie

Source avec une capture HTTP FORWARDER par matad0r
Source avec Zip GÉNÉRATEUR HTML POUR L'UTILISATION DE PYTHON EN CGI par Just_1
SIMPLE COMPARATEUR IPV4 EN PYTHON par erebos
TÉLCHARGEUR YOUTUBE par rezuz
Source avec Zip LIRE DES FICHIERS PCAP par KimbleMandel

 Sources en rapport avec celle ci

Source avec Zip LIRE ET PARSER UN FICHIER NZB ( XML AVEC SAX) par azalsup

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales