Je suis redevable de devenir romancier, mais je perds souvent du temps à attendre les mises à jour devant l'écran ... Même si je savais que c'était inutile, je m'attendais à ce qu'il se recharge, alors j'ai décidé de créer une application qui vérifierait les mises à jour. (Une addition) Le planificateur de tâches a réalisé l'automatisation. Cela ne fonctionne que lorsque l'ordinateur est allumé, mais c'est pratique! (9 août 2020)
Obtenez des informations sur les dernières histoires du roman à l'aide de l'API Naro. Après cela, LINE Notify enverra une notification s'il y a des informations mises à jour en les comparant avec les informations précédemment acquises localement.
Cette fois, nous utilisons l'API officielle, donc nous ne grattons pas. </ B> Mais si vous êtes inquiet, consultez la loi.
C'est un service qui relie des services différents de IFTTT. Cette fois, connectez les Webhooks et LINE Notify et demandez-leur d'envoyer des notifications à votre LINE. Procédure </ b>
Je l'ai publié sur GitHub ( ici ). Une brève description de chaque fonction est donnée. import
import requests
import yaml
import gzip
import json
import csv
get_new_data() ['ncode', 'title', 'general_lastup', 'general_all_no' du roman spécifié à l'aide de l ' API Narurou '] Est acquis. Veuillez vous référer au site officiel et à l'article ci-dessous pour savoir comment utiliser l'API Naro. Je pense que c'est intéressant car il a diverses utilisations.
def get_new_data():
"""
payload : json params
e.g.) payload = {'out': 'json', 'ncode':Veuillez entrer le ncode du roman que vous lisez, 'of':'t-gl', 'gzip':5}
reference) https://dev.syosetu.com/man/api/
"""
payload = {'out': 'json', 'ncode': """Veuillez entrer ncode""", 'of':'t-gl-n-ga', 'gzip':5}
url = "https://api.syosetu.com/novelapi/api/"
r_gzip = requests.get(url, params=payload)
r = r_gzip.content
r_gzip.encoding = 'gzip'
res_content = gzip.decompress(r).decode("utf-8")
res = json.loads(res_content)[1:]
new_data = [['ncode', 'title', 'general_lastup', 'general_all_no']]
for r in res:
new_data.append([r['ncode'], r['title'], r['general_lastup'], str(r['general_all_no'])])
return new_data
read_data() Lisez des informations telles que le nombre total d'histoires et la date de mise à jour du roman précédemment acquis à partir d'un fichier appelé update.csv. Lorsque vous exécutez ce code pour la première fois, update.csv doit être vide, donc si vous essayez de l'utiliser tel quel, une erreur se produira naturellement. Avant cela, créez update.csv en utilisant get_new_data () et store_data () décrits plus loin.
def read_data():
f_data = "update.csv"
with open(f_data, encoding="utf-8") as f:
reader = csv.reader(f)
data = [row for row in reader]
#data: list(['ncode', 'title', 'general_lastup', 'general_all_no'])
return data
store_data(res) Écrivez les informations du roman stockées dans la liste res dans update.csv.
def store_data(res):
# res: list(['ncode', 'title', 'general_lastup', 'general_all_no'])
output = "update.csv"
with open(output, mode='w', newline="", encoding="utf-8") as f:
writer = csv.writer(f)
for d in res:
writer.writerow([d[0], d[1], d[2], d[3]])
post_ifttt(json) Utilisez le nom de l'applet et la clé Webhooks que vous avez notés précédemment ici. Remplacez-le dans l'emplacement commenté. Lorsque cette fonction est appelée, LINE sera notifié.
def post_ifttt(json):
# json: {value1: " content "}
url = (
"https://maker.ifttt.com/trigger/"
+ #Nom de l'applet
+ "/with/key/"
+ #Clé Webhooks
)
requests.post(url, json)
check(prev_data, new_data) Vérifiez s'il a été mis à jour. Pour les romans mis à jour, appelez post_ifttt () pour vous en informer.
def check(prev_data, new_data):
# prev_data: [[previous information of bookmark1], [previous information of bookmark2], ...]
# new_data: [[new information of bookmark1], [new information of bookmark2], ...]
isUpdated = 0
for i in range(len(prev_data)):
if(i==0):
continue
if(prev_data[i][0]==new_data[i][0] and prev_data[i][2]!=new_data[i][2]):
message = '\"' + new_data[i][1] + '\"' + 'A été mis à jour!\n' + 'https://ncode.syosetu.com/' + new_data[i][0] + '/' + new_data[i][3] + '/'
print(message)
json = {'value1': message)
post_ifttt(json)
store_data(new_data)
Variables de stockage des données lors de l'exécution </ b>
prev_data = read_data()
new_data = get_new_data()
check(prev_data, new_data)
Je pense que l'API est pratique. Avant d'écrire le programme, je me demandais: "Dois-je faire du grattage ... L'histoire autour de la loi semble être déroutante, et j'ai peur, comment faire du grattage en premier?" Il a été complété par la mise en œuvre de quelques-uns seulement. Je n'étais pas content. Vous pouvez créer une application simple simplement en faisant ce que vous avez appris en classe. Bien sûr, je pense qu'il y a place à amélioration. Si vous grattez de Ma page sans utiliser l'API, vous pouvez obtenir des informations sur votre roman préféré sans ncode. Même si vous utilisez l'API, cela semble être une expérience d'apprentissage d'acquérir le contenu du roman ensemble et de le lire comme une application pour smartphone (bien que certaines personnes l'aient déjà fait).
Recommended Posts