SSブログ
RSS [RSS1.0] [RSS2.0]
共謀罪を含む改悪組織犯罪処罰法は
【「共謀罪」法 衆参両院議員の投票行動(東京新聞 2017/6/16)】

自分宛のツイートのJSONデータをRSSフィードに変換する(GAEを使う)

 Thunderbirdでツイートを見るようにしてから、自分宛のツイート(mentions)はツイッター公式のメール通知を利用していた。しかし、そのメール通知は機能しないことがあるようである。私宛の返信に気付かないまま放置してしまった(古いツイートなので私から返信しませんがご容赦くださいm(_ _)m)。ツイッター公式のメール通知が信用できないのなら、自分で作るしかない。しかし、私にメール通知を作る能力は無い。そこで、【Twitterで取得したユーザーのJSONデータをRSSフィードに変換する(GAEを使う)】と同様に、RSSフィードを作ることにした。

 自分宛のツイートを取得するためにURLなどの情報は【GET statuses/mentions_timeline | Twitter Developers】に載っている。JSONデータを確認したら、【Twitterで取得したユーザーのJSONデータをRSSフィードに変換する(GAEを使う)】で使ったユーザータイムラインの情報(参照)と同じだった。それならば、【Twitterで取得したユーザーのJSONデータをRSSフィードに変換する(GAEを使う)】のスクリプトをほとんどそのまま使える。あっさりと作れた。

 phpファイルの記載は次のとおり。

<?php
header("Cache-Control: max-age=0");

$listcount = "20";
$name = "自分のアカウント(例:self7777)";

require_once("twitteroauth-master/twitteroauth/twitteroauth.php");
date_default_timezone_set('Asia/Tokyo');

$consumerKey = "xxxxxxxxxxxxxxxxxxxxxx";
$consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$accessTokenSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$connection = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);

$request = $connection->OAuthRequest('https://api.twitter.com/1.1/statuses/mentions_timeline.json', "GET", array("include_entities"=>"true", "count"=>$listcount));

$results = json_decode($request);

//var_dump($results);

    echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
    echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' . "\n";
    echo '<channel>'. "\n";
    echo '<atom:link href="http://アプリケーション名.appspot.com/' . '" rel="' . $name . '" type="application/rss+xml" />' . "\n";
    echo '<title>RSS (to @' . $name . ")</title>\n";
    echo '<link>' . 'https://twitter.com/' . $name . '</link>' . "\n";
    echo '<description>ツイッター公式のメール通知がちゃんと機能しないので作成。</description>' . "\n";
    echo '<lastBuildDate>';
    foreach ($results as $key => $val) {
        echo date('D, d M Y H:i:s +0900', strtotime($results[$key]->created_at));
        break;
    }
    echo '</lastBuildDate>' . "\n";
    echo '<language>ja</language>' . "\n\n";
    foreach ($results as $key => $val) {
    echo '<item>' . "\n";
    echo '<link>' . 'https://twitter.com/' . $name . '/status/' . $results[$key]->id_str . '</link>' . "\n";
    echo '<guid isPermaLink="true">' . 'https://twitter.com/' . $name . '/status/' . $results[$key]->id_str . '</guid>' . "\n";
    echo '<pubDate>' . date('D, d M Y H:i:s +0900', strtotime($results[$key]->created_at)) . '</pubDate>' . "\n";
    echo '<title>' . "\n" . htmlspecialchars($results[$key]->text) . "\n" . '</title>' . "\n";
    echo '<description><![CDATA[' . "\n";
    echo $results[$key]->text;
    echo "\n" . ']]></description>' . "\n" . '</item>' . "\n";
    }
    echo '</channel>' . "\n" . '</rss>' . "\n";

?>

 「$listcount = "20";」の所に取得したいツイートの数を指定する。「$name = "自分のアカウント(例:self7777)";」の所は自分のアカウントを記入する。私の場合はself7777。consumerKey、consumerSecret、accessToken、accessTokenSecret は全て記入する。

 app.yaml は次のように書いておいた。

application: アプリケーション名
version: 1
runtime: php55
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: アプリケーション名.php

 私はメールを受信しているThunderbirdをRSSリーダーとして利用しているので、メールが届いてもRSSフィードで届いても確認するタイミングは同じで、テキスト形式で利用しているメールが届くよりも返信ツイートのウェブページを表示してくれるRSSフィードの方が都合が良い。携帯電話でメール通知を受け取りたくなったらメール通知のアプリを作るかもしれないが、今はこれで十分である。同じような考え方の方は、この記事を参考にしてほしい。


タグ:RSS PHP Twitter JSON GAE
nice!(1)  コメント(0)  トラックバック(0) 
カテゴリー:サイトを見て
共通テーマ:パソコン・インターネット

読者の反応

nice! 1

sonet-asin-area

コメント 0

コメントを書く 

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。
captcha

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。