[PYTHON] Verschrotten Sie den Zeitplan von Hinatazaka 46 und spiegeln Sie ihn in Google Kalender wider

Fazit

Wenn Sie nicht an Code interessiert sind und nur einen Kalender hinzufügen möchten hier. Wenn Sie ein Google-Konto haben, können Sie es sofort hinzufügen.

In diesem Artikel möchten wir Informationen von HP erhalten und automatisch den folgenden Kalender generieren. スクリーンショット 2020-10-12 21.23.11.png

Dieser Wille

Hintergrund

Hinatazaka 46 ist eine der Pistengruppen und eine Gruppe, deren Motto "Happy Aura" lautet. Natürlich gibt es viele Menschen, die sich für ihre "** visuelle ", " Helligkeit " und " Einstellung, hart an irgendetwas zu arbeiten **" interessieren, und ich bin einer von ihnen.

Der zuverlässigste Weg, um ihre Aktivitäten zu verfolgen, ist das Überprüfen der Seite "Zeitplan" auf HP. Ich sehe es oft.

Jedoch,

Durch die Einführung des Kalenders von dieser Site ist es auch möglich, wichtige Ereignisse, aber detaillierte Ereignisse (behoben) abzudecken. Es schien, dass es nicht abgedeckt war (unregelmäßige Aktivitäten, die nicht durchgeführt wurden).

Um diese Unzufriedenheit zu beseitigen, habe ich mir überlegt, ** "Ihren Zeitplan in meinem Google Kalender wiederzugeben" ** zu realisieren.

Implementierung

Ausführung

Vorbereitung

Sie benötigen die Google-API. Informationen zum Verfahren finden Sie in diesem Artikel.

Wenn Sie eine regelmäßige Ausführung durchführen möchten, ist es besser, Cron oder Heroku zu verwenden. Ich persönlich mag Heroku, das nicht auf meinem lokalen PC laufen muss, also benutze ich es. In Bezug auf Heroku habe ich zuvor in My hatena blog erklärt, wie man es verwendet. Wenn Sie möchten, lesen Sie dies bitte.

Verfahren

  1. Löschen Sie die erforderlichen Informationen aus Schedule on HP.
  2. Reflektieren Sie Informationen in Google Kalender

① Scraping notwendige Informationen von HP

Funktion zum Abrufen von Ereignisinformationen

Die zu erfassenden Informationen sind die folgenden vier.

--Kategorie

Da es am selben Tag mehrere Auftrittsereignisse geben kann,

  1. Holen Sie sich alle Ereignisse für jedes Datum (search_event_each_date)
  2. Holen Sie sich das Ereignis eines bestimmten Tages (search_event_info)
  3. Erhalten Sie detaillierte Informationen zu einem Ereignis (search_detail_info)

Informationen werden im Fluss erfasst.

def search_event_each_date(year, month):
    url = (
        f"https://www.hinatazaka46.com/s/official/media/list?ima=0000&dy={year}{month}"
    )
    result = requests.get(url)
    soup = BeautifulSoup(result.content, features="lxml")
    events_each_date = soup.find_all("div", {"class": "p-schedule__list-group"})

    time.sleep(3)  # NOTE:Beseitigen Sie die Belastung des Servers

    return events_each_date


def search_event_info(event_each_date):
    event_date_text = remove_blank(event_each_date.contents[1].text)[
        :-1
    ]  # NOTE:Erhalten Sie andere Informationen als den Tag
    events_time = event_each_date.find_all("div", {"class": "c-schedule__time--list"})
    events_name = event_each_date.find_all("p", {"class": "c-schedule__text"})
    events_category = event_each_date.find_all("div", {"class": "p-schedule__head"},)
    events_link = event_each_date.find_all("li", {"class": "p-schedule__item"})

    return event_date_text, events_time, events_name, events_category, events_link


def search_detail_info(event_name, event_category, event_time, event_link):
    event_name_text = remove_blank(event_name.text)
    event_category_text = remove_blank(event_category.contents[1].text)
    event_time_text = remove_blank(event_time.text)
    event_link = event_link.find("a")["href"]
    active_members = search_active_member(event_link)

    return event_name_text, event_category_text, event_time_text, active_members


