[PYTHON] Schaben Sie den Holojour ab und zeigen Sie ihn in der CLI an

Ich habe ein Programm erstellt, um den Holojour, den Lieferplan von hololive, zu kratzen und den Inhalt einfach mit CLI anzuzeigen.

Quellcode

GitHub

Vorsichtsmaßnahmen für den Gebrauch

Dieses Tool verwendet Anforderungen als externe Bibliothek. Wenn Sie bereits Pip installiert haben Sie können mit Pip-Installationsanforderungen </ b> antworten

Dieses Tool hat auch nichts mit der Holorive-Formel zu tun. Überlasten Sie den Server nicht mit mehr Ausführung als nötig.

Wie benutzt man

Sie können die folgenden Inhalte anzeigen, indem Sie main.py im Repository ausführen. alt

Sie können zur Laufzeit auch Optionen hinzufügen und deren Inhalt mit --help überprüfen. Als Beispiel,

---- all Alle Zeitpläne anzeigen, außer Bilibili-Videos, einschließlich Holosters ---- eng Anzeigen von Mitgliedsnamen in Englisch ---- morgen Zeige den Zeitplan von morgen

Usw. verwendet werden kann. Diese Optionen können gleichzeitig eingestellt und ausgeführt werden.

Notes Notieren Sie sich, wo Sie in der Produktion stecken.

Zunächst war ich besorgt darüber, wie ich die hololiven Mitglieder von den anderen durch die durch Schaben erhaltenen Daten trennen könnte. Als Antwort

scraping.py


def delete_exception(time_list, stream_members_list, stream_url_list, is_all):

    EXCEPTION_LIST = {'Yogiri', 'Civia', 'SpadeEcho', 'Doris', 'Artia', 'Rosalyn'}

    if not is_all:
        #Slice to get only non-hololive members (e.g. holostars hololive-ID)
        EXCEPTION_LIST =  EXCEPTION_LIST | set(get_member_list()[29:])

    for i in range(len(time_list)):

        if stream_members_list[i] in EXCEPTION_LIST:
            time_list[i] = None
            stream_members_list[i] = None
            stream_url_list[i] = None

    time_list = [i for i in time_list if not i is None]
    stream_members_list = [i for i in stream_members_list if not i is None]
    stream_url_list = [i for i in stream_url_list if not i is None]

    return time_list, stream_members_list, stream_url_list

Bereiten Sie im Voraus eine Reihe von Mitgliedern der Hololive Youtube-Distribution und Mitgliedern der Bilibili-Distribution vor. Ich habe eine Reihe von Mitgliedern erstellt, um sie von Optionen usw. auszuschließen, die dazugehörigen Elemente durch "Keine" ersetzt und sie schließlich gemeinsam in der Einschlussnotation gelöscht.

Übrigens können Sie es auch in eine Liste implementieren, aber wenn Sie die Elementnummern nicht benötigen, ist es um ein Vielfaches schneller, eine Menge als eine Liste zu verwenden.


Ein weiteres Problem bestand darin, dass es Mitglieder gab, deren Namen Englisch und Japanisch waren, und aufgrund des Unterschieds zwischen halber und voller Breite war es nicht möglich, die Spalten ordentlich anzuzeigen. Um dies zu lösen, habe ich die Standardbibliothek unicodedata verwendet.

unicode


if unicodedata.east_asian_width(stream_members_list[i][0]) == 'W': 
    m_space = ' ' * ( (-2 * len(stream_members_list[i]) + 18))               

else:
    m_space = ' ' * ( (-1 * len(stream_members_list[i]) ) + 18)

east_asian_width of unicodedata gibt W zurück, wenn das Argument (ein Zeichen, weil es Char ist) ein japanisches Zeichen voller Breite ist. Infolgedessen war es möglich, die Zeilen unter Verwendung der Anzahl der Zeichen im Namen in einer einheitlichen Zeile unter Verwendung von Leerzeichen anzuzeigen.

Schließlich

Ich bin froh, dass es bereits von einigen Leuten geklont wurde. Wir werden dieses Repository weiter verbessern.

Recommended Posts