begin process at 2010 02 09 17:45:39
  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 759 / 26

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 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
Source avec Zip Source avec une capture BLOQUEUR INTERNET par amaury74

 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...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,764 sec (4)

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