J'ai fait un programme pour gratter l'holojour, qui est le calendrier de livraison de hololive, et afficher le contenu facilement avec CLI.
Cet outil utilise les requêtes comme bibliothèque externe. Si vous avez déjà installé pip Vous pouvez répondre avec demandes d’installation pip </ b>
De plus, cet outil n'a rien à voir avec la formule Holorive. Ne surchargez pas le serveur avec plus d’exécution que nécessaire.
Vous pouvez afficher le contenu suivant en exécutant main.py dans le référentiel.
Vous pouvez également ajouter des options lors de l'exécution et vérifier leur contenu avec --help. Par exemple,
---- tous Afficher tous les horaires sauf les vidéos Bilibili, y compris les Holosters ---- fra Afficher les noms des membres en anglais ---- Demain Afficher l'horaire de demain
Etc. peut être utilisé. Ces options peuvent être définies et exécutées en même temps.
Notes Notez où vous êtes coincé dans la production.
Tout d'abord, je m'inquiétais de savoir comment séparer les membres hololive des autres des données obtenues par grattage. En réponse
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
Préparez à l'avance un ensemble de membres de la distribution Hololive Youtube et des membres de la distribution Bilibili. J'ai créé un ensemble de membres à exclure des options, etc., remplacé les éléments grattés qui lui appartenaient par Aucun, et les ai finalement supprimés collectivement dans la notation d'inclusion.
En passant, vous pouvez également l'implémenter dans une liste, mais si vous n'avez pas besoin des numéros d'élément, il est beaucoup plus rapide d'utiliser un ensemble qu'une liste.
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 d'unicodedata renvoie W lorsque le caractère d'argument (un caractère car il s'agit de Char) est un caractère japonais pleine largeur. En conséquence, il était possible d'afficher les lignes dans une ligne uniforme en utilisant des espaces, en tenant compte du nombre de caractères dans le nom.
Je suis content qu'il ait déjà été cloné par certaines personnes. Nous continuerons à améliorer ce référentiel.
Recommended Posts