rawdog-過剰なリクエストのないRSSアグリゲーター

叙情的な紹介



Habrahabrからの新しいリソースの最近の出芽に関連して、私は両方のリソースを読むための便利な方法を装備する必要がありました。 もちろん、最初の考えはRSSでした。両方のサイトのエンジンがRSSをサポートしているからです。 ほんのささいなことでした-弱いVPSにインストールできる優れたRSSアグリゲーターを見つけるため(Google Readerの運命はサードパーティのサービスに依存したいという欲求を幾分冷やしたので)。



最初、 Tsyganov_IvanからのヒントがTiny Tiny RSSアグリゲーターにもたらされました。これは本当の「銀の弾丸」のように見えました。 しかし、システム要件に精通していることは私の熱意をいくらか弱めました-神が禁じている256メートルの空いたメモリを備えたマシンに本格的なLAMPを積み上げること、そしてこれは文字通り一人のためのリソースのためですか? さらに、パッケージフォーラムのあからさまな回答へのリンクを含むFAQを知っていたため、最終的にtt-rssに対処する意欲を失いました。



検索の最初のラウンドは失敗しました。代替手段( FeedHQなど )はほぼ同じことを必要としたためです。 必死になって、私は自分が必要とするツールを書き込もうとしており、実際に必要ものに出くわしたときにPythonに適したライブラリ(私には弱点がある)を探し始めました。



RAWDOGというまさにその名前は、著者が執筆時の同様の感情に圧倒されたことを示唆しています。 このユーティリティは、手動またはcron経由で起動するように設計されており、指定できるRSSフィードを解析し、指定したテンプレートに従って出力ファイルに新しい要素を書き込むことができます。



インストールとセットアップ



rawdogはUbuntuリポジトリに存在するため、パッケージの取得は簡単です。 ただし、設定には独自の特性があります。

まず、rawtab呼び出しをcrontabまたはcronに追加する必要があります。 次のようになります。



  rawdog --dir WORKDIR --log /var/log/rawdog/rawdog.log --no-lock-wait --update --write 


ここで、キー--no-lock-waitは、rawdogの2番目のコピーが開始されないようにし、 WORKDIRはユーティリティの作業ディレクトリです。



実際のところ、rawdogは構成ファイルを検索し、すべての一時ファイルを1つの作業ディレクトリ(デフォルトでは〜/ .rawdog)に保持します。 これはワークステーションにとって便利かもしれませんが、通常の慣行に反します。 私と同じように、順序と統一性が好きな場合は、-- dirスイッチを使用して別の作業ディレクトリを指定できます。これにより、作業ディレクトリを/ var / cache / rawdogに送信できます(主なコンテンツはダウンロードされたテープのキャッシュであるため) 。 構成ファイルもそこで検索されるため( --configスイッチを使用すると、追加の構成を指定できますが、メイン構成の検索はキャンセルされません)、シンボリックリンクに置き換えられ、 / etcへのテンプレートを使用しました



構成ファイルのよく文書化された例はWeb見つけることができるので、主なディレクティブの概要を簡単に説明します。





logrotateを構成する



rawdogは通常1日に数回呼び出され、毎回約1キロバイトのログが生成されるため、ログを完全に無効にする( --logスイッチを削除する)か、logrotateを構成することは理にかなっています。 後者の場合、/ etc / logrotate.d /に次のようなものを入れるだけで十分です(ログファイルへのパスを私が選択したと仮定した場合)。

/var/log/rawdog/rawdog.log { weekly missingok rotate 5 compress delaycompress notifempty }
      
      







美をもたらす



Rawdogの組み込みテンプレートは、それほど難しくないにしても、最小限のものであるため、テンプレートファイルを設定することは理にかなっています。 最も重要なのはpagetemplateテンプレートです。これは、スタイルを設定し、必要なスクリプトを接続できるのがその中にあるためです。 デフォルトのページテンプレートを表示するには、次のコマンドを使用できます(私のように作業ディレクトリを移動した場合は、必ず--dir WORKDIRを指定してください)。



  rawdog -s pagetemplate> template.html 




組み込みテンプレートは、同様のコマンドで表示でき、 pagetemplateをテンプレートの名前に置き換えます。 パターン化は、置換を使用した単純な検索を通じて実装されますが、値がない場合にスタブを挿入できる条件演算子があります。 ところで、 define VARNAME VALUEディレクティブ(グローバル)またはdefine_VARNAME = VALUEパラメーター(別のRSSフィード用)を使用して変数を定義できます。



各エントリは、デフォルトでfeed-FEEDID CSSクラスでマークされていることに注意してください。FEEDIDは、上記のパラメーターで指定されたソースIDです。 これにより、さまざまなソースからの投稿に独自のデザインを設定できます(たとえば、タイトルの横にサイトアイコンを表示します)。



テープを個別の問題にグループ化する



簡単に言うと、サブスクリプション、ターゲットファイル、およびデザインの別々のセットを使用して、いくつかの共存するフィードコレクションを比較的簡単に作成できる1つの方法を思いつくことができます。



これを行うには、cron。*上記の呼び出しの代わりに、精神に何かを配置します。



 #!/bin/sh WORKDIRS=/var/cache/rawdog CONFIGS=/etc/rawdog PLUGINS=/usr/share/rawdog/plugins LOGS=/var/log/rawdog for CFG in "$CONFIGS/"*.conf do WORKDIR="$WORKDIRS/"`basename "$CFG" .conf` [ -d "$WORKDIR" ] || mkdir -p "$WORKDIR" [ -f "$WORKDIR/config" ] || ln -s -f "$CFG" "$WORKDIR/config" if [ -d "$PLUGINS" ]; then [ -d "$WORKDIR/plugins" ] || ln -s -f "$PLUGINS" "$WORKDIR/plugins" fi rawdog --dir "$WORKDIR" --log "$LOGS/rawdog" --no-lock-wait --update --write done
      
      





操作の原理は簡単です。/etc/rawdogの* .confファイルに対して、 / var / cache / rawdogに適切な作業サブディレクトリが作成され(必要な場合)、構成ファイルへのリンク自体がその中に配置されます。 一般的なプラグインを含むディレクトリへのリンクがそこに配置されます(そうでない場合)。

利便性を高めるために、 includeディレクティブを使用して* .confファイルに接続することにより、一般設定を別のファイル( / etc / rawdog / configまたは/ etc / default / rawdog )に転送できます。



プラグイン拡張



rawdogは、rawdog作業ディレクトリのpluginsサブディレクトリにあるPythonスクリプトを探します。 多数の既製のプラグイン(特に、複数ページの出力およびRSS形式の出力)は、著者のWebサイトにあります。



All Articles