叙情的な紹介
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で見つけることができるので、主なディレクティブの概要を簡単に説明します。
- maxarticles Nを使用すると、結果リボンの長さを設定できます(1ページの出力で、不便な場合があります)。
- maxage Tは、時間間隔がフィードテープに表示されるレコードを示します。
- expireage Tは、元のRSSフィードで消えるエントリの残り時間を設定します。 この間隔がmaxageより小さい場合、頻繁に更新されるテープの場合、通常の期限が切れる前に、古いエントリが結果から消えます。
- pagetemplate FILEPATHおよびitemtemplate FILEPATHを使用すると、ページ全体のテンプレートファイルと個々のレコードのテンプレートファイルをそれぞれ指定できます。 デフォルト( default )では、単純な組み込みテンプレートが使用されます。
- outputfile FILEPATH-出力結果が書き込まれる場所。 この静的ページをレンダリングするためにWebサーバーをセットアップすることは、この記事の範囲外に置くことをお勧めします(たとえば、lighttpdを使用します)。 唯一のことは、このファイルがrawdogに書き込みアクセス権を持っていることを確認し(ユーティリティがroot権限でcronを介して実行されている場合は問題ではない)、Webサーバーで読み取りアクセス権を持っていることです
- フィード間隔URL [params]ディレクティブを使用すると、指定した間隔で表示するRSSフィードを追加できます(呼び出しは通常cronを介して行われるため、rawdogは以前に呼び出された場合、「廃止されていない」フィードを単に無視します)。 パラメーターの中にはid (以下)と特定のフィードにアクセスするためのプロキシサーバーを設定できるhttp_proxyがあります(TorやRosKomKatokのもとにあるサイトからRSSフィードを集約するなど、奇妙なものが必要な場合)。
- include FILEPATHを使用すると、別の構成ファイルを含めることができます。
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サイトにあります。