From 27d9338813daf25784e93013e37c58b38c292919 Mon Sep 17 00:00:00 2001 From: administrator Date: Sun, 3 May 2020 02:10:33 +0200 Subject: [PATCH] =?UTF-8?q?=09modified:=20=20=20betaseries.py=20-=20Ajout?= =?UTF-8?q?=20d'une=20fonction=20pour=20recuperer=20les=20codes=20des=20ep?= =?UTF-8?q?=20=C3=A0=20partir=20d'une=20API=20+=20ajout=20des=20episodes?= =?UTF-8?q?=20=C3=A0=20voir=20=09modified:=20=20=20bot.py=20-=20ajout=20de?= =?UTF-8?q?=20commandes=20pour=20donner=20les=20episodes=20=C3=A0=20voir?= =?UTF-8?q?=20+=20keyboard=20multiple=20=09modified:=20=20=20notification.?= =?UTF-8?q?py=20-=20Recupere=20chaque=20X=20temps=20les=20episodes=20?= =?UTF-8?q?=C3=A0=20voir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- betaseries.py | 63 ++++++++++++++++++++-- bot.py | 137 ++++++++++++++++++++++++++++++++++++++++-------- notification.py | 5 +- 3 files changed, 176 insertions(+), 29 deletions(-) diff --git a/betaseries.py b/betaseries.py index a4efe4a..3c2861e 100644 --- a/betaseries.py +++ b/betaseries.py @@ -50,6 +50,11 @@ def create_api(choice, thetvdb_id): base_url = 'https://api.betaseries.com/episodes/watched?' API_seen = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&id=' return API_seen + if choice == '2see' : + base_url = 'https://api.betaseries.com/episodes/list?' + API_2see = base_url + 'token=' + str(token) + '&client_id=' + str(client_id) + '&showsLimit=10&limit=1' + #API_2see = base_url + 'token=' + str(token) + '&client_id=' + str(client_id) + '&limit=1' + return API_2see return False @@ -84,7 +89,6 @@ def check_latest(thetvdb_id): } #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' @@ -190,12 +194,61 @@ def get_episode_code(thetvdb_id): code = 'S' + str(data['season ']) + 'E' + str(data['episode']) return code + + +def get_ep_code_series(fichier): + with open(fichier) as json_file: + data = json.load(json_file) + name = data['title'] + ' | ' + 'S' + str(data['season']) + 'E' + str(data['episode']) + + return name + +def what_2see(): + API = create_api("2see", None) + request = requests.get(API) + request = request.json() + request = request['shows'] + + + json = request[0] + message = '' + liste = [] + for i in range(len(request)): + json = request[i] + unseen = json['unseen'] + unseen = unseen[0] + + message += json['title'] + "\n Code : " + unseen['code'] + '\n \n' + + file_path = 'series/' + str(json['thetvdb_id']) + '.json' + serie_info = { + 'title' : json['title'], + 'thetvdb' : str(json['thetvdb_id']), + 'season' : unseen['season'], + 'episode' : unseen['episode'], + 'id' : unseen['id']} + + + liste.append(str(json['thetvdb_id'])) + + if path.exists(file_path) == False : + create_file(file_path, serie_info) + else : + os.remove(file_path) + create_file(file_path, serie_info) + + if path.exists('cache_to_see.json') == False : + create_file('cache_to_see.json', liste) + else : + os.remove('cache_to_see.json') + create_file('cache_to_see.json', liste) + return message + + def main(): -#Only here for debug git - for i in range(len(series)): - id = series[i] - print(get_episode_code(id)) + path = "series/102261.json" + print(get_ep_code_series(path)) if __name__ == '__main__': diff --git a/bot.py b/bot.py index b5378bd..c8cbd86 100644 --- a/bot.py +++ b/bot.py @@ -8,7 +8,7 @@ import json from telegram import InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import Updater, CommandHandler, CallbackQueryHandler from config import config, series -from betaseries import login_beta, get_title_only, to_see, seen, get_episode_code +from betaseries import login_beta, get_title_only, to_see, seen, get_episode_code, what_2see, get_ep_code_series from telegram_api import send_message # Activer / Désactiver le debuggage {Projet : pas encore utilisé} @@ -114,7 +114,11 @@ def liste(update, context): -def ive_seen(update, context): +def ive_all_seen(update, context): + global callback + callback = 1 + send_message(u'Selectionnez la serie dont vous avez vu le dernier episode !') + if type(series) == str : file_path = 'latest/' + series + '.json' print(file_path) @@ -146,8 +150,46 @@ def ive_seen(update, context): [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5')] ] - - + + + if len(series) == 6 : + keyboard = [ + [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')], + [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], + [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5'), InlineKeyboardButton(get_title_only(series[5]), callback_data='6')] + ] + + if len(series) == 7 : + keyboard = [ + [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')], + [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], + [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5'), InlineKeyboardButton(get_title_only(series[5]), callback_data='6')], + [ InlineKeyboardButton(get_title_only(series[6]), callback_data='7')] + ] + if len(series) == 8 : + keyboard = [ + [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')], + [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], + [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5'), InlineKeyboardButton(get_title_only(series[5]), callback_data='6')], + [ InlineKeyboardButton(get_title_only(series[6]), callback_data='7'), InlineKeyboardButton(get_title_only(series[7]), callback_data='8')] + ] + if len(series) == 9 : + keyboard = [ + [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')], + [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], + [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5'), InlineKeyboardButton(get_title_only(series[5]), callback_data='6')], + [ InlineKeyboardButton(get_title_only(series[6]), callback_data='7'), InlineKeyboardButton(get_title_only(series[7]), callback_data='8')], + [ InlineKeyboardButton(get_title_only(series[8]), callback_data='9')] + ] + if len(series) == 10 : + keyboard = [ + [ InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), InlineKeyboardButton(get_title_only(series[1]), callback_data='2')], + [ InlineKeyboardButton(get_title_only(series[2]), callback_data='3'), InlineKeyboardButton(get_title_only(series[3]), callback_data='4')], + [ InlineKeyboardButton(get_title_only(series[4]), callback_data='5'), InlineKeyboardButton(get_title_only(series[5]), callback_data='6')], + [ InlineKeyboardButton(get_title_only(series[6]), callback_data='7'), InlineKeyboardButton(get_title_only(series[7]), callback_data='8')], + [ InlineKeyboardButton(get_title_only(series[8]), callback_data='9'), InlineKeyboardButton(get_title_only(series[9]), callback_data='10') ] + ] + reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup) @@ -159,36 +201,78 @@ def ive_seen(update, context): def button(update, context): query = update.callback_query query.answer() - print(type(query['data'])) # Si jamais l'utilisateur fait le 1er choix, on vérifie si jamais 'series' n'est pas un str (qui serait donc le cas ou l'utilisateur n'a qu'une serie - if query['data'] == u'1' : - if type(series) == str : - seen(series) - episode = get_title_only(series) + ' | ' + get_episode_code(series) - query.edit_message_text(text="Choix de la series : {}".format(episode)) - return - else : - seen(series[0]) - episode = get_title_only(series[0]) + ' | ' + get_episode_code(series[0]) - query.edit_message_text(text="Choix de la series : {}".format(episode)) - return + if callback == 1: + if query['data'] == u'1' : + if type(series) == str : + seen(series) + episode = get_title_only(series) + ' | ' + get_episode_code(series) + query.edit_message_text(text="Choix de la series : {}".format(episode)) + return + else : + seen(series[0]) + episode = get_title_only(series[0]) + ' | ' + get_episode_code(series[0]) + query.edit_message_text(text="Choix de la series : {}".format(episode)) + return + + number = int(query['data']) - 1 + seen(series[number]) + episode = get_title_only(series[number]) + ' | ' + get_episode_code(series[number]) + query.edit_message_text(text="Choix de la series : {}".format(episode)) + return + if callback == 2 : + + with open(query['data']) as json_file: + data = json.load(json_file) + message = data["title"] + " - S" + str(data['season']) + "E" + str(data['episode']) + " ID: " + str(data['id']) + send_message(message) + query.edit_message_text(text=query['data']) + - number = int(query['data']) - 1 - query.edit_message_text(text="Choix de la series : ".format(get_title_only(number) )) +def what2see(update, context): + send_message("Voici la liste des épisodes que vous devez voir :") + message = what_2see() + send_message(message) + return + +def watched(update, context): + global callback + callback = 2 - # query.edit_message_text(data['serie_title'] + '|' + 'S' + str(data['season ']) + 'E' + str(data['episode'] )) - #query.edit_message_text(text="Selected option: {}".format(query.data)) + list=[] + file=[] + with open('cache_to_see.json', 'r') as list_file: + list = json.load(list_file) + + for i in range(len(list)) : + file_path = 'series/' + list[i] + '.json' + file.append(file_path) + + if len(list) == 10 : + choix = [ + [ InlineKeyboardButton(get_ep_code_series(file[0]), callback_data=file[0]), InlineKeyboardButton(get_ep_code_series(file[1]), callback_data=file[1])], + [ InlineKeyboardButton(get_ep_code_series(file[2]), callback_data=file[2]), InlineKeyboardButton(get_ep_code_series(file[3]), callback_data=file[3])], + [ InlineKeyboardButton(get_ep_code_series(file[4]), callback_data=file[4]), InlineKeyboardButton(get_ep_code_series(file[5]), callback_data=file[5])], + [ InlineKeyboardButton(get_ep_code_series(file[6]), callback_data=file[6]), InlineKeyboardButton(get_ep_code_series(file[7]), callback_data=file[7])], + [ InlineKeyboardButton(get_ep_code_series(file[8]), callback_data=file[8]), InlineKeyboardButton(get_ep_code_series(file[9]), callback_data=file[9]) ] + ] + + reply_markup = InlineKeyboardMarkup(choix) + update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup) + + def main(): updater = Updater(token_bot, use_context=True) print("Bot connecté") dp = updater.dispatcher - + + dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("help", start)) @@ -209,9 +293,18 @@ def main(): dp.add_handler(CommandHandler("latest", latest)) - dp.add_handler(CommandHandler("seen", ive_seen)) + dp.add_handler(CommandHandler("all_seen", ive_all_seen)) updater.dispatcher.add_handler(CallbackQueryHandler(button)) + dp.add_handler(CommandHandler("2see", what2see)) + + + dp.add_handler(CommandHandler("watched", watched)) + + + + + updater.start_polling() updater.idle() diff --git a/notification.py b/notification.py index f18c0b5..cbd23b8 100644 --- a/notification.py +++ b/notification.py @@ -7,7 +7,7 @@ import logging import requests import json from bot import user_id, token_bot, client_id -from betaseries import login_beta, create_api, check_latest +from betaseries import login_beta, create_api, check_latest, what_2see from telegram.ext import Updater, CommandHandler from config import series import os.path @@ -30,6 +30,7 @@ def main(): while 1 : + what_2see() now = datetime.datetime.now() print (now.strftime("%Y-%m-%d %H:%M:%S")) @@ -46,7 +47,7 @@ def main(): - #print("Erreur ! Fin de la boucle") + print("Erreur ! Fin de la boucle") if __name__ == '__main__':