Linux用のスクリプトを作成し、Habrからmp3ファイルに最新の記事を読み込みます。

私たちの多くは、もう少し時間を節約したいと思っています。 これを行う技術の1つはtts(テキストから音声)です。コンピューターがテキストを読み上げるときです。 同意します。料理、アパートの掃除、靴ひもの服装または結束をしている間、Habrの最新の記事をすべて聞いてみるといいでしょう。 目と手が忙しく、脳と耳がほとんど自由になっている瞬間に。

最近、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




















All Articles