どうも。服装が季節に追いついていない僕です。
来月お金が入ったらすぐユニクロに走ります。
さて、Twitterの「いいね」を「後で読むリスト」的に使いたいなあ、とふと思いあれこれ試していました。
後で読もう!と意気込んで「いいね」を押してもリストに埋もれたまま、さてどうしたものか。
[adsense]
目次
いろんな「いいね」があるよね。
- おもしろい!と思ったときの
- 美味しそう!と思ったときの
- リプ返しするまでもないときの
- この記事後で読みたいなと思ったときの
とかいろんなシチュエーションのいいね!がありますよね。
そのなかでも、「この記事、後で読みたいなと思ったときの」いいねって
リストに埋もれているだけで、後でちゃんと読めていないことに気づきました。
これはどげんかせんといかん、そう思いました。
あなたの「いいねリスト」見られているかもしれませんよ。
正直にいいます。僕は人のいいねリストを見ています。
とはいっても 、個人的な人のではなく、Web界隈で有名な人だったり、何かしらで活躍する人のいいねリストですけどね。
有益な情報を出す人がいいね!と思うようなツイートやツイート主は面白いことが比較的多いので。
情報収集に役立ちます。
そんな風に自分のいいねリストを見られていると思うとゾッとしませんか。
いいねリストという名前だけに、こいつはこんなことにいいねと思っているのか!!と思われているかもしれません。
考えすぎな性格なもので。
いいね!を定期削除しよう。
後で読むリスト的にも使えていない、他人に人格を決められかねない、いいねリスト。
ちゃんと活用していきましょう。
そのために、TwitterのAPIを利用していきます。
Twitter APIの利用登録方法や説明などは、
この記事の目次の「2.ツイートを削除するPHPファイルを作成する。」
以外を参考にしてください。
いいねを削除するPHPファイルを作成する。
ソースコードは、こちらの記事を参考にさせていただきました。
https://syncer.jp/twitter-api-matome/get/favorites/list
https://syncer.jp/twitter-api-matome/post/favorites/destroy
作成したのがこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | <?php // 設定 $api_key = 'XXXXXXXXXXXXXXXX' ; // APIキー $api_secret = 'XXXXXXXXXXXXXXXX' ; // APIシークレット $access_token = 'XXXXXXXXXXXXXXXX' ; // アクセストークン $access_token_secret = 'XXXXXXXXXXXXXXXX' ; // アクセストークンシークレット $screen_name = 'XXXXXXXXXXXXXXXX'; // スクリーンネーム $get_count = 200; // 取得件数(最大200件まで) $require_number = 3; //ループ回数 for ($i = 0; $i < $require_number; $i++) { // GET処理開始 // 設定 $request_url_get = 'https://api.twitter.com/1.1/favorites/list.json' ; // エンドポイント $request_method_get = 'GET' ; // パラメータA (オプション) $params_a = array( 'screen_name' => $screen_name , 'count' => $get_count , //'since_id' => 'XXXXXXXXXXXXXX' , // 最古のツイートID //'max_id' => 'XXXXXXXXXXXXXX' , // 最新のツイートID //'trim_user' => 'false' , // ユーザーオブジェクトの省略 //'contributor_details' => 'true' , // ライター情報にユーザーオブジェクトを含める //'exclude_replies' => 'false' , // リプライを除外する //'include_rts' => 'false' , // リツイートを含める ) ; // キーを作成する (URLエンコードする) $signature_key = rawurlencode( $api_secret ) . '&' . rawurlencode( $access_token_secret ) ; // パラメータB (署名の材料用) $params_b = array( 'oauth_token' => $access_token , 'oauth_consumer_key' => $api_key , 'oauth_signature_method' => 'HMAC-SHA1' , 'oauth_timestamp' => time() , 'oauth_nonce' => microtime() , 'oauth_version' => '1.0' , ) ; // パラメータAとパラメータBを合成してパラメータCを作る $params_c = array_merge( $params_a , $params_b ) ; // 連想配列をアルファベット順に並び替える ksort( $params_c ) ; // パラメータの連想配列を[キー=値&キー=値...]の文字列に変換する $request_params = http_build_query( $params_c , '' , '&' ) ; // 一部の文字列をフォロー $request_params = str_replace( array( '+' , '%7E' ) , array( '%20' , '~' ) , $request_params ) ; // 変換した文字列をURLエンコードする $request_params = rawurlencode( $request_params ) ; // リクエストメソッドをURLエンコードする // ここでは、URL末尾の[?]以下は付けないこと $encoded_request_method_get = rawurlencode( $request_method_get ) ; // リクエストURLをURLエンコードする $encoded_request_url = rawurlencode( $request_url_get ) ; // リクエストメソッド、リクエストURL、パラメータを[&]で繋ぐ $signature_data = $encoded_request_method_get . '&' . $encoded_request_url . '&' . $request_params ; // キー[$signature_key]とデータ[$signature_data]を利用して、HMAC-SHA1方式のハッシュ値に変換する $hash = hash_hmac( 'sha1' , $signature_data , $signature_key , TRUE ) ; // base64エンコードして、署名[$signature]が完成する $signature = base64_encode( $hash ) ; // パラメータの連想配列、[$params]に、作成した署名を加える $params_c['oauth_signature'] = $signature ; // パラメータの連想配列を[キー=値,キー=値,...]の文字列に変換する $header_params = http_build_query( $params_c , '' , ',' ) ; // リクエスト用のコンテキスト $context = array( 'http' => array( 'method' => $request_method_get , // リクエストメソッド 'header' => array( // ヘッダー 'Authorization: OAuth ' . $header_params , ) , ) , ) ; // パラメータがある場合、URLの末尾に追加 if( $params_a ) { $request_url_get .= '?' . http_build_query( $params_a ) ; } // cURLを使ってリクエスト $curl = curl_init() ; curl_setopt( $curl , CURLOPT_URL , $request_url_get ) ; curl_setopt( $curl , CURLOPT_HEADER, 1 ) ; curl_setopt( $curl , CURLOPT_CUSTOMREQUEST , $context['http']['method'] ) ; // メソッド curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ; // 証明書の検証を行わない curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ; // curl_execの結果を文字列で返す curl_setopt( $curl , CURLOPT_HTTPHEADER , $context['http']['header'] ) ; // ヘッダー curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ; // タイムアウトの秒数 $res1 = curl_exec( $curl ) ; $res2 = curl_getinfo( $curl ) ; curl_close( $curl ) ; // 取得したデータ $json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど) $header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ) // JSONをオブジェクトに変換 $obj = json_decode( $json, true ) ; //GET処理ここまで //POST処理開始 $request_method = 'POST' ; $count_num = 0; while ($obj[$count_num]["id_str"] != "") { $request_number = $obj[$count_num]["id_str"]; $request_url = 'https://api.twitter.com/1.1/favorites/destroy.json'; // エンドポイント // パラメータA (オプション) $params_a = array( 'id' => $request_number, // 'trim_user' => 'false' , // ユーザーオブジェクトの省略 ) ; // キーを作成する (URLエンコードする) $signature_key = rawurlencode( $api_secret ) . '&' . rawurlencode( $access_token_secret ) ; // パラメータB (署名の材料用) $params_b = array( 'oauth_token' => $access_token , 'oauth_consumer_key' => $api_key , 'oauth_signature_method' => 'HMAC-SHA1' , 'oauth_timestamp' => time() , 'oauth_nonce' => microtime() , 'oauth_version' => '1.0' , ) ; // パラメータAとパラメータBを合成してパラメータCを作る $params_c = array_merge( $params_a , $params_b ) ; // 連想配列をアルファベット順に並び替える ksort( $params_c ) ; // パラメータの連想配列を[キー=値&キー=値...]の文字列に変換する $request_params = http_build_query( $params_c , '' , '&' ) ; // 一部の文字列をフォロー $request_params = str_replace( array( '+' , '%7E' ) , array( '%20' , '~' ) , $request_params ) ; // 変換した文字列をURLエンコードする $request_params = rawurlencode( $request_params ) ; // リクエストメソッドをURLエンコードする // ここでは、URL末尾の[?]以下は付けないこと $encoded_request_method = rawurlencode( $request_method ) ; // リクエストURLをURLエンコードする $encoded_request_url = rawurlencode( $request_url ) ; // リクエストメソッド、リクエストURL、パラメータを[&]で繋ぐ $signature_data = $encoded_request_method . '&' . $encoded_request_url . '&' . $request_params ; // キー[$signature_key]とデータ[$signature_data]を利用して、HMAC-SHA1方式のハッシュ値に変換する $hash = hash_hmac( 'sha1' , $signature_data , $signature_key , TRUE ) ; // base64エンコードして、署名[$signature]が完成する $signature = base64_encode( $hash ) ; // パラメータの連想配列、[$params]に、作成した署名を加える $params_c['oauth_signature'] = $signature ; // パラメータの連想配列を[キー=値,キー=値,...]の文字列に変換する $header_params = http_build_query( $params_c , '' , ',' ) ; // リクエスト用のコンテキスト $context = array( 'http' => array( 'method' => $request_method , // リクエストメソッド 'header' => array( // ヘッダー 'Authorization: OAuth ' . $header_params , ) , ) , ) ; // オプションがある場合、コンテキストにPOSTフィールドを作成する if( $params_a ) { $context['http']['content'] = http_build_query( $params_a ) ; } // cURLを使ってリクエスト $curl = curl_init() ; curl_setopt( $curl , CURLOPT_URL , $request_url ) ; curl_setopt( $curl , CURLOPT_HEADER, 1 ) ; curl_setopt( $curl , CURLOPT_CUSTOMREQUEST , $context['http']['method'] ) ; // メソッド curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ; // 証明書の検証を行わない curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ; // curl_execの結果を文字列で返す curl_setopt( $curl , CURLOPT_HTTPHEADER , $context['http']['header'] ) ; // ヘッダー if( isset( $context['http']['content'] ) && !empty( $context['http']['content'] ) ) { curl_setopt( $curl , CURLOPT_POSTFIELDS , $context['http']['content'] ) ; // リクエストボディ } curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ; // タイムアウトの秒数 $res1 = curl_exec( $curl ) ; $res2 = curl_getinfo( $curl ) ; curl_close( $curl ) ; // 取得したデータ $json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど) $header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ) $count_num++; } } ?> |
作成の途中何回もエラーが出たのですが、その原因は、
ツイートの削除には[id]を使うのに対して、いいねの削除には[id_str]を使うのですが、
[id]を使ってしまっていました。単純なミスなのに気付くのに時間がかかりました。
アップロード方法や定期実行の設定など
この記事では、PHPファイルの紹介のみにとどめておきます。
サーバーへのアップ方法やPHPファイルの定期実行の設定等については、
こちらの記事を参照してください。
わからないことがあればお問い合わせまで。
[adsense]
いいねリストを「後で読むリスト」的に使うには。
僕は、このいいね削除のPHPファイルを毎週月曜日の朝5時に定期実行させています。
ちなみにツイートは毎朝5時に削除しています。
なんで毎週月曜日かというと、1週間も後で読んでいない記事はもう読まないと思うからです。
1週間で消えてしまうと思ったらちゃんと読みますしね笑
月曜日からはすっきりと過ごしたいという意味もあります。
それでは素敵なツイッターライフを!
コメントを残す