def search_active_member(link):
    try:
        url = f"https://www.hinatazaka46.com{link}"
        result = requests.get(url)
        soup = BeautifulSoup(result.content, features="lxml")
        active_members = soup.find("div", {"class": "c-article__tag"}).text
        time.sleep(3)  # NOTE:Beseitigen Sie die Serverlast
    except AttributeError:
        active_members = ""

    return active_members

def remove_blank(text):
    text = text.replace("\n", "")
    text = text.replace(" ", "")
    return text

** [Ergänzung] ** In der Version 2020/10/14 war es nicht möglich, etwas anderes als medienbezogene Ereignisse korrekt zu erfassen. Ändern Sie es daher wie folgt. (Im obigen Code ist dies bereits wiedergegeben.)

** (vor der Korrektur) **

events_category = event_each_date.find_all(
     "div", {"class": "c-schedule__category category_media"}
)

event_category_text = remove_blank(event_category.text)

(Überarbeitet)

events_category = event_each_date.find_all("div", {"class": "p-schedule__head"},)

event_category_text = remove_blank(event_category.contents[1].text)

Jetzt können Ereignisse wie "Geburtstag" und "LIVE" korrekt im Kalender angezeigt werden.

Zeitbezogene Funktionen

Besonders zeitlich, abhängig von der Notation ――Es ist der nächste Tag, wie "24: 20 ~ 25: 00"

def over24Hdatetime(year, month, day, times):
    """
Konvertieren Sie die Zeit über 24H in datetime
    """
    hour, minute = times.split(":")[:-1]

    # to minute
    minutes = int(hour) * 60 + int(minute)

    dt = datetime.datetime(year=int(year), month=int(month), day=int(day))
    dt += datetime.timedelta(minutes=minutes)

    return dt.strftime("%Y-%m-%dT%H:%M:%S")


def prepare_info_for_calendar(
    event_name_text, event_category_text, event_time_text, active_members
):
    event_title = f"({event_category_text}){event_name_text}"
    if event_time_text == "":
        event_start = f"{year}-{month}-{event_date_text}"
        event_end = f"{year}-{month}-{event_date_text}"
        is_date = True
    else:
        start, end = search_start_and_end_time(event_time_text)
        event_start = over24Hdatetime(year, month, event_date_text, start)
        event_end = over24Hdatetime(year, month, event_date_text, end)
        is_date = False
    return event_title, event_start, event_end, is_date

② Reflektieren Sie Informationen in Google Kalender

Das allgemeine Verfahren ist wie folgt.

  1. Erstellen Sie eine Instanz basierend auf der API
  2. Stellen Sie fest, ob das Ereignis zuvor hinzugefügt wurde
  3. Ereignis hinzufügen

API-Einstellungen

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

def build_calendar_api():
    SCOPES = ["https://www.googleapis.com/auth/calendar"]
    creds = None
    if os.path.exists("token.pickle"):
        with open("token.pickle", "rb") as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
            creds = flow.run_local_server(port=0)
        with open("token.pickle", "wb") as token:
            pickle.dump(creds, token)

    service = build("calendar", "v3", credentials=creds)

    return service

Feststellen, ob es sich um ein zuvor hinzugefügtes Ereignis handelt

Überprüfen Sie vor dem Hinzufügen anhand von "Ereignisname-Zeit", ob es sich um ein zuvor hinzugefügtes Ereignis handelt. Holen Sie sich die Liste dafür mit der Funktion search_events.

def search_events(service, calendar_id, start):

    end_datetime = datetime.datetime.strptime(start, "%Y-%m-%d") + relativedelta(
        months=1
    )
    end = end_datetime.strftime("%Y-%m-%d")

    events_result = (
        service.events()
        .list(
            calendarId=calendar_id,
            timeMin=start + "T00:00:00+09:00",  # NOTE:+09:Es ist wichtig, es auf 00 zu setzen. (UTC in JST konvertieren)
            timeMax=end + "T23:59:00+09:00",  # NOTE;Suchzeitraum bis zum nächsten Monat.
        )
        .execute()
    )
    events = events_result.get("items", [])

    if not events:
        return []
    else:
        events_starttime = change_event_starttime_to_jst(events)
        return [
            event["summary"] + "-" + event_starttime
            for event, event_starttime in zip(events, events_starttime)
        ]

