You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 line
4.5 KiB

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # This program is dedicated to the public domain under the CC0 license.
  4. # Telegram - Betaseries
  5. import logging
  6. import requests
  7. import json
  8. from config import config
  9. import os
  10. from os import path
  11. from telegram_api import send_message
  12. client_id = config['client_id']
  13. login = config['login']
  14. password = config['password']
  15. def login_beta():
  16. # L'API nécéssite le client_id, le login + le mot de passe en MD5. A partir de là, nous récupérons le TOKEN Betaseries qui nous permettra de communiquer avec notre compte Betaseries
  17. global token
  18. print("Connexion a Betaseries en cours...")
  19. API_auth = 'https://api.betaseries.com/members/auth'
  20. API_auth += '?client_id=' + client_id +'&login=' + login + '&password=' + password
  21. request = requests.post(API_auth)
  22. if str(request) != '<Response [200]>' :
  23. return False
  24. data = request.json()
  25. token = str(data['token'])
  26. return token
  27. def create_api(choice, thetvdb_id):
  28. #Cette fonction permet de créer l'api Betaseries (que nous allons interroger) à partir des informations dans config.py
  29. #La séparer dans une autre fonction permet de choisir QUELLE api créer et pour quel thetvdb_id
  30. if choice == 'latest' :
  31. base_url = 'https://api.betaseries.com/episodes/latest?'
  32. API = base_url + 'token=' + token + '&client_id=' + client_id + '&thetvdb_id=' + thetvdb_id
  33. return API
  34. else :
  35. return False
  36. def check_latest(thetvdb_id):
  37. # Nous utilisons le thetvdb_id et le fournissons à create_api. à partir de là nous récupérons le dernier épisode de la série. Et nous regardons s'il est déjà enregistré [WIP]
  38. API = create_api('latest', thetvdb_id)
  39. if API == False :
  40. print("ERREUR DURANT LA CREATION DE L'API !")
  41. return
  42. request = requests.get(API)
  43. if str(request) != '<Response [200]>' :
  44. print("Mauvaise réponse de l'api ! ")
  45. return False
  46. show = request.json()
  47. episode = show['episode']
  48. title = episode['show']
  49. print("Titre de la serie : ", str(title['title']))
  50. print("Dernier episode sorti : Episode : ", episode['episode'] , " Saison :", episode['season'])
  51. if path.exists('latest') == False :
  52. print("Le dossier 'latest' n'existe pas, creez le")
  53. #On créé le dictionnaire contenant les informations de l'épisode
  54. episode_info = {
  55. "serie_title" : title['title'],
  56. "season " : episode['season'],
  57. "episode" : episode['episode']
  58. }
  59. #On choisi créé l'emplacement du fichier. On utilisera l'id thetvdb car utiliser le nom de la série risquerait des fichiers trop long
  60. file_path = ''
  61. file_path = 'latest/' + thetvdb_id + '.json'
  62. print("Path a essayer : ", file_path)
  63. # Si le fichier n'existe pas. Nous n'avons rien à comparer : Par définition nous sauvegardons les informations.
  64. if path.exists(file_path) == False :
  65. print("Fichier inexistant.. creation en cours...")
  66. with open(file_path, "w") as write_file:
  67. json.dump(episode_info, write_file)
  68. # Si le fichier existe. Nous comparons les informations reçues de l'API avec celles du fichier
  69. else :
  70. print("Fichier deja existant... On compare")
  71. with open(file_path) as json_file:
  72. data = json.load(json_file)
  73. title = episode_info['serie_title']
  74. latest_season = int(episode_info['season '])
  75. latest_episode = int(episode_info['episode'])
  76. saved_season = int(data['season '])
  77. saved_episode = int(data['episode'])
  78. print("------------- Comparaison des 2 versions -----------------")
  79. if latest_season > saved_season :
  80. print("Latest saison + recente")
  81. os.remove(file_path)
  82. message = 'Nouvel episode de ' + title + ' ! ' + 'S' + str(latest_season) + 'E' + str(latest_episode)
  83. send_message(message)
  84. #On supprime le fichier, et on le ré-écris avec les nouvelles informations.
  85. os.remove(file_path)
  86. return
  87. if latest_season == saved_season:
  88. if latest_episode > saved_episode:
  89. print("episode + recent")
  90. message = 'Nouvel episode de ' + title + ' ! ' + 'S' + str(latest_season) + 'E' + str(latest_episode)
  91. send_message(message)
  92. os.remove(file_path)
  93. return
  94. print("Aucun changement")