Home | First | Prev | Next | Last |
$ pandoc -t plain -o テキストファイル odtファイル最初、unoconv での変換のように odt に忠実には変換できなかったので、プログラム内で、テキストファイルの整形をしましたが、次に
$ pandoc -t plain --wrap=none -o テキストファイル odtファイルと、行の折返しを無効にしたらうまくいきました。オープンドキュメントからテキストファイルへの変換は unoconv を pandoc に置き換えることができ、unoconv の警告メッセージが出なくなってすっきりしました。
$ youtube-dl --write-sub --sub-lang ja --skip-download (動画の URL)として、字幕データだけをダウンロードしました。
$ ffmpeg -i (動画ファイル) -vf subtitles=(サブタイトルファイル) (動画+字幕・ファイル)
$ ffmpeg -i (動画ファイル) -vf "subtitles=(サブタイトルファイル):force_style='Alignment=2,OutlineColour=&H100000000,BorderStyle=1,Outline=2,Shadow=0,Fontsize=32'" (動画+字幕・ファイル)
Name スタイル名の指定 Fontname フォントの名前 Fontsize フォントのサイズ(単位・ピクセル) (色の指定) PrimaryColour フォントの色、指定しなければ「白」 SecondaryColour フォントの色(カラオケモード用?) OutlineColour &H100000000 で「黒」 BackColour 影の色 (フォントの装飾) Bold -1 is bold, 0 is regular Italic [-1 or 0] Underline [-1 or 0] Strikeout [-1 or 0] ScaleX 横に伸ばす(単位・パーセント) ScaleY 縦に伸ばす(単位・パーセント) Spacing 文字間隔(単位・ピクセル) Angle 文字の回転 (字幕の表示) BorderStyle 1=Border+Shadow, 3=Pure color background 1 を指定すると文字にボーダーと影がつく。背景は透明 3 を指定すると背景が OutlineColour になる Outline フォントアウトラインの太さ [0, 1, 2, 3, 4] Shadow フォントの影の濃さ [0, 1, 2, 3, 4] (字幕の位置) Alignment 1 左寄せ、2 中央寄せ、3 右寄せ。画面上部に表示する場合は 5, 6, 7 のいずれかを、画面中央の場合は 9, 10, 11 のいずれかを選ぶ MarginL 左端からのマージン(単位・ピクセル) MarginR 右端からのマージン(単位・ピクセル) MarginV 上端からのマージン(単位・ピクセル)オプションは豊富ですが、そのうちのいくつかの設定だけで読みやすい字幕を作ることができました。
$ pdf2txt.py -V -n -o OUTPUT.txt INPUT.pdf-V オプションは縦書きに対応させるものです。-n はレイアウト分析を無効にするオプションで、改行のないファイルを吐き出しました。
$ pdf2txt.py -V -n -t html INPUT.pdf | pandoc -t plain --wrap=none -o OUTPUT.txtページごとに区切られたテキストファイルを得ることができましたので、それを整形して、希望通りのテキストファイルを得ることができました。ただ、漢字にルビがついている場合、それが漢字の前にかな文字で入ったので、手作業で処理する必要がありました。
from pdfminer.high_level import extract_text text = extract_text('test2.pdf') print(text) # コンソールに表示 with open('result.txt','w') as out: out.write(text) # ファイルに保存
<meta name="viewport" content="width=device-width, initial-scale=1.0">というラインを加え、スタイルシートに
@media (max-width: 768px) { div.top_menu { display: none; } div.pull_down_menu { display: contents; } }などと指定すると、スクリーンサイズが指定したサイズより小さくなると、トップメニューが消えて、代わりにプルダウンメニューが表示されるという仕組みになっています。
\@media (max-width: 768px) {としてやる必要がありました。
m = re.search("([A-Z][A-Z])$", line) if m: short_name = m.group(1)上記を書き換えると次のようになります。
if m:= re.search("([A-Z][A-Z])$", line) short_name = m.group(1)正規表現で特定の文字列を取り出すときに使うとプログラムが読みやすくなって便利です。
$ unzip INPUT.odtとすると、さまざまなファイルに展開されます。その中で必要なものは content.xml にありましたので、次からは
$ unzip INPUT.odt content.xmlとして、content.xml だけを取り出すようにしました。
with open("content.xml") as inp: text = inp.read() lines = text.split("</text:p>")としました。それから、ルビが <text:ruby-text> と </text:ruby-text> に挟まれているので、これを全角の括弧「(」と「)」に変換してから「<」と「>」で囲まれたタグ部分を消去しました。Python コードは次の通りです。
for line in lines: line = re.sub("<text:ruby-text>","(",line) line = re.sub("</text:ruby-text>",")",line) line = re.sub("<[^>]+>","",line)
その国の状況は、山上憶良(やまのうえのおくら)が歌った「貧窮問答歌(ひんきゅうもんどうか)」のようであった。と表示されるようになりました。
from mutagen.mp3 import MP3 audio = MP3("sample.mp3") duration = audio.info.length
from pydub import AudioSegment audio = AudioSegment.from_file("sample.mp3", "mp3") duration = audio.duration_seconds
rate = audio.frame_rate # サンプリングレート(Hz) channel = audio.channels # チャンネル数(1:mono, 2:stereo)
audio = AudioSegment.from_file("sample.wav", "wav") audio.export("sample.mp3", format="mp3", bitrate="192k")ファイル形式の変換には ffmpeg を使っているようです。wave ファイルのフレームレートの変更は次のようにしました。
audio = AudioSegment.from_file("sample.wav", "wav") audio2 = sound.set_frame_rate(22050) audio2.export("sample2.wav", format="wav")
from mutagen.easyid3 import EasyID3 tags = EasyID3("sample.mp3") tags['album'] = "The Greates Hits in '70" tags['artist'] = "The Penguins" tags['date'] = "2022" tags['length'] = "1475292" tags['title'] = "Flying Penguin" tags.save()ちゃんとタグが書き込まれたかどうかは次で確かめました。
print(tags.pprint())けっこう簡単だったので、今まで lame で wav から mp3 に変換し、タグをつけるようにしていたプログラムを pydub で変換、mutagen でタグづけするように書き換えてみました。ところが、pydub の場合、進捗状況が表示されないので、もとの lame を使う方式にもどしました。ただし、lame は 6年前から開発が止まっているので、今後も使えるのかどうか心配です。lame の代替を捜してみようと思っています。
$ sox sample.wav sample.mp3で wave ファイルから mp3 ファイルを作ることができました。lame や ffmpeg よりうんと早くできました。次に、
$ sox -V3 sample.wav sample.mp3としてみましたが、情報が示されるだけで進捗は表示されませんでした。
$ soxi -D sample.wavで出来ました。
result = subprocess.check_output(["soxi","-D","sample.mp3"]) duration = int(float(result))
$ play sample.mp3 trim 0 10
import eyed3 audio = eyed3.load("sample.mp3").info duration = int(audio.time_secs)
size_bytes ファイルのサイズ bit_rate ビットレート bit_rate_str ビットレートを文字列で mode モード(MONO/STEREO) sample_freq サンプル周波数
import eyed3 audio = eyed3.load("sample.mp3").tag audio.album = "The Greates Hits in '70" audio.artist = "The Penguins" audio.recording_date = "2022" audio.title = "Flying Penguin" audio.save()記入したタグの確認は次のようにしました。
import eyed3 audio = eyed3.load("sample.mp3").tag print(audio._getAlbum()) print(audio._getArtist()) print(audio._getRecordingDate()) print(audio._getTitle())
import audioread with audioread.audio_open("sample.mp3") as audio: duration = audio.duration print(duration)
import audioread with audioread.audio_open("sample.mp3") as audio: channels = audio.channels samplerate = audio.samplerate print(duration) print(samplerate)他のモジュールと違って with .... as 書式を使いますので、プログラムの書き方に注意が必要でした。
import time s = time.strftime('%H:%M:%S', time.gmtime(1200)) print(s)
$ /usr/lib/mozc/mozc_tool --mode=config_dialog $ /usr/lib/mozc/mozc_tool --mode=dictionary_tool
[Desktop Entry] Name=Mozc Dictionary Tool Exec=/usr/lib/mozc/mozc_tool --mode=dictionary_tool Terminal=false Type=Application Categories=System;Utility; StartupWMClass=mozc.dict.config
USER@penguin:~$というプロンプトが出ましたので、
USER@penguin:~$ sudo apt update USER@penguin:~$ sudo apt upgradeを実行してみました。ディストリビューションは debian bullseye であることが分かり、ファイルが最新のものに更新されました。sudo を使うときパスワードはいりませんでした。
USER@penguin:~$ sudo apt install sl蒸気機関車がターミナルの右から左へ走るのが見えました。これは、最初から入っているとおもしろいと思いました。
USER@penguin:~$ sudo apt install mcこれは、sudo でも動き、エディタもついていますので、設定ファイルなどを書き換えるのにとても便利でした。エディタの mcedit は単体でも使え、vim よりも使いやすいので重宝しました。
USER@penguin:~$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" USER@penguin:~$ source /etc/default/locale USER@penguin:~$ sudo apt install fcitx5-mozc USER@penguin:~$ sudo -e /etc/environment.d/fcitx5.conf
GTK_IM_MODULE=fcitx5 QT_IM_MODULE=fcitx5 XMODIFIERS=@im=fcitx5 GDK_BACKEND=x11IM の自動起動のため、次のようにしました。
echo "/usr/bin/fcitx5 &" >> ~/.sommelierrc
USER@penguin:~$ im-config USER@penguin:~$ fcitx5-configtool USER@penguin:~$ /usr/lib/mozc/mozc_tool --mode=config_dialogを使って IM に fcitx5 が使われているかどうか、fcitx5 で mozc が使われているか、そして mozc の設定が大丈夫かなどを確認しました。私はデフォルトの設定のまま使っていますので、CTRL + SPACE で英語と日本語の切り替えをしました。IM が使えなくなったときは、Fcitx5 のアイコンをクリックするか、ターミナルで
USER@penguin:~$ fcitx5 -r &とすれば、できるようになりました。
USER@penguin:~$ python3 -m http.server --bind localhost 8000 --cgiとするだけで、ターミナルを閉じないかぎり、コマンドを入れたディレクトリー上で cgi も使うことができる localhost が動きました。ただし、cgi プログラムは cgi-bin ディレクトリーに置く必要がありました。また、cgi プログラムでファイルを開くとき、ファイルを絶対パスで指定する必要がありました。cgi プログラムには
USER@penguin:~$ chmod +x cgi-bin/program.cgiなどと、ターミナルで実行属性をつけておくのを忘れないようにしました。
http://localhost:8000/cgi-bin/program.cgiなどとして cgi プログラムを動かしました。Linux 側にブラウザをインストールする必要はありませんでした。Linux ターミナルを起動して localhost を実行したあとは、ブラウザからすぐにウェブアプリを実行でき、とても便利です。
USER@penguin:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1と指定して、python というコマンド名で python3 が動くようにしました。
<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-epub+zip"> <comment>epub file</comment> <icon name="application-epub+zip"/> <glob-deleteall/> <glob pattern="*.epub"/> </mime-type> </mime-info>そしてこれを
user-extension-epub+zip.xmlのファイル名で保存しました。
$ update-mime-database ~/.local/share/mime無事にサムネールを変更することができました。アイコンの拡張子 .svg や .png などは付けなくても大丈夫でした。
$ sudo apt install gettext python3-pil python3-gi gir1.2-gtk-3.0 $ git clone https://github.com/flozz/cover-thumbnailer.git $ cd cover-thumbnailer/ $ sudo ./install.sh --installインストール後は、アプリケーション・メニューの「設定」の中に Cover Thumnailer を見つけて実行しました。
Home | First | Prev | Next | Last |