Showing with 36 additions and 41 deletions.
  1. +0 −4 ToDo
  2. +36 −37 script/WiMegera/WiMegera.py
4 changes: 0 additions & 4 deletions ToDo
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@
http://www.linuxlinks.it/LUG.html

== Varie
* Riscrivere WiMegera per poter aggiungere piu' url, come
http://it.wikipedia.org/wiki/Hacklab
* WiMegera: ritestare come all'inizio eventuale eliminazione di file
dalle directory i18n e pywikibot
* Per sito lugmap.linux.it:
* non risulta integrato nell'estetica di ILS
* abbandonare la malefica gif
Expand Down
73 changes: 36 additions & 37 deletions script/WiMegera/WiMegera.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,51 +19,50 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>."""

import editarticle, notifiche, os, pickle, smtplib
try:
import editarticle, notifiche, os, pickle, shelve
except:
import sys
sys.exit('Errore: non sono disponibili tutti i moduli necessari')

class AccessoCronologia(editarticle.ArticleEditor):
def run(self):
return self.page.getVersionHistory(self)

def leggo_ultimo_id_inviato():

try:
return pickle.load(open(file_con_ultima_modifica, 'r'))
except:
return 0

def salva_ultimo_id_inviato(id):
pickle.dump(id, open(file_con_ultima_modifica, 'w'))

if __name__ == "__main__":
db = shelve.open(os.path.join(os.environ["HOME"], '.wimegera.db'), writeback=True) # Apro DB

# Variabili globali
file_con_ultima_modifica = os.path.join(os.environ["HOME"], '.wimegera_ultimoid')
righe_della_mail = []

ultimo_id_inviato = leggo_ultimo_id_inviato()

oggetto_modifiche = AccessoCronologia('-p','Lista_dei_LUG_italiani')
elenco_modifiche = [x for x in oggetto_modifiche.run()]
elenco_modifiche.reverse()

for modifica in elenco_modifiche:
id, data, autore, nota = [modifica[x] for x in range(4)]
if int(id) > ultimo_id_inviato:
righe_della_mail.append('Nota: ' +nota)
righe_della_mail.append('Data: ' +data+' Autore: '+autore+' ID: '+str(id))
righe_della_mail.append('\n'+15*'-_'+'\n')

try:
mail = notifiche.email(mittente = 'WiMegera <wimegera@gelma.net>',
destinatario = ['LugMap <lugmap@lists.linux.it>'],
oggetto = 'WiMegera: aggiornamenti Lug su Wikipedia',
testo = righe_della_mail,
invia_subito = True) # Se da Aggiornare, vedi Guida Intergalattica alla LugMap §4.1
except: # se fallisce l'invio stampo la mail, contando sul delivery di cron
print mail

salva_ultimo_id_inviato(id)

pagine_wikipedia_da_controllare = ('Lista_dei_LUG_italiani', 'Hacklab') # eventuali altre pagine da monitorare vanno aggiunte qui

for pagina_wiki in pagine_wikipedia_da_controllare: # prelevo la lista di modifiche
cronologia = AccessoCronologia('-p', pagina_wiki)
elenco_modifiche = [x for x in cronologia.run()]
elenco_modifiche.reverse()

for modifica in elenco_modifiche: # controllo ogni modifica
id, data, autore, nota = [modifica[x] for x in range(4)]
try: # provo il confronto
if int(id) > db[pagina_wiki]:
db[pagina_wiki] = int(id)
righe_della_mail.append('Nota: ' +nota)
righe_della_mail.append('Data: ' +data+' Autore: '+autore+' ID: '+str(id))
righe_della_mail.append('\n'+15*'-_'+'\n')
except KeyError: # se non trovo la pagina nel db, significa che è nuova
db[pagina_wiki] = 0
righe_della_mail.append('Nota: pagina nuova')

if righe_della_mail:
try:
mail = notifiche.email(mittente = 'WiMegera <wimegera@gelma.net>',
destinatario = ['WiMegera <wimegera@gelma.net>'],
oggetto = 'WiMegera: aggiornamento su '+pagina_wiki,
testo = righe_della_mail,
invia_subito = True) # Se da Aggiornare, vedi Guida Intergalattica alla LugMap §4.1
except: # se fallisce l'invio stampo la mail, contando sul delivery di cron
print '\n'.join(righe_della_mail)

db.close()
#¹ il metodo run() mi restituisce un elenco di tuple, con i dettagli delle modifiche, come questa:
## (39770501, u'2011-04-08T09:15:08Z', u'Gelma', u'/* Collegamenti esterni */ Aggiunto dominio dedicato', 13101, [])