HabrahabrサンドボックスのAtomフィード

ご存知のように、可能な限り定期的なトピックを読む最も便利な方法の1つはrss-feedです。 数日前、rozboris habrayuzerは、お気に入りのrssアグリゲーターでhabr.ru/newを読んでいるという事実を嘆き、 habrahabrサンドボックスに表示されるものを確認するには、少なくともお気に入りのブラウザーを使用する必要があります。 サンドボックスフィードを作成するというアイデアは、私たちにとって魅力的でした。



そして、私はスクリプトを書いて、それを購読すると、サンドボックスから最新の投稿を読むことができます。



何を書くの?



多くのオプションがあります:python、perl、php。 私は本当にPythonで書くのが好きですが、フィードが人気がある場合、興味のあるhabrausersが自分のサーバーにスクリプトを展開するのが簡単になるため、phpを選択しました(私の意見ではphpがより一般的です)。



仕組み



すべてがシンプルです。 アグリゲーターがスクリプトにアクセスすると、後者は次の場合にサンドボックスの最初のページから投稿を更新します:データベースに単一の投稿がない場合(スクリプトが初めて実行された可能性がある場合)、または最後の更新から20分以上経過した場合。



更新は次のとおりです。スクリプトはトピックを解析し、ヘッダー、リンク、投稿本文、公開時間を強調表示します。 公開日時は、Atomタイムスタンプに変換され(はい、フィードはatomプロトコルを使用します )、データベースに同じタイムスタンプを持つトピックがない場合、そこに追加されます。



その後、データベース内のトピックからxmlが形成され、ユーザーに返されます。



ささいなこと



自分でスクリプトを実行するには、コードにmysqlへのアクセスパラメーターを入力する必要があります(名前はスクリプト内で構成できるテーブルが1つだけ必要です)。 このマジックファイルに同時にアクセスする可能性のある問題に悩まされないように、スクリプトの隣のファイルではなくデータベースを使用することにしました。たとえば、1つのスクリプトがデータベース内の投稿を更新し、他のスクリプトがそこから読み込もうとします。



さらに、Habrのルールに従って、Habrのコンテンツを読み取るボットは、特定のルールに従う必要があります。特に、ボットの所有者に関する情報を含む正しいユーザーエージェントが必要です。 そのため、 プロジェクトの簡単な説明、連絡先、ソースコードへのリンクを 記載したページを作成しました



それでも自分でスクリプトを実行することに決めた場合は、 $user



連絡先情報を入力してください。質問がある場合は、Habrから連絡できます。



PS



スクリプトは機能していますが、まだ生です。 私の作品がお役に立てば幸いです。 ライセンス-MITライセンス。



ええ、はい、実際には、フィードへのリンクです!



更新:空き時間に、コメントをありがとう、フィードが仕様に一致するようにいくつかの不正確さを修正します!



All Articles