CeVIO AIのインポートファイルの作成

python Python

はじめに

なろう小説などで自作のオーディオブックを作成するにあたり
スクレイピングで単純に取得しただけでは、うまくCevio AI取り込むことが
できなかったので、各章ごとに読み込みファイルに保存する
プログラムを作成した。

Cevio AI とは

CeVIO AIとは、CeVIOプロジェクトにより開発された音声合成ソフトウェアの一種です。
詳しく説明はWikipediaを参照願います。

参考リンク

スクレイピングはここのをページを参考にしました。

概要

今回作成のプログラムの概要を記載します。
・スクレイピングで取得したCSVファイルから「title」単位でファイル抽出する。
・「text」の情報をファイルに出力する。
・制限として、CSVのヘッダが「No」, 「title」, 「url」, 「date」, 「text」で
記載されていること。

実行環境
・anaconda Navigator (anaconda3)
・vs code

ソース

import pandas as pd
import re

def main():
    """メイン処理"""
    #csvファイルの読み込み
    file_name=".\\isekainiotosareta.csv" #ファイルのパスを記載する
    #出力ファイルのディレクトリパスを記載する
    out_dir = ".\\out_dir"
    try:
        #CSVファイルの読み込み
        df_file = pd.read_csv(file_name)
    except IOError as e:
        print("ioerr:",e)
        return -1
    else:
       #index値を取得する
        df_size = df_file.index.stop
        print(df_size)

        #一タイトルごとに取得する
        for idx in range(df_size):
            #print(idx)
            #タイトルを取得する
            str_title = df_file.loc[idx,'title']
            #内容を取得する
            str_text  = df_file.loc[idx,'text']
            #リストに変更する
            str_list = str_text.split("\n")

            #空行を飛ばすため、詰めなおす。
            s_list=[]
            for ss in str_list:
                #空は飛ばす
                if(ss != ''):
                    #ファイルに書き込む時に改行を入れたいのでここで入れる
                    ssb=ss+"\n"
                    #cevio aiがshift-jisなのでUTF-8から返還する
                    #この時に変換失敗した場合は失敗した文字を飛ばす。
                    ss_sji =ssb.encode('cp932', "ignore")
                    s_list.append(ss_sji)
            try:
                print(idx)   
                print(str_title)
                #ファイル名に使用できない文字を削除する
                s_title = "{:04d}".format(idx)+"_"+re.sub(r"[,.!?:;' \"\\]", "", str_title)
                print(s_title)
                f = open(out_dir+'\\'+s_title+'.txt', 'wb')
                f.writelines(s_list)
                f.close()

            except IOError as e:
                print("ioerr:",e)
                return -1

if __name__ == '__main__':
    main()

最後に

ものによって、1タイトルが少ないものもあるので
1000行を1ファイルにまとめたものを作ったほうが
楽な気がしましたので、後日改造したものを
上げたいと思います。

コメント

タイトルとURLをコピーしました