特定のハッシュタグを除いてツイートを自動削除する方法。

以前、TwitterAPIを使った「ツイートを時間指定で自動削除する方法。」という記事を書きました。

自分で使っていて、ツイートが毎朝全削除されるのはかなり快適だったのですが、

ストックしておきたいツイート(読んだ記事や感想など)を残しておけなかったが不便だと感じていました。

 

素人ながら試行錯誤した結果、「特定のハッシュタグのツイートのみを削除対象から外す」ことに成功したのでまとめます。

[adsense]

 

https://ytszk.info/blog/%E3%83%84%E3%82%A4%E3%83%BC%E3%83%88%E3%82%92%E6%99%82%E9%96%93%E6%8C%87%E5%AE%9A%E3%81%A7%E8%87%AA%E5%8B%95%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%82/

 

特定のハッシュタグを除いてツイートを削除するPHPファイルの作成

ソースコードはこちらの記事を参考にさせていただきました。

https://syncer.jp/Web/API/Twitter/REST_API/GET/search/tweets/

https://syncer.jp/Web/API/Twitter/REST_API/POST/statuses/destroy/id/

 

作成したのがこちらです。

 

APIキーとかアクセストークンがわからない方

APIキーとかアクセストークンとか、わけわかめ!という方は、まずこちらをご覧ください。

https://ytszk.info/blog/%E3%83%84%E3%82%A4%E3%83%BC%E3%83%88%E3%82%92%E6%99%82%E9%96%93%E6%8C%87%E5%AE%9A%E3%81%A7%E8%87%AA%E5%8B%95%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%82/

 

仕組みをざっくりと説明します。

POST statuses/destroy/:id

というツイートを削除するエンドポイントを利用してツイートに割り当てられたツイートIDを指定することでツイートを削除します。(リツイートの削除も可)

「:id」の部分に削除したいツイートのidを指定することで削除することができるというわけです。

ツイートのidを取得する方法が以下の方法です。

 

GET statuses/home_timeline

「ツイートを時間指定で自動削除する方法。」という記事では、

という、ホームタイムラインのツイートを取得するエンドポイントを使用していました。

これを使うことによってツイートに含まれる様々なデータを取得することができます。

その中にもちろん「id」も含まれています。

 

しかし、このエンドポイントで設定できるパラメータには「ハッシュタグ」が含まれていません。

よってこのエンドポイントでは、「特定のハッシュタグを除外する」ということができません。

 

GET search/tweets

その問題を解決するために、

というツイートを検索するエンドポイントを使います。

このエンドポイントでは、ツイッターの検索窓とほぼ同じの検索をすることができます。

例えば、ユーザー名やハッシュタグ、位置情報、時間などからツイートを検索することができます。

「q」というパラメータには、検索ワードを指定することができます。

今回の例では、誰のツイートでどのハッシュタグを除外するかということを指定します。

 

つまり、このエンドポイントを使うことで、「特定のハッシュタグを除く自分のツイート」を取得することができるということです。もちろんidも取得できます。

 

 

未検証ですが、こちらで紹介している検索演算子も使うことができるはずです。

https://www.howtonote.jp/twitter/index38.html

 

間違えやすいポイント

一番苦労したポイントは、「id」を出力して、ツイート削除のエンドポイントに埋め込むところです。

「ツイートを時間指定で自動削除する方法。」(GET statuses/home_timelineを利用)という記事で、紹介したコードでは、

$obj[$count_num][“id”]でツイートのidを出力することができていました。

(0番目のツイートのidを出力する場合は、$obj[0][“id”]で出力できました)

 

しかし、今回の「特定のハッシュタグを除く」場合、つまり「GET search/tweets」を使用する場合は、出力することができませんでした。

 

そこで、JSONデータを覗いてみたところ、

GET statuses/home_timelineでは、

となっており、

 

GET search/tweetsでは、

となっていました。

構造が少し違ったんですね。(気付くのに時間がかかった、、、)

なのでidを取り出すには、「$obj[$count_num][“id”]」ではなく、

「$obj->statuses[$count_num]->id」としなければなりません。

 

つまり今回は、

とする必要がありました。

 

ちなみにJSONデータの扱いかたについてはここで勉強しました。

https://syncer.jp/how-to-use-json

 

時間指定で定期削除をする方法

ツイートを自動削除する方法、つまりPHPファイルを定期的に実行する方法についても、

以下の記事を御覧ください。

https://ytszk.info/blog/%E3%83%84%E3%82%A4%E3%83%BC%E3%83%88%E3%82%92%E6%99%82%E9%96%93%E6%8C%87%E5%AE%9A%E3%81%A7%E8%87%AA%E5%8B%95%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%82/

 

いいね!を定期的にリセットする方法

いいね!を定期的に解除する方法はこちらから。

https://ytszk.info/blog/twitter-api%E3%81%A7%E3%81%84%E3%81%84%E3%81%AD%E3%82%92%E5%AE%9A%E6%9C%9F%E7%9A%84%E3%81%AB%E8%87%AA%E5%8B%95%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%82/

 

わかりにくいところがあれば

わかりづらいところや、間違い、エラー等があれば、お気軽にお問い合わせください。

https://ytszk.info/blog/contact/

 

[adsense]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です