最近、Habrの最新記事をすべてmp3に転送して、聞くことができるようにするスクリプトを書きました。 少し変更することで、mp3に書き込む代わりに他のサイトから記事を受け取ることができ、すぐにコンピューターで記事を話すことができます。また、スクリプトは、Linuxコンソールを介してrssを操作するかなり簡単な方法を実装します。
最初から、Linuxではttsを使用するのは難しいため、Winバージョンをvineで実行することを警告します。
スクリプトの場合、wineをインストールし、ttsが機能するためのAPIを指定する必要があります。ファイルには、Spchapi.exeなどの名前を付ける必要があります(Windowsとそのコンポーネントを使用するライセンスがあります^ _ ^?)。 その後、音声用のWindowsエンジンを見つけて設定します。たとえば、Digaloの試用版を試すことができます。
すべてが正しく設定されているかどうかを確認するには、何らかのリーダーを実行する必要があります。 その後、トーカーサイトにアクセスする場合は、Govorilka CPもダウンロードすることを忘れないでください。GovorilkaCPはスクリプトを介して起動されます。
ワイン、Spchapi.exe、音声エンジンをインストールし、Govorilka CPをダウンロードしました。
これで、スクリプトに直接移動できます。
最初に作業ディレクトリを作成する必要があります。〜/ rss2mp3 /を使用します。自由に振動させることができます。
まず、準備されたディレクトリを入力します
$ cd ~/rss2mp3/
知っているように、rss habraはhabrahabr.ru/rss/mainにあります
それからダウンロードします。
$ wget habrahabr.ru/rss/main -O rssindex.tmp
既に読み込まれたリンクが保存されるファイル:
$ touch rssold.tmp
RSSからの投稿へのすべてのリンクを取得します。
$ cat rssindex.tmp | grep '' | sed 's///g;s/<\/link>//g;s/ *//g' > rss.tmp
:
$ comm rssold.tmp rss.tmp -13 | sed 's/\t*//;s/ *//'> rsslinks.tmp
.. rsslinks.tmp
:
$ comm rssold.tmp rss.tmp | sed 's/\t*//;s/ *//' > rssold.tmp
rsslinks.tmp :
$ for a in $( cat rsslinks.tmp | tr "\r\n" " ");
do
:
$ wget $a -O rsshtm.tmp;
html .
$ cat rsshtm.tmp | sed -n -e '//, // p' | html2text -nobs > rsstext.tmp
, ( ).
html2text , .
, govorilka cp wine /home/psysonic/gvrlcp.exe, .. !
:
$ wine /home/psysonic/gvrlcp.exe -s70 -f rsstext.tmp -TO rsstmp.wav
3, . ( ?)
$ lame -V0 rsstmp.wav "$(head -1 rsstext.tmp | sed 's/\*//g' | iconv -f cp1251).mp3"
.
done
, .
:
cd ~/rss2mp3
wget habrahabr.ru/rss/main -O rssindex.tmp
touch rssold.tmp
cat rssindex.tmp | grep '' | sed 's///g;s/<\/link>//g;s/ *//g' > rss.tmp
comm rssold.tmp rss.tmp -13 | sed 's/\t*//;s/ *//'> rsslinks.tmp
comm rssold.tmp rss.tmp | sed 's/\t*//;s/ *//' > rssold.tmp
for a in $( cat rsslinks.tmp | tr "\r\n" " ");
do
wget $a -O rsshtm.tmp;
cat rsshtm.tmp | sed -n -e '//, // p' | html2text -nobs > rsstext.tmp
wine /home/psysonic/gvrlcp.exe -s70 -f rsstext.tmp -TO rsstmp.wav
lame -V0 rsstmp.wav "$(head -1 rsstext.tmp | sed 's/\*//g' | iconv -f cp1251).mp3"
done
Ps .
upd