Cet article est Aikatsu! Calendrier de l'Avent 2019 C'est l'article du 18e jour. Hier, il y avait un article de gecko655 "Aikatsu! Laissez Spotify vous dire les caractéristiques musicales de la chanson".
Je pense que le doubleur est l'un des éléments qui soutiennent la série "Aikatsu!". Aikatsu! Afin de devenir un doubleur, je vais gratter Wikipédia pour savoir combien d'années il sera choisi pour un rôle dans la série "Aikatsu!".
La configuration est grossièrement divisée en deux fonctions.
import re
import requests
from urllib.request import urlopen
from urllib.parse import urlparse
import urllib.request
from bs4 import BeautifulSoup
from collections import OrderedDict
#Obtenez des acteurs de la voix de la page anime de Wikipedia
def get_voice_actor(soup):
list_voice_actors_tmp=[]
replace_list = ['/chanson-', '\[', '\(', "\n"]
split_list = ['→', '、']
for target in [i.text for i in soup.findAll('dd')]:
if target.startswith("voix"):
#Exclusion des chaînes de caractères inutiles
voice_actor = target.replace('voix- ','')
voice_actor = voice_actor.replace(" ","")
for i in replace_list:
m = re.search(i, voice_actor)
if(bool(m)):
voice_actor = voice_actor[0:m.start()]
#Traitement fractionné de plusieurs lancers, comme descendre du plateau
split_flg = False
for i in split_list:
tmp_voice_actor_list = voice_actor.split(i)
if len(tmp_voice_actor_list) > 1:
#Comme il est étendu, il est dupliqué, mais comme il est dupliqué au moment du grattage, la suppression en double est effectuée en une seule fois
list_voice_actors_tmp.extend(tmp_voice_actor_list)
split_flg = True
if split_flg:
continue
list_voice_actors_tmp.append(voice_actor)
return list_voice_actors_tmp
#Obtenez une liste des acteurs de la voix Aikatsu
target_work_characters = ['Aikatsu!Liste de caractères de','Aikatsuスターズ!', 'Aikatsuフレンズ!']
list_voice_actors = []
for character in target_work_characters:
html = requests.get(r'https://ja.wikipedia.org/wiki/{}'.format(urllib.parse.quote_plus(character, encoding='utf-8')))
list_voice_actors.extend(get_voice_actor(BeautifulSoup(html.text, "lxml")))
Ce que je fais, c'est que le nom de l'acteur vocal figure dans les personnages de la série «Aikatsu! C'est un processus pour exclure le suffixe etc. attaché au nom de l'acteur vocal.
En conséquence, la liste suivante sera sortie.
['Sumire Moroboshi',
'Azusa Tadokoro',
'Ayaka Ohashi',
'Tomoyo Kurosawa',
'Manami Numakura',
'Kiyono Yasuno',
'Yuna Mimura',
'Asami Seto',
'Satomi Moriya',
'Shino souterrain',
:
:
'Yu Wakui',
'Misako Tomioka',
'Nami Tanaka',
'Yuri Yamaoka',
'Mitsuki Saiga',
'Sakamoto-kun',
'Shinya Takahashi',
'Takashi Onozuka',
'Nanako Mori']
La distribution du même nom est dupliquée dans le résultat de sortie. En effet, il y a des gens comme Sumire Moroboshi qui lancent plusieurs œuvres en termes de mise en œuvre. La suppression des doublons n'est pas effectuée ici, mais est supprimée lors du traitement ultérieur.
Puisqu'il y a plusieurs personnes pour chaque rôle, comme le licenciement du casting, je le divise et l'étend à List.
#Acquisition des informations sur les acteurs de la voix
def get_cast(html):
soup = BeautifulSoup(html, "lxml")
list_cast=[]
#Boucle en unités d'anime / jeu
for extract_dl in soup.findAll('dl') :
for extract_dl_child in extract_dl.children :
#Exclure les sauts de ligne
if extract_dl_child.string == '\n':
continue
#Puisque l'année est définie dans la première ligne, obtenez pour le réglage
if extract_dl_child.string is not None:
year = extract_dl_child.string
#Obtenez des œuvres et cast
else:
#Boucle pour les travaux
for extract_li in extract_dl_child.findAll('li'):
extract_a = extract_li.find('a')
#Il est possible d'obtenir des données non-type
if isinstance(extract_a,type(None)) == False:
title = extract_a.text
#Obtenez le nom du personnage
title_char = str(extract_li.get_text())
character = title_char[title_char.find('(')+1:title_char.find(')')]
#Année,Nom du titre,Créez 1 donnée avec le nom du personnage.
list_cast.append("{},{},{}".format(year, title.replace(" ",""), character))
return list_cast
#Obtenez des informations sur les doubleurs de Wikipedia
def get_html(target):
sufffix_dict = {"Doubleur": "_(%E5%A3%B0%E5%84%AA)","Acteur": "_(%E4%BF%B3%E5%84%AA)",}
res = requests.get(r'https://ja.wikipedia.org/wiki/{}'.format(urllib.parse.quote_plus(target, encoding='utf-8')))
if res.status_code == 200:
return get_cast(res.text)
#A considérer car il y a des cas où l'ordre n'est pas garanti selon la version de Python
for suffix in OrderedDict(sufffix_dict).values():
print(suffix)
res = requests.get(r'https://ja.wikipedia.org/wiki/{}{}'.format(urllib.parse.quote_plus(target, encoding='utf-8'),suffix))
if res.status_code == 200:
break
return get_cast(res.text)
#Traitement des informations sur les acteurs de la voix
def get_target_carrer(target_work, list_voice_actors):
list_carrer =[]
for target in set(list_voice_actors):
#Obtenez des informations sur les doubleurs de Wikipedia
list_cast = get_html(target)
#Si vous ne pouvez pas obtenir les informations, passez à l'acteur vocal suivant
if len(list_cast) == 0 :
continue
#Acquisition d'une carrière de doubleur à la hauteur du travail cible
#Obtenir le nombre de travaux et les années d'expérience jusqu'au travail visé
cast_year = None
debut_year = None
count_cast_num = 1
for str_cast in sorted(list_cast):
#print(str_cast)
#Obtenez la première année. L'âge est abstrait alors supprimez-le
if not str_cast.split(',')[0].endswith("Âge") and debut_year is None:
debut_year = str_cast.split(',')[0]
#Obtenez l'année du casting pour la première fois dans l'œuvre cible
if str_cast.split(',')[1] == target_work:
cast_year = str_cast.split(',')[0]
#Lorsque l'année de la première distribution de l'œuvre cible est ancienne, passez au doubleur suivant
if cast_year is not None:
target_work_carrer = int(cast_year.replace('Année','')) - int(debut_year.replace('Année',''))+ 1
list_carrer.append("{},{},{},{},{},{}".format(target_work,
target,
debut_year,
cast_year,
str('{}Année'.format(target_work_carrer)),
str('{}l'oeuvre'.format(count_cast_num))
)
)
break
count_cast_num = count_cast_num + 1
return list_carrer
target_works_list = ['Aikatsu!', 'Aikatsuスターズ!', 'Aikatsuフレンズ!']
list_va_carrer = []
for target_work in target_works_list:
list_va_carrer.extend(get_target_carrer(target_work, list_voice_actors))
Ici, à partir du nom de l'acteur vocal, le travail d'animation / de jeu lancé par cet acteur vocal est acquis et trié. L'histoire de l'acteur vocal lors de sa première participation dans la série "Aikatsu!" À partir de son premier travail et le nombre d'œuvres coulées jusqu'à présent sont montrés.
La sortie ressemble à ceci.
['Aikatsu!,Akemi Kanda,l'année 2000,2013,14e année,152 oeuvres',
'Aikatsu!,Ayaka Ohashi,année 2012,année 2012,1 ère année,3 oeuvres',
'Aikatsu!,Mamiko Noto,1998,année 2012,15e année,405 oeuvres',
'Aikatsu!,Hisako Kanemoto,2009,2015,7ème année,209 oeuvres',
'Aikatsu!,Mari Yokoo,1980,2013,34e année,155 oeuvres',
'Aikatsu!,Hiroshi Ienaka,1986,année 2012,27e année,152 oeuvres',
'Aikatsu!,Miki Hase,2010,2014,5ème année,11 oeuvres',
'Aikatsu!,Aya Susaki,2010,2014,5ème année,61 oeuvres',
'Aikatsu!,Nanako Mori,2013,2015,Troisième année,6 oeuvres',
'Aikatsu!,Satomi Moriya,2008,année 2012,5ème année,28 oeuvres',
:
:
'Amis Aikatsu!,Yuri Yamaoka,2009,2018,10e année,66 oeuvres',
'Amis Aikatsu!,Risa Kubota,2015,2018,4e année,26 oeuvres',
'Amis Aikatsu!,Makoto Homura,l'année 2000,2018,19e année,206 oeuvres',
'Amis Aikatsu!,Ikumi Hasegawa,2016,2018,Troisième année,27 oeuvres',
'Amis Aikatsu!,Tomokazu Sugita,1999,2019,21e année,672 oeuvres',
'Amis Aikatsu!,Château de Nakaeko,2014,2018,5ème année,68 oeuvres',
'Amis Aikatsu!,Yuki Kuwahara,2013,2018,6ème année,93 oeuvres']
Quant à la façon de sortir l'histoire de l'acteur vocal, le premier rôle de la distribution est défini comme la première année, et il est soustrait de l'année où il a été lancé pour la première fois dans la série "Aikatsu!".
S'il s'agit d'un nom d'acteur vocal, vous ne pouvez pas choisir un cas comme "XXXX_ (nom d'acteur vocal)", nous l'implémentons donc pour que vous puissiez le récupérer.
En tant que problème, si un acteur comme Rin Arai qui vient de faire ses débuts ou un acteur comme Kaiko Miyama est également populaire, il est différent de Fort Mat de l'acteur général de Wikipédia, alors prenez-le. Il y a un point qu'il n'y a pas. Si vous faites une implémentation qui ramasse autant, il semble qu'il y aura de nombreuses implémentations individuelles, alors j'ai pensé qu'il valait mieux ne pas le faire, mais j'ai pensé qu'il serait préférable de faire une implémentation qui puisse dire qui ne pourrait pas la prendre.
Vous trouverez ci-dessous une liste des résultats ajustés avec Pandas, la sortie et Excel.
import pandas as pd
abc = pd.Series(list_va_carrer)
df = abc.str.split(',', expand=True)
df.columns = ["Titre de l'œuvre", "Nom du doubleur", "Première année", "Année de casting", "Des débuts au casting(Ans)","Des débuts au casting(役数)"]
df.to_csv("aikatsu.csv")
Aikatsu! Calendrier de l'Avent 2019 C'est encore quelques jours libres, alors n'hésitez pas à nous rejoindre!
Recommended Posts