def change_event_starttime_to_jst(events):
    events_starttime = []
    for event in events:
        if "date" in event["start"].keys():
            events_starttime.append(event["start"]["date"])
        else:
            str_event_uct_time = event["start"]["dateTime"]
            event_jst_time = datetime.datetime.strptime(
                str_event_uct_time, "%Y-%m-%dT%H:%M:%S+09:00"
            )
            str_event_jst_time = event_jst_time.strftime("%Y-%m-%dT%H:%M:%S")
            events_starttime.append(str_event_jst_time)
    return events_starttime

Ereignis hinzufügen

def add_date_schedule(
    event_name, event_category, event_time, event_link, previous_add_event_lists
):
    (
        event_name_text,
        event_category_text,
        event_time_text,
        active_members,
    ) = search_detail_info(event_name, event_category, event_time, event_link)

    #Vorbereitung der Informationen, die im Kalender berücksichtigt werden sollen
    (event_title, event_start, event_end, is_date,) = prepare_info_for_calendar(
        event_name_text, event_category_text, event_time_text, active_members,
    )

    if (
        f"{event_title}-{event_start}" in previous_add_event_lists
    ):  # NOTE:Bestehen, wenn der gleiche Termin bereits besteht
        pass
    else:
        add_info_to_calendar(
            calendarId, event_title, event_start, event_end, active_members, is_date,
        )


def add_info_to_calendar(calendarId, summary, start, end, active_members, is_date):

    if is_date:
        event = {
            "summary": summary,
            "description": active_members,
            "start": {"date": start, "timeZone": "Japan",},
            "end": {"date": end, "timeZone": "Japan",},
        }
    else:
        event = {
            "summary": summary,
            "description": active_members,
            "start": {"dateTime": start, "timeZone": "Japan",},
            "end": {"dateTime": end, "timeZone": "Japan",},
        }

    event = service.events().insert(calendarId=calendarId, body=event,).execute()

Voller Text

Dieses Mal versuche ich, den Zeitplan von diesem Monat bis zu drei Monaten in Google Kalender wiederzugeben. Nur calendarId muss die ID meines Kalenders festlegen.


import time
import pickle
import os.path

import requests
from bs4 import BeautifulSoup

import datetime
from dateutil.relativedelta import relativedelta

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request


def build_calendar_api():
    SCOPES = ["https://www.googleapis.com/auth/calendar"]
    creds = None
    if os.path.exists("token.pickle"):
        with open("token.pickle", "rb") as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
            creds = flow.run_local_server(port=0)
        with open("token.pickle", "wb") as token:
            pickle.dump(creds, token)

    service = build("calendar", "v3", credentials=creds)

    return service


def remove_blank(text):
    text = text.replace("\n", "")
    text = text.replace(" ", "")
    return text


def search_event_each_date(year, month):
    url = (
        f"https://www.hinatazaka46.com/s/official/media/list?ima=0000&dy={year}{month}"
    )
    result = requests.get(url)
    soup = BeautifulSoup(result.content, features="lxml")
    events_each_date = soup.find_all("div", {"class": "p-schedule__list-group"})

    time.sleep(3)  # NOTE:Beseitigen Sie die Belastung des Servers

    return events_each_date


def search_start_and_end_time(event_time_text):
    has_end = event_time_text[-1] != "~"
    if has_end:
        start, end = event_time_text.split("~")
    else:
        start = event_time_text.split("~")[0]
        end = start
    start += ":00"
    end += ":00"
    return start, end


def search_event_info(event_each_date):
    event_date_text = remove_blank(event_each_date.contents[1].text)[
        :-1
    ]  # NOTE:Erhalten Sie andere Informationen als den Tag
    events_time = event_each_date.find_all("div", {"class": "c-schedule__time--list"})
    events_name = event_each_date.find_all("p", {"class": "c-schedule__text"})
    events_category = event_each_date.find_all("div", {"class": "p-schedule__head"},)
    events_link = event_each_date.find_all("li", {"class": "p-schedule__item"})

    return event_date_text, events_time, events_name, events_category, events_link


