Showing with 36 additions and 4 deletions.
  1. +1 −0 ToDo
  2. +1 −0 db/Italia.txt
  3. +34 −4 script/spazzino.py
1 change: 1 addition & 0 deletions ToDo
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

26 Giugno http://www.lifos.org/
29 Giugno http://www.pluto.it/
3 Luglio http://www.ivlug.it/

== Tolti dal DB in attesa di conferma:
1 change: 1 addition & 0 deletions db/Italia.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Italia|FSUG Italia|Italia|http://www.fsugitalia.org/|postmaster@fusgitalia.org
Italia|ILS: Italian Linux Society|Italia|http://www.ils.it/|md@linux.it
Italia|LibrePlanet Italia|Italia|http://libreplanet.org/wiki/Group:LibrePlanet_Italia|graziano@inventati.org
Italia|P.l.u.t.o.|Italia|http://www.pluto.it/|nick@linux.it
38 changes: 34 additions & 4 deletions script/spazzino.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,17 @@
import sys
print "Non sono disponibili tutti i moduli standard necessari."
sys.exit(-1)

try:
import ZODB, persistent, transaction
except:
print "Non sono disponibili uno o più di questi moduli: ZODB, persistent, transaction"
print "Installa ZODB3: 'easy_install zodb3' oppyre 'apt-get install python-zodb'"
sys.exit(-1)
try:
import BeautifulSoup
except:
print "Installa BeautifulSoup: 'easy_install beautifulsoup' oppure 'apt-get install python-beautifulsoup'"
sys.exit(-1)

if True: # attiva DB
from ZODB.FileStorage import FileStorage
Expand Down Expand Up @@ -72,15 +79,16 @@ def controllo_dns(self):
def controllo_contenuto(self):
"""Leggo lo URL e faccio una valutazione numerica. True/False di ritorno."""

print "Controllo contenuto",self.dominio
try: # pesco la pagina
richiesta = urllib2.Request(self.url,None, {"User-Agent":"LugMap.it checker - lugmap@linux.it"})
pagina_html = urllib2.urlopen(richiesta).read()
self.pagina_html = urllib2.urlopen(richiesta).read()
except:
self.email_errori.aggiungi(' Errore: impossibile leggere la pagina html.')
self.numero_errori += 1
return False

self.Termini_Attuali = set(pagina_html.split()) # Estrapolo le parole della pagina HTML
self.Termini_Attuali = set(self.pagina_html.split()) # Estrapolo le parole della pagina HTML
valore_magico = \
float(len(self.Termini_Precedenti.intersection(self.Termini_Attuali))*1.0/len(self.Termini_Precedenti.union(self.Termini_Attuali)))
self.Termini_Precedenti = self.Termini_Attuali
Expand All @@ -90,6 +98,27 @@ def controllo_contenuto(self):
self.email_errori.aggiungi(' Errore: troppa differenza di contenuto:' +str(valore_magico))
self.numero_errori += 1
return False
else:
return True

def controllo_title_della_pagina(self):
"""Leggo il title della pagina e controllo che non sia cambiato. True/False di ritorno"""

print "Controllo title",self.dominio
self.soup = BeautifulSoup.BeautifulSoup(self.pagina_html)
titolo_attuale = self.soup.html.head.title.string.strip()

try:
if self.titolo != titolo_attuale:
print "Divergenza", self.titolo, titolo_attuale
self.email-errori.aggiunti(' Errore: title della home cambiato da ' +self.titolo+' a '+titolo_attuale)
self.numero_errori += 1
self.titolo = titolo_attuale
return False
else:
return True
except AttributeError: # Se il DB è stato precedentemente creato non ho l'attributo di confronto
self.titolo = titolo_attuale

def invia_report(self):
self.email_errori.subject = 'LugMap: '+self.url
Expand Down Expand Up @@ -151,7 +180,8 @@ def invia(self):
lug = Lug(url) # diversamente creo la classe
pdb[url] = lug # e la lego al DB
if lug.controllo_dns():
lug.controllo_contenuto()
if lug.controllo_contenuto():
lug.controllo_title_della_pagina()
lug.invia_report()
transaction.commit()
db.pack()
Expand Down