Erstellen Sie eine automatische Klassenverwaltungs-App für Tenho Private Room mit LINE Bot und Python Part 1

Hintergrund

Over View

App-Übersichtstabelle

  1. Laden Sie das Tenho-Protokoll automatisch herunter und speichern Sie es (lila Pfeil in der Abbildung).
  2. Antworten Sie auf aggregierte Informationen als Antwort auf eine Benutzeranforderung (LINE) (grüner Pfeil in der Abbildung).

test.png

Vollständiges Bild

ui.png

Sprachen, Tools, Dienste, Module usw.

Verwendete Sprache

Verwendete Tools und Services

Dieses Mal habe ich eine Anwendung mit den folgenden Diensten erstellt, die kostenlos verwendet werden können.

Heroku

LINE bot (LINE Messaging API)

Dropbox API

AWS S3-Speicher

Modul verwendet

Holen Sie sich das Protokoll von Tenho Privatzimmer

Dieses Mal bin ich bis zu dem Punkt gekommen, an dem ich das Protokoll des Tenho-Privatzimmers durch Schaben erhalte. Ich werde immer mehr posten.

Zusammenfassung

Codebeispiel

# 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) #Finde das Protokoll vor 1 Stunde
    # 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": #Privatzimmerausweis
                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" #Zugriffstoken auf den Anwendungsordner
    transferData = TransferData(access_token)
    # API v2
    transferData.upload_file(file_from, file_to)

def download(file_from,file_to):
    access_token = "Hogehoge" #Zugriffstoken auf den Anwendungsordner
    transferData = TransferData(access_token)
    # API v2
    transferData.download_file(file_from, file_to)

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

abschließend

p.s.

Recommended Posts

Erstellen Sie eine automatische Klassenverwaltungs-App für Tenho Private Room mit LINE Bot und Python Part 1
Erstellen Sie mit LINE Bot und Python Part 2 eine automatische Klassenverwaltungs-App für Tenho Private Room
Erstellen Sie eine automatische Klassenverwaltungs-App für Tenho Private Room mit LINE Bot und Python Part ③
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie eine App, die Schüler mit Python errät
Lassen Sie uns eine App erstellen, die ähnliche Bilder mit Python und Flask Part1 durchsuchen kann
Lassen Sie uns eine App erstellen, die ähnliche Bilder mit Python und Flask Part2 durchsuchen kann
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
[LINE Messaging API] Erstellen Sie einen Papageienrückgabe-BOT mit Python
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
Automatisches FX-Handelssystem mit Python und genetischem Algorithmus Teil 1
Erläuterung zum Erstellen einer Anwendung zum Anzeigen von Bildern und Zeichnen mit Python
FM-Modulation und Demodulation mit Python Part 3
Python-Installation und Paketverwaltung mit pip
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
FM-Modulation und Demodulation mit Python Part 2
[Python] Erstellen Sie schnell eine API mit Flask
[LINE WORKS-Version Trello Bot] So erstellen Sie einen privaten Gesprächsraum mit einem Gesprächsbot