def search_detail_info(event_name, event_category, event_time, event_link):
    event_name_text = remove_blank(event_name.text)
    event_category_text = remove_blank(event_category.contents[1].text)
    event_time_text = remove_blank(event_time.text)
    event_link = event_link.find("a")["href"]
    active_members = search_active_member(event_link)

    return event_name_text, event_category_text, event_time_text, active_members

def search_active_member(link):
    try:
        url = f"https://www.hinatazaka46.com{link}"
        result = requests.get(url)
        soup = BeautifulSoup(result.content, features="lxml")
        active_members = soup.find("div", {"class": "c-article__tag"}).text
        time.sleep(3)  # NOTE:Beseitigen Sie die Serverlast
    except AttributeError:
        active_members = ""

    return active_members


def over24Hdatetime(year, month, day, times):
    """
Konvertieren Sie die Zeit über 24H in datetime
    """
    hour, minute = times.split(":")[:-1]

    # to minute
    minutes = int(hour) * 60 + int(minute)

    dt = datetime.datetime(year=int(year), month=int(month), day=int(day))
    dt += datetime.timedelta(minutes=minutes)

    return dt.strftime("%Y-%m-%dT%H:%M:%S")


def prepare_info_for_calendar(
    event_name_text, event_category_text, event_time_text, active_members
):
    event_title = f"({event_category_text}){event_name_text}"
    if event_time_text == "":
        event_start = f"{year}-{month}-{event_date_text}"
        event_end = f"{year}-{month}-{event_date_text}"
        is_date = True
    else:
        start, end = search_start_and_end_time(event_time_text)
        event_start = over24Hdatetime(year, month, event_date_text, start)
        event_end = over24Hdatetime(year, month, event_date_text, end)
        is_date = False
    return event_title, event_start, event_end, is_date


def change_event_starttime_to_jst(events):
    events_starttime = []
    for event in events:
        if "date" in event["start"].keys():
            events_starttime.append(event["start"]["date"])
        else:
            str_event_uct_time = event["start"]["dateTime"]
            event_jst_time = datetime.datetime.strptime(
                str_event_uct_time, "%Y-%m-%dT%H:%M:%S+09:00"
            )
            str_event_jst_time = event_jst_time.strftime("%Y-%m-%dT%H:%M:%S")
            events_starttime.append(str_event_jst_time)
    return events_starttime


def search_events(service, calendar_id, start):

    end_datetime = datetime.datetime.strptime(start, "%Y-%m-%d") + relativedelta(
        months=1
    )
    end = end_datetime.strftime("%Y-%m-%d")

    events_result = (
        service.events()
        .list(
            calendarId=calendar_id,
            timeMin=start + "T00:00:00+09:00",  # NOTE:+09:Es ist wichtig, es auf 00 zu setzen. (UTC in JST konvertieren)
            timeMax=end + "T23:59:00+09:00",  # NOTE;Suchzeitraum bis zum nächsten Monat.
        )
        .execute()
    )
    events = events_result.get("items", [])

    if not events:
        return []
    else:
        events_starttime = change_event_starttime_to_jst(events)
        return [
            event["summary"] + "-" + event_starttime
            for event, event_starttime in zip(events, events_starttime)
        ]


def add_date_schedule(
    event_name, event_category, event_time, event_link, previous_add_event_lists
):
    (
        event_name_text,
        event_category_text,
        event_time_text,
        active_members,
    ) = search_detail_info(event_name, event_category, event_time, event_link)

    #Vorbereitung der Informationen, die im Kalender berücksichtigt werden sollen
    (event_title, event_start, event_end, is_date,) = prepare_info_for_calendar(
        event_name_text, event_category_text, event_time_text, active_members,
    )

    if (
        f"{event_title}-{event_start}" in previous_add_event_lists
    ):  # NOTE:Bestehen, wenn der gleiche Termin bereits besteht
        pass
    else:
        add_info_to_calendar(
            calendarId, event_title, event_start, event_end, active_members, is_date,
        )


def add_info_to_calendar(calendarId, summary, start, end, active_members, is_date):

    if is_date:
        event = {
            "summary": summary,
            "description": active_members,
            "start": {"date": start, "timeZone": "Japan",},
            "end": {"date": end, "timeZone": "Japan",},
        }
    else:
        event = {
            "summary": summary,
            "description": active_members,
            "start": {"dateTime": start, "timeZone": "Japan",},
            "end": {"dateTime": end, "timeZone": "Japan",},
        }

    event = service.events().insert(calendarId=calendarId, body=event,).execute()


