first commit

master
User 2 years ago
commit 5f9a0c8327

@ -0,0 +1,20 @@
自動で無能ボイスを作成するスクリプトです。
内容自体は二つの機能に分かれており、
tokenをスクレイピングで取得する部分と、
tokenを投げて無能ボイスをgenerateする部分から出来ています。
複雑な処理は自分でも忘れると不安だったので、コメントで詳しく解説したつもりです。
ぶっちゃけtokenを取得する部分は悪用すればニコニコやその他のアカウント大量作成も出来てしまう処理になっています。
使用方法
1. speaktexts.txtをフォルダ内部に作成し、その中に一行毎に話してほしいテキストを入力する。
2. python3 munou_final.pyを実行
必要となるモジュール
requests
mechanize
bs4(BeautiulSoup)
retrying
pip install -r requirements.txt でインストールは出来るはずですを
今後
必要となるか、気力があればコメント追記する

@ -0,0 +1,100 @@
from bs4 import BeautifulSoup
import mechanize
import requests
import time
import random, string
import os
from retrying import retry
def register_submit(mailaddress):
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("https://cloud.voicetext.jp/webapi/api_keys/new")
#オープン
br.select_form(action="/webapi/api_keys/confirm")
#フォーム選択
br["api_key[name]"] = "長谷川亮太"
br["api_key[company]"] = "個人"
br["api_key[email]"] = mailaddress
br.find_control(id="api_key_api_purpose_ids_1").get(id="api_key_api_purpose_ids_1").selected = True
br.find_control(id="api_key_accept_license").get(id="api_key_accept_license").selected = True
br.submit()
#個人情報を適当に
br.select_form(action="/webapi/api_keys")
br.submit(name="commit")
#確定ボタンをsubmit
print("submitted")
@retry
def email_scrape(mailaddress):
token = ""
r = requests.get("https://generator.email/"+mailaddress)
mailtext = r.text
soupject = BeautifulSoup(mailtext,"html.parser")
plist = soupject.find_all('p')
p = [s for s in plist if "VoiceText" in s.text][0].text.splitlines()
#ここのコードの解説。まずfind_allで<p>タグをすべて抽出しています。
#その後、s for s in plistでfor文により配列を一要素ずつまわし、
#if "voicetext" in で部分一致を判定しています。
#s.textでテキストをstringとして取得しています。
#その後、該当したものが配列として帰ってくるので、[0]のもののtextを再度取得してpに代入
#そして最後にsplitlines()をし、文字列を改行でsplitしています。
token = p[p.index("です。") - 2 ]
#「です。」の完全一致を検索、それに-2する形でtokenを抽出。
print(token)
return token
def main():
token = ""
if os.path.exists("token.txt"):
print("token.txt was found")
try:
with open("token.txt") as f:
token = f.read().rstrip("\n")
except Exception as e:
print(e)
else:
print("No exists token.txt get token")
randomtext = ''.join([random.choice(string.ascii_letters + string.digits) for i in range(8)])
mailaddress = randomtext + "soranoirohanani@ncpine.com"
print(mailaddress)
#メアドを適当に
register_submit(mailaddress)
print("https://generator.email/"+mailaddress)
#generator.emailのURLを表示
token = email_scrape(mailaddress)
try:
with open("token.txt",mode="w") as f:
f.write(token)
except Exception as e:
print(e)
try:
with open("speaktexts.txt") as f:
speaktexts = f.readlines()
except Exception as e:
print(e)
for speaktext in speaktexts:
filename = speaktext.rstrip("\n") + ".wav"
print(filename)
r = requests.post(url="https://api.voicetext.jp/v1/tts",params={"text":speaktext,"speaker":"show","pitch":"150"},auth=(token,""))
try:
with open(filename, 'xb') as saveFile:
saveFile.write(r.content)
except Exception as e:
print(e)
main()

@ -0,0 +1,4 @@
bs4
mechanize
requests
retrying
Loading…
Cancel
Save