Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #¡¡IMPORTANTE!! SE REQUIEREN MODIFICACIONES EN LAS LÍNEAS 8/9/10.
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import feedparser, subprocess, time, pexpect
- #variables de configuración del script
- blogLink = "" #URL al feed RSS del blog a parsear (Suscribirse a entradas: Atom)
- fileName = "" #Nombre del archivo donde registraremos el log (debe estar dentro de la carpeta /tg)
- tgUser = "" #Número de user de Telegram (user_info en Telegram-Cli)
- d = feedparser.parse(blogLink) #Parseamos el RSS del blog
- blogtitle = d['feed']['title'] #Obtenemos título del feed
- lastGlobalUpdate = d['feed']['updated'] #Obtenemos última actualización del feed
- filedata = open("/home/pi/tg/"+fileName+".txt", "r") #Procedemos a la lectura del archivo de registros
- lineList = filedata.readlines() #Obtenemos la lista de líneas de filedata
- filedata.close() #Y eso, ahora que tenemos lo que hace falta, pues cerramos el archivo
- filedataLast = lineList[len(lineList)-1].strip("\n") #Importamos la última línea escrita en el fichero (lastGlobalUpdate_old)
- filedataPrevLast = lineList[len(lineList)-2].strip("\n") #Importamos la línea anterior a filedataLast (lastPublished_old)
- if (lastGlobalUpdate != filedataLast): #Comprobamos si hay diferencias entre la última fecha archivada y la obtenida
- #Si no hay diferencias, la ejecución del código se detiene aquí
- lastGlobalCheck = True #Debugging purpose
- lastPublished = d.entries[0].published #Obtenemos la fecha de la última publicación
- lastTitle = d.entries[0].title #Títutlo
- lastLink = d.entries[0].link #Enlace/URL
- if len(lastTitle) == 0: #Si la longitud del título es 0, asignamos mensaje de error a la variable lastTitle
- lastTitle = "Err: *lastTitle* Empty/Unset"
- lastUpdate = d.entries[0].updated #Fecha de última actualización de la última entrada
- saveData = "lastPublished: "+lastPublished+", lastTitle: "+lastTitle+", lastLink: "+lastLink+", lastUpdate: "+lastUpdate
- fo = open("/home/pi/tg/"+fileName+".txt", "a") #Abrimos el archivo de registro con atributo append (incluir)
- #Añadimos al log las siguientes líneas (\n) (saveData, lastPublished y lastGlobalUpdate)
- fo.write(saveData + "\n")
- fo.write(lastPublished + "\n")
- fo.write(lastGlobalUpdate + "\n")
- fo.close()
- if (lastPublished != filedataPrevLast): #Cotejamos fechas de publicación de entradas
- #Si hay una nueva entrada, enviamos notificación a Telegram
- tgCheck = True #Debugging purpose
- sendData = "Nueva entrada en "+blogtitle+". ("+lastTitle+") - "+lastLink
- sendCommand = "/home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e 'msg user#"+tgUser+" "+ sendData +"'"
- telegram = pexpect.spawn(sendCommand)
- telegram.expect('halt')
- time.sleep(1)
- else:
- tgCheck = False #Debugging purpose
- else:
- lastGlobalCheck = False #Debugging purpose
- #Debug & log - A fin de registrar un log de lo ocurrido durante la ejecución si se hace a través de crontab, es útil mantener las últimas líneas.
- if lastGlobalCheck:
- print "Global data append executed."
- if tgCheck:
- print "Telegram notification send"
- else:
- print "No Telegram notification send"
- else:
- print "Global data append NOT executed."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement