From 2ac18ff69f392788f52b598152e67ea0925efa62 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 1 May 2020 11:49:13 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d4f502..3106396 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ Mélange de Telegram et Betaseries ! Ce bot est avant-tout un entrainement et non un projet sérieux. Le bot est séparé entre 2 programmes différents : -1. Le bot Telegram, il utilise des commandes et peut vous faire voir ce que Betasérie permet. Vous pourrez aussi voir vos statistiques. Bien que son utilisateur est **optionnelle**. Vous besoin de mettre les deux fichiers dans le même dossier ! Ils communiquent entre eux. +1. Le bot Telegram, il utilise des commandes et peut vous faire voir ce que Betasérie permet. Vous pourrez aussi voir vos statistiques. + Il permet que vous puissez envoyer des commandes à Betaseries (comme par exemple qu'un episode soit vu) + 2. Le script permettant de récupérer la liste des séries en cours et de vous notifier si jamais elle s'actualise. Le developpement n'a pas encore commandé @@ -11,6 +13,8 @@ Le bot est séparé entre 2 programmes différents : 3. Permettre 2 modes de communication : 3.1. En utilisant le module Python de Telegram. 3.2. En utilisant l'API web de Telegram +4. Permet de voir si un programme est vu +5. Permet de marquer un programme comme 'vu' ## Lancer le projet : Compatible Linux et Windows, vous aurez besoin de Python3 et de Pip (qui permettra d'installer les modules nécéssaires). From 7f27f410f2a2097c400a2069e6b050e07c6429cf Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 2 May 2020 13:28:40 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'betaseries.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- betaseries.py | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/betaseries.py b/betaseries.py index bf991db..f2de70f 100644 --- a/betaseries.py +++ b/betaseries.py @@ -6,7 +6,7 @@ import logging import requests import json -from config import config +from config import config, series import os # import time from os import path @@ -40,16 +40,16 @@ def create_api(choice, thetvdb_id): 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 + API_latest = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&thetvdb_id=' + thetvdb_id + return API_latest 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 + API_info = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&thetvdb_id=' + str(thetvdb_id) + return API_info if choice == 'seen': base_url = 'https://api.betaseries.com/episodes/watched?' - API = base_url + 'token=' + token + '&client_id=' + client_id + '&id=' - return API + API_seen = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&id=' + return API_seen return False @@ -61,7 +61,6 @@ def check_latest(thetvdb_id): return request = requests.get(API) - if str(request) != '' : print("Mauvaise réponse de l'api !(Check_Latest) ") return False @@ -124,6 +123,7 @@ def check_latest(thetvdb_id): return if data['seen'] == False : + print("Vous n'avez pas vu le dernier episode de cette series : ", get_title_only(thetvdb_id)) os.remove(file_path) create_file(file_path, episode_info) return @@ -155,14 +155,12 @@ def to_see(thetvdb_id): 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 + print(u"Vous etes à jour") + return False def seen(thetvdb_id): # Permet de mettre un episode en 'vu' sur betaseries @@ -178,13 +176,27 @@ def seen(thetvdb_id): API = create_api('seen', None) API += str(data['id']) print(API) - + # request = requests.post(API) + # if str(request) == '' : + # send_message(u"Impossible de marquer l'episode comme vu(déjà vu?)") + # print(request) + # return + send_message('Done !') + return + +def get_episode_code(thetvdb_id): + file_path = 'latest/' + thetvdb_id + '.json' + with open(file_path) as json_file: + data = json.load(json_file) + code = 'S' + str(data['season ']) + 'E' + str(data['episode']) + return code def main(): #Only here for debug git - login_beta() - print(get_title_only('354198')) + for i in range(len(series)): + id = series[i] + print(get_episode_code(id)) if __name__ == '__main__': From b75a261fdbd75e29275597c4183aff5a829b3f98 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 2 May 2020 13:28:57 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bot.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 67 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/bot.py b/bot.py index 2ae39e4..b5378bd 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 +from betaseries import login_beta, get_title_only, to_see, seen, get_episode_code from telegram_api import send_message # Activer / Désactiver le debuggage {Projet : pas encore utilisé} @@ -92,11 +92,14 @@ def repeat(update, context): return -def check_seen(update, context): - message = 'à voir \n' +def latest(update, context): + message = 'à voir : \n' for i in range(len(series)): thetvdb_id = series[i] - message += '- ' + str(to_see(thetvdb_id)) + episode = to_see(thetvdb_id) + + if episode != False: + message += '- ' + str(episode) send_message(message) @@ -111,43 +114,73 @@ def liste(update, context): -def coding(update, context): +def ive_seen(update, context): if type(series) == str : file_path = 'latest/' + series + '.json' print(file_path) with open(file_path) as json_file: data = json.load(json_file) - # message = u'Episode que vous allez marquer comme vu : ' + data['serie_title'] + ' - S' + str(data['season ']) + 'E' + str(data['episode']) - # send_message(message) - keyboard = [[InlineKeyboardButton(data['serie_title'] + '|' + 'S' + str(data['season ']) + 'E' + str(data['episode']), callback_data='1')]] reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Vous avez vu :', reply_markup=reply_markup) return + else : - keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'), - InlineKeyboardButton("Option 2", callback_data='2'), - InlineKeyboardButton("Option 3", callback_data='3')], - [InlineKeyboardButton("Option 4", callback_data='4')] ] + if len(series) == 2 : + keyboard = [[InlineKeyboardButton(get_title_only(series[0]), callback_data='1'), + InlineKeyboardButton(get_title_only(series[1]), callback_data='2')]] + + if len(series) == 3 : + 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')] + ] + if len(series) == 4 : + 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') ] + ] + if len(series) == 5 : + 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')] + ] + reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup) return - + 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 + + + number = int(query['data']) - 1 + + query.edit_message_text(text="Choix de la series : ".format(get_title_only(number) )) + - query.edit_message_text(text="Selected option: {}".format(query.data)) + # 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)) @@ -174,9 +207,9 @@ def main(): dp.add_handler(CommandHandler("liste", liste)) - dp.add_handler(CommandHandler("check", check_seen)) + dp.add_handler(CommandHandler("latest", latest)) - dp.add_handler(CommandHandler("code", coding)) + dp.add_handler(CommandHandler("seen", ive_seen)) updater.dispatcher.add_handler(CallbackQueryHandler(button)) From 920b5fecf48e695436becc18450b793068545cbf Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 2 May 2020 13:29:14 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'notification.p?= =?UTF-8?q?y'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notification.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/notification.py b/notification.py index bf5d9ef..f18c0b5 100644 --- a/notification.py +++ b/notification.py @@ -13,7 +13,7 @@ from config import series import os.path from os import path import datetime - +import time def main(): @@ -28,16 +28,19 @@ def main(): print("Pour arreter le script : CTRL+Z") - now = datetime.datetime.now() - print (now.strftime("%Y-%m-%d %H:%M:%S")) - if type(series) == str : - check_latest(series) + while 1 : + now = datetime.datetime.now() + print (now.strftime("%Y-%m-%d %H:%M:%S")) + + if type(series) == str : + check_latest(series) - else: - for i in range(len(series)): - thetvdb_id = series[i] - check_latest(thetvdb_id) + else: + for i in range(len(series)): + thetvdb_id = series[i] + check_latest(thetvdb_id) + time.sleep(1800) @@ -47,4 +50,7 @@ def main(): if __name__ == '__main__': - main() \ No newline at end of file + try : + main() + except : + main() \ No newline at end of file