|
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # This program is dedicated to the public domain under the CC0 license.
- # Telegram - Betaseries
-
- import logging
- import requests
- import json
- from config import config
- import os
- # import time
- from os import path
- from telegram_api import send_message
-
-
-
- client_id = config['client_id']
- login = config['login']
- password = config['password']
-
-
- def login_beta():
- # 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
- global token
- API_auth = 'https://api.betaseries.com/members/auth'
- API_auth += '?client_id=' + client_id +'&login=' + login + '&password=' + password
- request = requests.post(API_auth)
- if str(request) != '<Response [200]>' :
- return False
- data = request.json()
- token = str(data['token'])
- return token
-
-
- def create_api(choice, thetvdb_id):
- #Cette fonction permet de créer l'api Betaseries (que nous allons interroger) à partir des informations dans config.py
- #La séparer dans une autre fonction permet de choisir QUELLE api créer et pour quel thetvdb_id
-
- token = login_beta() #Si jamais create_api est appelée d'un autre fichier, login_beta() n'a pas pu mettre la variable "token" en Global. Donc on la récupère
-
- if choice == 'latest' :
- base_url = 'https://api.betaseries.com/episodes/latest?'
- API = base_url + 'token=' + token + '&client_id=' + client_id + '&thetvdb_id=' + thetvdb_id
- return API
- if choice == 'info' :
- base_url = 'https://api.betaseries.com/shows/display?'
- API = base_url + 'token=' + token + '&client_id=' + client_id + '&thetvdb_id=' + thetvdb_id
- return API
- if choice == 'seen':
- base_url = 'https://api.betaseries.com/shows/display?'
-
- return False
-
- def check_latest(thetvdb_id):
- # 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]
- API = create_api('latest', thetvdb_id)
- if API == False :
- print("ERREUR DURANT LA CREATION DE L'API !")
- return
-
- request = requests.get(API)
- if str(request) != '<Response [200]>' :
- print("Mauvaise réponse de l'api ! ")
- return False
- show = request.json()
- episode = show['episode']
-
- title = episode['show']
- id = episode['id']
- user = episode['user']
-
- if path.exists('latest') == False :
- print("Le dossier 'latest' n'existe pas, creez le")
-
- #On créé le dictionnaire contenant les informations de l'épisode
- episode_info = {
- "serie_title" : title['title'],
- "season " : episode['season'],
- "episode" : episode['episode'],
- "id" : title['id'],
- "seen" : user['seen']
- }
-
- #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
- file_path = ''
- file_path = 'latest/' + thetvdb_id + '.json'
-
-
- # Si le fichier n'existe pas. Nous n'avons rien à comparer : Par définition nous sauvegardons les informations.
-
- if path.exists(file_path) == False :
- create_file(file_path, episode_info)
-
- # Si le fichier existe. Nous comparons les informations reçues de l'API avec celles du fichier
- else :
- with open(file_path) as json_file:
- data = json.load(json_file)
-
- title = episode_info['serie_title']
- latest_season = int(episode_info['season '])
- latest_episode = int(episode_info['episode'])
-
- saved_season = int(data['season '])
- saved_episode = int(data['episode'])
-
-
- if latest_season > saved_season :
- message = 'Nouvel episode de ' + title + ' ! ' + 'S' + str(latest_season) + 'E' + str(latest_episode)
- send_message(message)
- #On supprime le fichier, et on le ré-écris avec les nouvelles informations.
- os.remove(file_path)
- create_file(file_path, episode_info)
- return
-
- if latest_season == saved_season:
- if latest_episode > saved_episode:
- message = 'Nouvel episode de ' + title + ' ! ' + 'S' + str(latest_season) + 'E' + str(latest_episode)
- send_message(message)
- os.remove(file_path)
- create_file(file_path, episode_info)
- return
- print("Aucun changement")
-
- return
-
- def create_file(file_path, episode_info):
- #Creation du fichier à partir des informations récupérées dans check_latest()
- with open(file_path, "w") as write_file:
- json.dump(episode_info, write_file)
-
-
- def get_title_only(thetvdb_id):
- API = create_api('info', thetvdb_id)
- if API == False :
- print("ERREUR DURANT LA CREATION DE L'API !")
- return
- request = requests.get(API)
- if str(request) != '<Response [200]>' :
- print("Mauvaise réponse de l'api ! ")
- return False
-
- info = request.json()
- data = info['show']
- title = data['title']
- return title
-
-
- def to_see(thetvdb_id):
- # Permet de dire qu'un episode est deja vu
- file_path = 'latest/' + thetvdb_id + '.json'
- with open(file_path) as json_file:
- data = json.load(json_file)
- print(data)
- if data[u'seen'] == False :
- message = data['serie_title'] + ' ! ' + '\n' + 'Episode: ' + str(data['episode']) + ' Saison:' + str(data['season ']) + '\n' + '\n'
- return message
- else :
- print(u"Vous etes à jour")
-
- return
-
- def main():
- #Only here for debug
- login_beta()
- print(get_title_only('354198'))
-
-
- if __name__ == '__main__':
- main()
-
-
-
-
|