if __name__ == "__main__":

    # -------------------------step1:verschiedene Einstellungen-------------------------
    #API-System
    calendarId = (
        "〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜"  # NOTE:Meine Kalender-ID
    )
    service = build_calendar_api()

    #Suchbereich
    num_search_month = 3  # NOTE;Reflektiert im Kalender bis zum Zeitplan 3 Monate im Voraus
    current_search_date = datetime.datetime.now()
    year = current_search_date.year
    month = current_search_date.month

    # -------------------------step2.Informieren Sie sich über jedes Datum-------------------------
    for _ in range(num_search_month):
        events_each_date = search_event_each_date(year, month)
        for event_each_date in events_each_date:

            # step3:Holen Sie sich sofort Zeitpläne für einen bestimmten Tag
            (
                event_date_text,
                events_time,
                events_name,
                events_category,
                events_link,
            ) = search_event_info(event_each_date)

            event_date_text = "{:0=2}".format(
                int(event_date_text)
            )  # NOTE;Füllen Sie mit 0, so dass es 2 Stellen wird (z.0-> 01)
            start = f"{year}-{month}-{event_date_text}"
            previous_add_event_lists = search_events(service, calendarId, start)

            # step4:Informationen zum Kalender hinzufügen
            for event_name, event_category, event_time, event_link in zip(
                events_name, events_category, events_time, events_link
            ):
                add_date_schedule(
                    event_name,
                    event_category,
                    event_time,
                    event_link,
                    previous_add_event_lists,
                )

        # step5:Bis zum nächsten Monat
        current_search_date = current_search_date + relativedelta(months=1)
        year = current_search_date.year
        month = current_search_date.month



Schließlich

In diesem Artikel habe ich vorgestellt, wie der Zeitplan von Hinatazaka 46 in Google Kalender wiedergegeben wird. Dieser Wille

Dieses Mal haben wir uns auf Hinatazaka 46 konzentriert. Wenn Sie jedoch "(1) Verschrotten der erforderlichen Informationen von HP" ändern, können Sie (2) wiederverwenden und den Zeitplan jeder Person in Google Kalender wiedergeben.

━━━━━━━━━━

Wenn Sie Hinatazaka 46 nicht kennen, warum interessieren Sie sich nicht dafür? Persönlich "Treffen wir uns in Hinatazaka", das jeden Sonntag ab 25:05 Uhr im Fernsehen Tokio ausgestrahlt wird. ** ist empfohlen. Sie werden erstaunt sein und sich von der Vielzahl der Fähigkeiten angezogen fühlen, die Sie sich nicht als Idol vorstellen können. Außerdem finde ich es gut, aus dem Song bei Hyugazaka 46 OFFICIAL YouTube CHANNEL zu wissen.

Abgesehen davon ist meine jüngste Empfehlung Herr Yoshika Matsuda, der ein sehr schönes Lächeln hat. Was ist gut?

matsudakonoka.png Blog zum Posten von Bildern

Referenzseite

So extrahieren Sie beliebige Ereignisse in Google Kalender mit Python

Hinzufügen eines Ereignisses zu Google Kalender mit Python

[Python] Abrufen / Hinzufügen von Google Kalender-Terminen mithilfe der Google Kalender-API

Informationen zu Python datetime

━━━━━━━━━━ Hyugazaka46 Homepage

Treffen wir uns in Hinatazaka

Hyugazaka 46 OFFIZIELLER YouTube-KANAL

Yoshika Matsudas Blog

Recommended Posts

