[PYTHON] Importieren Sie "Sapporo City Household Garbage Collection-Tageskalender" in Google Kalender

Einführung

Kennen Sie "Sapporo City IKT-Nutzungsplattform DATA-SMART CITY SAPPORO"?

"Sapporo City IKT-Nutzungsplattform DATA-SMART CITY SAPPORO", die gemeinsam von Sapporo City und der Sapporo Industrial Promotion Foundation betrieben wird, ist Open Data und Big Data im öffentlichen und privaten Sektor als gemeinsame Plattform für die Schaffung von Innovationen durch Nutzung von Daten. Wir sammeln, verwalten und liefern. Darüber hinaus können die auf dieser Site veröffentlichten Daten auch mit der CKAN-Standard-API verwendet werden.

Davon abgesehen ist "Sapporo City Household Garbage Collection-Tageskalender" hier für die Öffentlichkeit zugänglich. Der Inhalt dieser Zeit besteht darin, zu versuchen, dies in Google Kalender zu integrieren.

Bestätigung der Daten

Werfen wir einen Blick auf die tatsächlich veröffentlichten Daten.

Kalender für die Sammlung von Haushaltsabfällen in Sapporo City (1. Oktober 2017 - 8. Oktober 2019)


Datum,Tag,Chuo Ward 1,Chuo Ward 2,Chuo Ward 3,Chuo Ward 4,Chuo Ward 5,Chuo Ward 6,Toyohei Ward 1,Toyohei Ward 2,Toyohei Ward 3,Toyohei Ward 4,Kiyota Ward 1,Kiyota Ward 2,Kita Ward 1,Kita Ward 2,Kita Ward 3,Kita Ward 4,Kita Ward 5,Kita Ward 6,East Ward 1,East Ward 2,East Ward 3,East Ward 4,East Ward 5,East Ward 6,Shiraishi Ward 1,Shiraishi Ward 2,Shiraishi Ward 3,Shiraishi Ward 4,Atsushi Ward 1,Atsushi Ward 2,Atsushi Ward 3,Atsushi Ward 4,Minami Ward 1,Minami Ward 2,Minami Ward 3,Minami Ward 4,Minami Ward 5,Minami Ward 6,Minami Ward 7,Nishi-ku 1,Nishi-ku 2,Nishi-ku 3,Nishi-ku 4,Teina Ward 1,Teina Ward 2,Teina Ward 3
2017-10-01,Tag,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
2017-10-02,Mond,1,1,1,10,9,8,10,8,9,1,1,1,1,1,1,10,8,9,1,1,1,10,8,9,9,2,8,1,1,1,1,1,1,1,1,11,9,9,8,1,1,1,9,8,11,8
2017-10-03,Feuer,8,10,9,1,1,1,1,1,1,10,9,8,9,10,8,1,1,1,10,8,9,1,1,1,1,1,1,8,9,9,8,2,9,11,8,1,1,1,1,9,11,8,1,1,1,1
…

Kalender für die Sammlung von Haushaltsabfällen in Sapporo City (1. Oktober 2019 - 30. September 2020)


Datum,Tag,Chuo Ward 1,Chuo Ward 2,Chuo Ward 3,Chuo Ward 4,Chuo Ward 5,Chuo Ward 6,Toyohei Ward 1,Toyohei Ward 2,Toyohei Ward 3,Toyohei Ward 4,Kiyota Ward 1,Kiyota Ward 2,Kita Ward 1,Kita Ward 2,Kita Ward 3,Kita Ward 4,Kita Ward 5,Kita Ward 6,East Ward 1,East Ward 2,East Ward 3,East Ward 4,East Ward 5,East Ward 6,Shiraishi Ward 1,Shiraishi Ward 2,Shiraishi Ward 3,Shiraishi Ward 4,Atsushi Ward 1,Atsushi Ward 2,Atsushi Ward 3,Atsushi Ward 4,Minami Ward 1,Minami Ward 2,Minami Ward 3,Minami Ward 4,Minami Ward 5,Minami Ward 6,Minami Ward 7,Nishi-ku 1,Nishi-ku 2,Nishi-ku 3,Nishi-ku 4,Teina Ward 1,Teina Ward 2,Teina Ward 3
2019-10-1,Feuer,8,10,9,1,1,1,1,1,1,10,9,8,9,10,8,1,1,1,10,8,9,1,1,1,1,1,1,8,9,9,8,11,9,2,8,1,1,1,1,9,2,8,1,1,1,1
2019-10-2,Wasser,10,9,8,9,8,10,9,10,8,8,10,9,10,8,9,9,10,8,9,10,8,9,10,8,11,8,9,11,8,11,11,9,8,9,2,8,8,2,9,8,9,2,2,9,8,2
…

