Advertisement
itsasontsi

Blogger Updates to Telegram (Spanish)

Apr 26th, 2015
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.15 KB | None | 0 0
  1. #¡¡IMPORTANTE!! SE REQUIEREN MODIFICACIONES EN LAS LÍNEAS 8/9/10.
  2. #!/usr/bin/env python
  3. # -*- coding: utf-8 -*-
  4.  
  5. import feedparser, subprocess, time, pexpect
  6.  
  7. #variables de configuración del script
  8. blogLink = "" #URL al feed RSS del blog a parsear (Suscribirse a entradas: Atom)
  9. fileName = "" #Nombre del archivo donde registraremos el log (debe estar dentro de la carpeta /tg)
  10. tgUser = "" #Número de user de Telegram (user_info en Telegram-Cli)
  11.  
  12. d = feedparser.parse(blogLink) #Parseamos el RSS del blog
  13.  
  14. blogtitle = d['feed']['title'] #Obtenemos título del feed
  15. lastGlobalUpdate = d['feed']['updated'] #Obtenemos última actualización del feed
  16.  
  17. filedata = open("/home/pi/tg/"+fileName+".txt", "r") #Procedemos a la lectura del archivo de registros
  18. lineList = filedata.readlines() #Obtenemos la lista de líneas de filedata
  19. filedata.close() #Y eso, ahora que tenemos lo que hace falta, pues cerramos el archivo
  20.  
  21. filedataLast = lineList[len(lineList)-1].strip("\n") #Importamos la última línea escrita en el fichero (lastGlobalUpdate_old)
  22. filedataPrevLast = lineList[len(lineList)-2].strip("\n") #Importamos la línea anterior a filedataLast (lastPublished_old)
  23.  
  24. if (lastGlobalUpdate != filedataLast): #Comprobamos si hay diferencias entre la última fecha archivada y la obtenida
  25. #Si no hay diferencias, la ejecución del código se detiene aquí
  26.     lastGlobalCheck = True #Debugging purpose
  27.     lastPublished = d.entries[0].published #Obtenemos la fecha de la última publicación
  28.     lastTitle = d.entries[0].title #Títutlo
  29.     lastLink = d.entries[0].link #Enlace/URL
  30.     if len(lastTitle) == 0: #Si la longitud del título es 0, asignamos mensaje de error a la variable lastTitle
  31.         lastTitle = "Err: *lastTitle* Empty/Unset"
  32.     lastUpdate = d.entries[0].updated #Fecha de última actualización de la última entrada
  33.     saveData = "lastPublished: "+lastPublished+", lastTitle: "+lastTitle+", lastLink: "+lastLink+", lastUpdate: "+lastUpdate
  34.  
  35.     fo = open("/home/pi/tg/"+fileName+".txt", "a") #Abrimos el archivo de registro con atributo append (incluir)
  36.     #Añadimos al log las siguientes líneas (\n) (saveData, lastPublished y lastGlobalUpdate)
  37.     fo.write(saveData + "\n")
  38.     fo.write(lastPublished + "\n")
  39.     fo.write(lastGlobalUpdate + "\n")
  40.     fo.close()
  41.    
  42.     if (lastPublished != filedataPrevLast): #Cotejamos fechas de publicación de entradas
  43.         #Si hay una nueva entrada, enviamos notificación a Telegram
  44.         tgCheck = True #Debugging purpose
  45.         sendData = "Nueva entrada en "+blogtitle+". ("+lastTitle+") - "+lastLink
  46.         sendCommand = "/home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -W -e 'msg user#"+tgUser+" "+ sendData +"'"
  47.  
  48.         telegram = pexpect.spawn(sendCommand)
  49.         telegram.expect('halt')
  50.         time.sleep(1)
  51.        
  52.     else:
  53.         tgCheck = False #Debugging purpose
  54. else:
  55.     lastGlobalCheck = False #Debugging purpose
  56.  
  57.  
  58. #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.
  59. if lastGlobalCheck:
  60.     print "Global data append executed."
  61.     if tgCheck:
  62.         print "Telegram notification send"
  63.     else:
  64.         print "No Telegram notification send"
  65. else:
  66.     print "Global data append NOT executed."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement