Lostfilmのbash上のパーサーRSS:RSSサーバーのスペアモード、ダウンロードを確認

良い一日!

かつて、 このトピックのおかげで、Lostfilmの優れたパーサーが作成されました。 次に、Lostfilmのリンクの形式の変更、フィードの更新のチェックの追加、ダウンロードのチェックに関連するスクリプトの独自の改良点を共有したいと思います。



まず、RSSサーバーの負荷を軽減するために、 wgetを使用してフィードを要求する場合、「If-Modified-Since:」を使用する必要があります。 次に、更新がない場合、テープ全体をダウンロードして処理しません。 このアプローチにより、サーバー(およびコンピューターの負荷)の負荷が軽減されます。

次のバージョンのコマンドを使用します。



# If-Modified-Since

lastmod="$( grep -m 1 Last-Modified response.out )"



header="If-Modified-Since:"${lastmod#*:}









response.outファイルには、最新のRSSサーバー応答が含まれています。

最後のサーバー応答で見つかったLast-Modified行の$ {lastmod#*:}を使用して、「:」に不要なすべてを切り取りました。



タイトルの準備ができました。必要なシリーズを検索するためのフィルターを作成します。



movies='House.MD|IT.Crowd|Persons.Unknown|Legend.of.the.Seeker|Leverage|Warehouse.13|Futurama'



quality='\.720p\.|\.HD\.|Persons.Unknown|Legend.of.the.Seeker|IT.Crowd'







映画には、ダウンロード可能なテレビ番組のリストが含まれています。 しかし、Lostfilmでは通常2つのバージョンの品質でリリースされ、私は個人的にすべてを高品質でダウンロードしようとします。 したがって、追加のフィルター品質が必要です 。 ただし、すべてのシリーズが720pまたはHDになったわけではないので、フィルターの最後に追加して、品質チェックにも合格できるようにします。



フィルターが完成したら、処理テープに移動します。 最初に述べたトピックでは、フィルターの正規表現の準備とwgetコマンドのオプションについて詳しく説明しているため、省略します。

コマンドは準備されたヘッダーを使用し、サーバーの応答はresponse.outにすぐに保存されます。 ところで、response.outが存在しない場合(最初の実行または強制的な更新)、何も悪いことは起こりません。



wget -vS -O - --header="$header" www.lostfilm.tv/rssdd.xml -o response.out | grep -ioe "http.*torrent" | egrep -i "$movies" | egrep "$quality" | while read link;

do

# "&" "&"

link="${link/&/&}"







便宜上、トレント名を個別に保存します(すべてを「&」にカットします)。 ダウンロードしたファイルを確認し、torrentファイルを保存するために必要になります。

name="${link#*&}"







次に、ダウンロードしたディレクトリ内のファイルの存在を名前で確認します。 そのようなファイルがない場合は、リンクをダウンロードし、この名前で保存します。 次に(オプションで)クライアントの自動読み込みディレクトリにコピーします。

# ./Downloaded,

if [ ! -e Downloaded/$name ]

then

wget -q --header "Cookie: uid=123456; pass=xxxxxxxxxxxx; usess=xxxxxxxxxxx" $link -O "Downloaded/$name"

cp "$name" "$path_to_your_autoload_dir/$name"

fi

done







Lostfilm のCookieは、Googleによって任意のブラウザーから破られる可能性があり、 usesパラメーターは、 www.lostfilm.tvのプロファイルにあります。



これが私のスクリプトの完全版です。



 #!/bin/bash cd $your/rssdownloader/dir #   If-Modified-Since lastmod="$( grep -m 1 Last-Modified response.out )" #  header header="If-Modified-Since:"${lastmod#*:} #   movies='House.MD|IT.Crowd|Persons.Unknown|Legend.of.the.Seeker|Leverage|Warehouse.13|Futurama' #   quality='\.720p\.|\.HD\.|Persons.Unknown|Legend.of.the.Seeker|IT.Crowd' wget -vS -O - --header="$header" http://www.lostfilm.tv/rssdd.xml -o response.out | grep -ioe "http.*torrent" | egrep -i "$movies" | egrep "$quality" | while read link; do link="${link/&/&}" name="${link#*&}" #     ./Downloaded,   if [ ! -e Downloaded/$name ] then wget -q --header "Cookie: uid=123456; pass=xxxxxxxxxxxx; usess=xxxxxxxxxxx" $link -O "Downloaded/$name" cp "Downloaded/$name" "$path_to_your_autoload_dir/$name" fi done
      
      





ご清聴ありがとうございました!

PS:コードが理想からほど遠いこと認識しています。改善のためのヒントを喜んで受け入れます!



更新:今、すべての修正を加えて、このスクリプトをRTMと呼ぶことができると思います。 それを思い起こさせることに参加してくれたみんな、特にGreyCatの詳細な説明に感謝します!



更新2:テープのダウンロードに問題がある場合、 wgetは何度か必要な行を提供します。 したがって、キー「-m 1」を使用して、最初に見つかったオプションのみを使用します(古いテープを再度最大ダウンロードします)。

lastmod="$( grep -m 1 Last-Modified response.out )"






All Articles