Créez une application de gestion automatique des notes pour Tenho Private Room avec le bot LINE et Python Partie 1

Contexte

Over View

Tableau de présentation de l'application

  1. Téléchargez et enregistrez automatiquement le journal Tenho (flèche violette sur la figure)
  2. Répondre aux informations agrégées en réponse à la demande de l'utilisateur (LINE) (flèche verte sur la figure)

test.png

Image complète

ui.png

Langages, outils, services, modules, etc.

Langue utilisée

Outils et services utilisés

Cette fois, j'ai créé une application utilisant les services suivants qui peuvent être utilisés gratuitement.

Heroku

LINE bot (LINE Messaging API)

Dropbox API

Stockage AWS S3

Module utilisé

Obtenir le journal de la chambre privée Tenho

Cette fois, je suis au point où je récupère le journal de la salle privée Tenho en grattant. Je publierai de plus en plus.

Synopsis

Exemple de code

# scrape_log.py
# coding *-utf-8-*

import os
import pprint
import time
import urllib.error
import urllib.request
import gzip
import shutil
import datetime
from datetime import date,timedelta
import download4
def download_file(url, dst_path):
    try:
        with urllib.request.urlopen(url) as web_file:
            data = web_file.read()
            with open(dst_path, mode='wb') as local_file:
                local_file.write(data)
    except urllib.error.URLError as e:
        print(e)
if __name__ == "__main__":
    dt_now = datetime.datetime.now()
    yyyymmdd = dt_now.strftime('%Y%m%d')
    # dt_1day_past = dt_now - timedelta(days=1) #Trouver le journal il y a 1 heure
    # yyyymmdd = dt_1day_past.strftime('%Y%m%d')
    print(yyyymmdd)

    fname = 'sca{}.log.gz'.format(yyyymmdd)
    URL = "https://tenhou.net/sc/raw/dat/"+fname
    
    dst_path = 'scrape.gz'
    download_file(URL, dst_path)

    with gzip.open('scrape.gz', mode='r') as f_in:
        with open('scrape.txt', 'wb') as f_out:
            shutil.copyfileobj(f_in, f_out)
    with open('scrape.txt') as f:
        lines = f.readlines()


    download4.download("/logvol1.txt","temp.txt")
    with open("temp.txt",'a') as f:
        f.write("{}\n".format(yyyymmdd))
        for line in lines:
            roomid = line.split()[0]
            if roomid == "C1234": #ID de la chambre privée
                f.write("{}".format(line)) 
                print(line)

    download4.upload("temp.txt","/logvol1.txt")       
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import dropbox

class TransferData:
    def __init__(self, access_token):
        self.access_token = access_token

    def upload_file(self, file_from, file_to):
        """upload a file to Dropbox using API v2
        """
        dbx = dropbox.Dropbox(self.access_token)

        with open(file_from, 'rb') as f:
            dbx.files_upload(f.read(), file_to,mode=dropbox.files.WriteMode.overwrite)
    
    def download_file(self,file_from,file_to):
        """download a file to Dropbox using API v2
        """
        dbx = dropbox.Dropbox(self.access_token)

        with open(file_to, 'rb') as f:
            dbx.files_download_to_file(file_to, file_from)
    


def upload(file_from,file_to):
    access_token = "Hogehoge" #Jeton d'accès au dossier de l'application
    transferData = TransferData(access_token)
    # API v2
    transferData.upload_file(file_from, file_to)

def download(file_from,file_to):
    access_token = "Hogehoge" #Jeton d'accès au dossier de l'application
    transferData = TransferData(access_token)
    # API v2
    transferData.download_file(file_from, file_to)

if __name__ == '__main__':
    # upload()
    download('/logvol1.txt',"log.txt")

en conclusion

p.s.

Recommended Posts

Créez une application de gestion automatique des notes pour Tenho Private Room avec le bot LINE et Python Partie 1
Créez une application de gestion automatique des notes pour Tenho Private Room avec le bot LINE et Python Partie 2
Créez une application de gestion automatique des notes pour la salle privée Tenho avec le bot LINE et la partie Python ③
Créer un LINE BOT avec Minette pour Python
Créez une application de mots anglais avec python
Créez une application qui devine les étudiants avec Python
Créons une application capable de rechercher des images similaires avec Python et Flask Part1
Créons une application capable de rechercher des images similaires avec Python et Flask Part2
J'ai essayé de faire LINE BOT avec Python et Heroku
[LINE Messaging API] Créer un BOT de retour de perroquet avec Python
Créez une application d'apprentissage automatique avec ABEJA Platform + LINE Bot
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créez une illusion rayée avec correction gamma pour Python3 et openCV3
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
Système de trading automatique FX réalisé avec python et algorithme génétique Partie 1
Explication de la création d'une application pour afficher des images et dessiner avec Python
Modulation et démodulation FM avec Python Partie 3
Installation de Python et gestion des packages avec pip
Créez rapidement un fichier Excel avec Python #python
Créer et décrypter du code César avec python
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Modulation et démodulation FM avec Python Partie 2
[Python] Créez rapidement une API avec Flask
[LINE WORKS version Trello Bot] Comment créer un salon de discussion privé comprenant un robot de discussion