Bläddra i källkod

modified: betaseries.py - Ajout d'une fonction pour recuperer les codes des ep à partir d'une API + ajout des episodes à voir

modified:   bot.py - ajout de commandes pour donner les episodes à voir + keyboard multiple
	modified:   notification.py - Recupere chaque X temps les episodes à voir
master
administrator 8 månader sedan
förälder
incheckning
27d9338813
3 ändrade filer med 176 tillägg och 29 borttagningar
  1. +58
    -5
      betaseries.py
  2. +115
    -22
      bot.py
  3. +3
    -2
      notification.py

+ 58
- 5
betaseries.py Visa fil

@@ -50,6 +50,11 @@ def create_api(choice, thetvdb_id):
base_url = 'https://api.betaseries.com/episodes/watched?' base_url = 'https://api.betaseries.com/episodes/watched?'
API_seen = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&id=' API_seen = base_url + 'token=' + token + '&client_id=' + str(client_id) + '&id='
return API_seen 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 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 #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' 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']) code = 'S' + str(data['season ']) + 'E' + str(data['episode'])
return code 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(): 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__': if __name__ == '__main__':


+ 115
- 22
bot.py Visa fil

@@ -8,7 +8,7 @@ import json
from telegram import InlineKeyboardButton, InlineKeyboardMarkup from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from config import config, series 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 from telegram_api import send_message


# Activer / Désactiver le debuggage {Projet : pas encore utilisé} # 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 : if type(series) == str :
file_path = 'latest/' + series + '.json' file_path = 'latest/' + series + '.json'
print(file_path) 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[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[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) reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup) update.message.reply_text('Selectionnez une reponse', reply_markup=reply_markup)
@@ -159,36 +201,78 @@ def ive_seen(update, context):
def button(update, context): def button(update, context):
query = update.callback_query query = update.callback_query
query.answer() 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 # 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(): def main():
updater = Updater(token_bot, use_context=True) updater = Updater(token_bot, use_context=True)
print("Bot connecté") print("Bot connecté")
dp = updater.dispatcher dp = updater.dispatcher

dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", start)) dp.add_handler(CommandHandler("help", start))


@@ -209,9 +293,18 @@ def main():
dp.add_handler(CommandHandler("latest", latest)) 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)) updater.dispatcher.add_handler(CallbackQueryHandler(button))
dp.add_handler(CommandHandler("2see", what2see))
dp.add_handler(CommandHandler("watched", watched))


updater.start_polling() updater.start_polling()
updater.idle() updater.idle()


+ 3
- 2
notification.py Visa fil

@@ -7,7 +7,7 @@ import logging
import requests import requests
import json import json
from bot import user_id, token_bot, client_id 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 telegram.ext import Updater, CommandHandler
from config import series from config import series
import os.path import os.path
@@ -30,6 +30,7 @@ def main():
while 1 : while 1 :
what_2see()
now = datetime.datetime.now() now = datetime.datetime.now()
print (now.strftime("%Y-%m-%d %H:%M:%S")) 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__': if __name__ == '__main__':


Laddar…
Avbryt
Spara