Pārlūkot izejas kodu

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 pirms 8 mēnešiem
vecāks
revīzija
27d9338813
3 mainītis faili ar 176 papildinājumiem un 29 dzēšanām
  1. +58
    -5
      betaseries.py
  2. +115
    -22
      bot.py
  3. +3
    -2
      notification.py

+ 58
- 5
betaseries.py Parādīt failu

@@ -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__':


+ 115
- 22
bot.py Parādīt failu

@@ -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()


+ 3
- 2
notification.py Parādīt failu

@@ -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__':


Notiek ielāde…
Atcelt
Saglabāt