Verschrotten Sie den Zeitplan von Hinatazaka 46 und spiegeln Sie ihn in Google Kalender wider
Holen Sie sich den neuesten Termin aus Google Kalender und benachrichtigen Sie jeden Morgen online
Verschrotten Sie die Liste der Go To EAT-Mitgliedsgeschäfte in der Präfektur Fukuoka und konvertieren Sie sie in CSV
Suchen Sie es in der Warteschlange und bearbeiten Sie es
Verschrotten Sie die Liste der Go To EAT-Mitgliedsspeicher in der Präfektur Niigata und konvertieren Sie sie in CSV
Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV
Schaben Sie den Holojour ab und zeigen Sie ihn in der CLI an
[Python] Vorsichtsmaßnahmen beim Erfassen von Daten durch Scraping und Einfügen in die Liste
Die Niederschlagsdaten der Meteorologischen Agentur kratzen und auf M5Stack anzeigen
Wenn Sie eine Methode in einer Ruby-Klasse definieren und dann eine Methode darin definieren, wird sie zu einer Methode der ursprünglichen Klasse.
Importieren Sie den von "Schedule-kun" erhaltenen Zeitplan in Google Kalender
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Ich möchte einen Slack-Bot, der das Gehalt eines Teilzeitjobs aus dem Zeitplan von Google Kalender berechnet und anzeigt!
Untersuchung der Beziehung zwischen Sprachvorverarbeitung und Transkriptionsgenauigkeit in der Google Cloud Speech API
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert (Google Kalender Edition).
PDF-Kratzer über den Status testpositiver Personen in jeder Präfektur des Ministeriums für Gesundheit, Arbeit und Soziales
Scraping Gehen Sie zu EAT-Mitgliedsgeschäften in der Präfektur Osaka und konvertieren Sie zu CSV
Implementieren Sie das mathematische Modell "SIR-Modell" von Infektionskrankheiten in OpenModelica (das die Sterblichkeitsrate und die Reinfektionsrate widerspiegelt).
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Der Prozess, Python-Code objektorientiert zu machen und zu verbessern
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Scraping das Ergebnis von "Schedule-Kun"
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
Wahrscheinlichkeit der höchsten und niedrigsten Jungtierpreise in Atsumori
Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
Überprüfen Sie die Komprimierungsrate und -zeit von PIXZ, die in der Praxis verwendet werden
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Beachten Sie, dass ich den Algorithmus des maschinell lernenden Naive Bayes-Klassifikators verstehe. Und ich habe es in Python geschrieben.
[Rails 6] Betten Sie Google Map in die App ein und fügen Sie der eingegebenen Adresse einen Marker hinzu. [Bestätigung der Details]
[Python / Jupyter] Übersetzen Sie den Kommentar des in die Zwischenablage kopierten Programms und fügen Sie ihn in eine neue Zelle ein.
Verwenden Sie Cloud Dataflow, um das Ziel dynamisch entsprechend dem Wert der Daten zu ändern und in GCS zu speichern
Kopieren und Einfügen des Inhalts eines Blattes im JSON-Format mit einer Google-Tabelle (mithilfe von Google Colab)
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte der Teilnahme an AtCoder
Die Geschichte des "Lochs" in der Akte
In Google Colaboratory registrierte Snippets (Scraping)
Erläuterung und Implementierung des in Slack, HipChat und IRC verwendeten XMPP-Protokolls
[Python] Untersuchen Sie die Eigenschaften der Titel der Top-Websites in den Google-Suchergebnissen
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert
Diagramm der Geschichte der Anzahl der Ebenen des tiefen Lernens und der Änderung der Genauigkeit
[Python] Süß Ist es süß? Über Suiten und Ausdrücke in offiziellen Dokumenten
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
Ändern Sie die Sättigung und Helligkeit von Farbspezifikationen wie # ff000 in Python 2.5
Schließen Sie das Cat-Ergebnis in doppelte Anführungszeichen ein und setzen Sie es in eine Variable
Derjenige, der die CSV-Datei teilt, liest und parallel verarbeitet
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Ich habe den Akkord des Songs mit word2vec vektorisiert und mit t-SNE visualisiert
Suchen Sie den Namen und die Daten einer freien Variablen in einem Funktionsobjekt
[Android] Zeigen Sie Bilder im Web im infoWindow von Google Map an
Der API-Client für die Sitemap in der Google-Suchkonsole befindet sich in Webmastern anstelle der Suchkonsole
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Darstellung von Containern in einem verschachtelten Rahmen (schematisch) in Jupyter und was ich bei der Erstellung untersucht habe
Ein einfacher Mock-Server, der den HTTP-Anforderungsheader einfach in den Hauptteil der Antwort einbettet und zurückgibt.
Einstellungen, die es einfacher machen, den Maßstab und die Beschriftung der Figur auch bei einem dunklen Thema mit Google Colaboratory zu sehen