In der ersten Zeile wird der Elementname jeder Spalte angezeigt, und in der zweiten und den folgenden Zeilen wird der tägliche Garbage-Typ für jede Region nach ID angezeigt.

"Chuo-ku 1" und "Chuo-ku 2" nach der 3. Spalte der 1. Zeile werden in [hier] beschrieben (http://www.city.sapporo.jp/seiso/kaisyu/index.html). Es ist eine Bereichsnummer.

Die Garbage Type-IDs in der zweiten und den folgenden Zeilen sind die in der "Garbage Type / Number Correspondence Table" zusammengefassten Nummern.

Entsprechungstabelle für Müllart / -nummer


Symbol,Müllsamen
1,Brennbarer Müll
2,Nicht brennbarer Müll
8,Flaschen / Dosen / Haustiere
9,Behälter Kunststoff
10,Verschiedenes
11,Zweige / Blätter / Gras
Leer,Keine Sammlung

Implementierungsrichtlinie

Zunächst entschied ich mich, Python dieses Mal zu verwenden, und basierend auf den bestätigten Daten entschied ich mich, es mit der folgenden Richtlinie zu implementieren.

Eingang

Ausgabe

Implementierungsdetails

Wie folgt. Sie finden es auch auf github.

sapporo_gc_calendar.py


"""Den Tageskalender für die Sammlung von Hausmüll in Sapporo City ical gestalten.

Machen Sie den Kalender für den Tag der Hausmüllsammlung in Sapporo City ical.
Siehe unten für die Originaldatei.
https://ckan.pf-sapporo.jp/dataset/garbage_collection_calendar
"""
import sys
from argparse import ArgumentParser, FileType

import dateutil.parser
import pandas
from icalendar import Calendar, Event, vDate


def main():
    """Hauptfunktion."""
    p = ArgumentParser(description='Machen Sie den Tageskalender für die Sammlung von Hausmüll in Sapporo City CSV-konform')
    p.add_argument('-a', '--area', help='Bereichsname')
    p.add_argument(
        'input',
        type=FileType(encoding='utf-8'), help='Sapporo City Haushalt Müllabfuhr Tag Kalender CSV')
    args = p.parse_args()

    df = pandas.read_csv(args.input, dtype='object')

    if args.area is None:
        print('Bereichsname, der eingegeben werden kann:', file=sys.stderr)
        for area in df.columns[2:]:
            print(' ' + area, file=sys.stderr)

        return

    if args.area not in df.columns[2:]:
        print('Regionsname nicht gefunden.', file=sys.stderr)
        return

    gctypes = {
        '1': 'Brennbarer Müll',
        '2': 'Nicht brennbarer Müll',
        '8': 'Flaschen / Dosen / Haustiere',
        '9': 'Behälter Kunststoff',
        '10': 'Verschiedenes',
        '11': 'Zweige / Blätter / Gras'
    }

    ical = Calendar()

    for datestr, gctype in zip(df['Datum'], df[args.area]):
        if gctype in gctypes:
            dt = dateutil.parser.parse(datestr)
            event = Event()
            event.add('SUMMARY', gctypes[gctype])
            event.add('DTSTART', vDate(dt))
            event.add('DTEND', vDate(dt))
            event.add('TRANSP', 'TRANSPARENT')
            ical.add_component(event)

    print(ical.to_ical().decode('utf-8'))


if __name__ == '__main__':
    main()

Ich habe nicht viel getan, aber ich bin süchtig nach einem Punkt.

Daher kann date.fromisoformat () vom 1. Oktober 2019 bis 30. September 2020 nicht direkt für Dateien verwendet werden. Aus diesem Grund versuche ich, dateutil.parser.parse () aus python-dateutil zu verwenden.

abschließend

Importieren Sie die mit diesem Tool generierte Datei im Iicalendar-Format in den Google Kalender und fertig. Wenn Sie es in den Google-Kalender einfügen, können Sie es für verschiedene Benachrichtigungen verwenden, sodass es praktisch ist.

Recommended Posts

Importieren Sie "Sapporo City Household Garbage Collection-Tageskalender" in Google Kalender
Importieren Sie den von "Schedule-kun" erhaltenen Zeitplan in Google Kalender