Letztes Mal gelang es, den Aozora Bunko langsam mit Python zu lesen. Da ich es jedoch ohne Berücksichtigung von Rubin gelesen habe, gab es ein Problem, dass die Lesegenauigkeit ziemlich niedrig war. Dieses Mal werde ich diesen Punkt korrigieren
Was ich machen will; was ich vorhabe zu tun ** Wenn Sie die URL von Aozora Bunko eingeben, wird sie nach der Registrierung im Lesewörterbuch langsam vorgelesen **. Daher erstellen wir den folgenden Ablauf
In Aozora Bunko gibt es eine Seite namens Buchkarte, von der aus Sie mit dem Text zur Webseite springen und verschiedene Dateien herunterladen können.
Dieses Mal möchte ich zip und xhtml aus den rot eingeschlossenen Dateien, also werde ich BeautifulSoup4 verwenden, um sie zu erhalten.
aozora_urlsplit.py
from bs4 import BeautifulSoup
import requests
import re
def aozoraurl(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.select('table.download a[href*=".html"]')
htmlurl_rel = str(table).split('\"')[1].replace("./", "/")
#Ermitteln Sie den relativen Pfad von XHTML
table2 = soup.select('table.download a[href*=".zip"]')
zipurl_rel = str(table2).split('\"')[1].replace("./", "/")
#Ruft den relativen Pfad der Zip-Datei ab
urlsplit = re.sub("/card[0-9]*.html", "", url)
htmlurl = urlsplit + htmlurl_rel
zipurl = urlsplit + zipurl_rel
aozoraurllist = [htmlurl, zipurl]
#Schneiden Sie unter der Karte der eingegebenen URL aus und hängen Sie sie an den relativen Pfad darüber an
return aozoraurllist
if __name__ == '__main__':
print(aozoraurl("https://www.aozora.gr.jp/cards/000879/card85.html"))
Wenn Sie die URL der Seite der Buchkarte werfen, wird die Liste von [XHTML-URL, Zip-URL] zurückgegeben.
Erstellen Sie eine Rubinliste aus XHTML
aozora_rubylisting.py
from bs4 import BeautifulSoup
import requests
import re
import jaconv
def aozoraruby(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
_ruby = soup.select("ruby")
_rubylist = []
for i in _ruby:
_ruby_split = re.sub("<[/a-z]*>", "", str(i)).replace(")", "").split("(")
_rubylist.append(_ruby_split)
for index, item in enumerate(_rubylist):
_rubylist[index][1] = jaconv.kata2hira(str(item[1]))
return _rubylist
if __name__ == '__main__':
print(aozoraruby("https://www.aozora.gr.jp/cards/000879/files/3813_27308.html"))
Da SofTalk nur in Hiragana gelesen und registriert werden kann, wird Katakana in Hiragana konvertiert.
Ich habe dieses Mal zum ersten Mal enumerate
verwendet und es ist klug und gut.
Wie beim letzten Mal werde ich von Ich möchte den Text von Aozora Bunko in Python - AI Artificial Intelligence Technology ausleihen.
Wenn Sie die URL auf die Funktion "download ()" werfen, wird der Text von der Funktion "convert ()" zurückgegeben.
Die Funktion main ()
wird nicht verwendet, setzen Sie sie also unter if __name__ == '__ main __':
aozora_yukkuri.py
import subprocess
import os
from aozora_urlsplit import aozoraurl
from aozora_rubylisting import aozoraruby
from aozora_honbun import download, convert
os.chdir(os.path.dirname(os.path.abspath(__file__)))
urllist = aozoraurl("https://www.aozora.gr.jp/cards/000879/card3813.html")
_ruby = aozoraruby(urllist[0])
_honbun = convert(download(urllist[1])).splitlines()
_start = "start SofTalk.exe Pfad"
_pron = "/P:"
_speed = "/S:120"
_word = "/W:"
for j in _ruby:
_command_ruby = [_start, _pron + j[1] + "," + j[0] + ",True"]
print(_command_ruby)
subprocess.run(' '.join(_command_ruby), shell=True)
for i in _honbun:
_command = [_start, _speed, _word + i]
subprocess.run(' '.join(_command), shell=True)
Fügen Sie den Text für jeden Zeilenumbruch in die Liste ein und führen Sie ihn von der Wörterbuchregistrierung bis zum Lesen des Textes durch.
Wenn Sie Ihre Stimme langsam ändern möchten, fügen Sie / M:
oder / MN:
zu _command
hinzu (Referenz [^ dai1kai])
Der Body stammt aus txt (zip) und der Ruby aus der XHTML-Version, da ich den vorhandenen Code verwenden möchte. Ich denke, dass der Text in Zukunft mit der XHTML-Version vereinheitlicht werden sollte (da es ziemlich schwierig zu sein scheint, Ruby aus txt zu entfernen).
In Aozora Bunko scheint es, dass schwieriges Kanji wie das folgende Bild als Bild angezeigt wird. Es ist schwierig, dies zu lesen, daher ist es gut, die Wörterbuchregistrierung zu überspringen und sie im Text als Hiragana zusammenzufassen. Diesmal habe ich es nicht verarbeitet, weil ich dachte, es wäre gut, es bis zu einem gewissen Grad zu lesen
Das fragliche Kanji
[^ dai1kai]: Lassen Sie uns mit Python langsam sprechen https://qiita.com/Mechanetai/items/78b04ed553cce01fa081