「Twitterデータ」対応

TwitterTwitter Developer

目次一覧

 状態:  閲覧数:4,506  投稿日:2019-09-02  更新日:2020-01-14
これまで
Twitter全ツイート履歴は、2019年7月以降、ツールを使用しなければ取得不可能(index.htmlはダウンロードファイルに含まれないよう仕様変更されている)

tweet.js Web /「phpinfo();」で現状確認 / 第1版を公開するまでの試行錯誤履歴

Twitterデータ 対応 第1版 / 第1版 更新

Twitterデータ 対応 第2版

問題発生 / ダウンロードしたtweet.jsではなく、公式検索を試してみる

ブログ化サービス / 3,200件以上の自分の過去ツイートを閲覧するためには? / 感想

Twitterデータ 対応 第3版 / Twitterデータ 対応 第4版 / 第4版 問題発生

アップロードされたファイルを定期的に削除する


tweet.js Web /「phpinfo();」で現状確認 / 第1版を公開するまでの試行錯誤履歴

 閲覧数:631 投稿日:2019-09-02 更新日:2019-11-15

tweet.js Web


ブラウザ経由でtwitter jsonをアップロードすると、Tweet内容を表示
ファイル内一括置換
指定文字列を削除
アップロードできないファイルがある

このサービスで行っていること
・サーバーへアップロードしたツイート履歴.jsonファイルの読み取り
・PHPで配列へ変換後、必要な情報を取得

「phpinfo();」で現状確認


メモリ使用量の上限
memory_limit 128M 128M

POSTデータの最大サイズ ※合計サイズ
post_max_size 8M 8M

1ファイルあたりの最大アップロードサイズ
upload_max_filesize 2M 2M

▼tweet.js
27.9MB

第1版を公開するまでの試行錯誤履歴


面倒くさい
・仕様が良く分からない
・jsonファイルをそのまま読み込んでも、期待した通りデータを取得できない

window.YTD.tweet.part0 =
・どうやって削除するの?
・ユーザーには削除させたくない

現在のリンク条件分岐
・何も記述せずリツイートするパターン。['user_mentions']の['screen_name']があれば
・何か記述してリツイートするパターン。['user_mentions']の['screen_name']がなければ

取り敢えず稼働したが、現状の問題点
・ユーザーのツイート['screen_name']を、ツイート履歴.jsonファイルから読み取れない。※記載されていないため
・ユーザーのツイート['screen_name']が固定。自分専用なので
・リンクをクリックしないと、画像や動画は表示されない

サービス公開するためには?
・ユーザーのツイート['screen_name']に対して、動的対応する必要がある
・アップロードされたファイルの削除仕様は? 削除しないと、サーバー容量は足りなくなる
・セキュリティ対策

公開予定日
来週月曜日

Twitterデータ 対応 第1版 / 第1版 更新

 閲覧数:585 投稿日:2019-09-02 更新日:2019-11-15

Twitterデータ 対応 第1版


2019/9/16 公開

使用方法
1.Twitterのユーザー名を入力する。※Twitterアカウントの@以降
2.ダウンロードしたtweet.jsを選択してアップロードボタンを押す

注意事項1
・「1.Twitterのユーザー名」を入力しなくても、ツイート自体は表示される
・但し、自分のツイートへリンク遷移できない。RTへは遷移できる

注意事項2
アップロード可能な1ファイル容量制限は200M
※但しテストは未実行なため、詳細未確認

Twitterのユーザー名を入力するようにしている理由は?
・アプリ連携すれば取得可能だが、知らないサービスと連携したい人もいないだろうと判断。※Twitter API 登録が面倒だから、という理由もある
・需要があれば今後要検討

リンク遷移しないと、画像や動画が表示されない理由は?
・その方が早く表示されると考えたため
・需要があれば要調査

そもそも、tweet.jsをサーバーへアップロードする必要があるの?
・私もそう思った
・JSでクライアント処理すれば良いだけな気もする
・但し、私が探した時点(2019-09-02)ではその情報は見つからなかった

今後について
・アップロードされたtweet.jsを定期的に削除しないと、ファイル容量が満杯になる
・需要があればヘルプ作成
・需要があればコメント投稿機能追加
・待機中のローディング表示

第1版 更新


セキュリティ強化
本人しかアクセスできないため、不要な気もするが
htmlspecialchars($userName,ENT_QUOTES,'UTF-8')


Twitterデータ 対応 第2版

 閲覧数:578 投稿日:2019-09-11 更新日:2019-11-15

Twitterデータ 対応 第2版


2019/9/16 公開
画像及び動画表示対応

今後について
・アップロードされたtweet.jsを定期的に削除しないと、ファイル容量が満杯になる
・需要があればヘルプ作成
・需要があればコメント投稿機能追加
・待機中のローディング表示
・ツイート削除機能

問題発生 / ダウンロードしたtweet.jsではなく、公式検索を試してみる

 閲覧数:632 投稿日:2019-09-17 更新日:2019-11-15

問題発生


ダウンロードしたtweet.jsには2019年6月~8月分のツイートしか含まれていない?
・3200件制限?
・過去にさかのぼる方法も不明だし、8/19以降のツイートをダウンロードできない理由も不明
※Twitterは頻繁に仕様変更するため、検索しても情報が錯綜しているから、色々ツラい

ダウンロードしたtweet.jsではなく、公式検索を試してみる


Twitterユーザー名がhogeだった場合
from:hoge until:2017-12-01
from:hoge since:2018-01-01 until:2018-01-03

一番古い投稿日
2017年10月2日


ブログ化サービス / 3,200件以上の自分の過去ツイートを閲覧するためには? / 感想

 閲覧数:638 投稿日:2019-09-17 更新日:2019-11-15

ブログ化サービス


3,200件以上遡れない点は同じ
Twitter削除しても閲覧可能なことから、別途保存しているものと思われる

3,200件以上の自分の過去ツイートを閲覧するためには?


公式で、ユーザー名と期間検索するしかない

感想


クソやな
・自分の投稿データを出力できない、なんてクソ仕様だわ
・Twitterはインフラの如く扱われているから、まさかこんな凶悪仕様だとは思いもしなかった

印象としては
過去へ遡ることに関して制限が設定されている理由は、他サービスへの流出防止という理由ではなく、単なる負荷対策という気もするけれども、真相は不明

今後について
・ツイートすることを止める
・(遡れないから)備忘録にならないため
・「リツイート」せず、自分のサービス内で「ツイートを引用」投稿することにする

Twitterデータ 対応 第3版 / Twitterデータ 対応 第4版 / 第4版 問題発生

 閲覧数:581 投稿日:2019-11-15 更新日:2019-11-17

Twitterデータ 対応 第3版


2019/11/15 公開
第2版での下記エラー対応
33.8MBファイルをアップロードするとエラー発生
Fatal error: Allowed memory size of 209715200 bytes exhausted (tried to allocate 4096 bytes)
動作確認できているのは27.9MBまで

Twitterデータ 対応 第4版


2019/11/16 公開
第3版での下記エラー対応
40.3MBファイルをアップロードするとエラー発生
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in /var/www/xxxx/3/upload.php on line 220

▼upload.php
ini_set("memory_limit", "512M");


Fatal error: Allowed memory size of ★★ bytes exhausted (tried to allocate ○○ bytes) in △△ on line □□

第4版 問題発生


2019/11/17
・tweet.jsファイルアップロードには成功するも結果表示されないケースが少なくとも2件ある
・解析に失敗することがあります

下記でエラー発生しているが、原因不明
// 文字列から変換
$jsonArray = json_decode($json, true);

tweet.jsファイルの "source"
・「Twitter Web Client」の場合は、成功する可能性が高い
・「Twitter Web App」の場合は、失敗する可能性が高い
・「Twitter for iPhone」の場合は、失敗する可能性が高い

アップロードされたtweet.jsファイル
JSON形式かどうかを2サイトでチェックしたみたが、何れも正しい形式との判定結果だった

どういうことなの?

アップロードされたファイルを定期的に削除する

 閲覧数:636 投稿日:2019-12-03 更新日:2019-12-03

アップロードされたファイルを定期的に削除する


当初は
アップロードされたファイルを1件1件確認していたが、

段々面倒になってきた
フィードバックがないため、正常動作しているか、すら不明

結局
アップロードされたファイルは、内容確認することなく、1日1回定期的に全削除する
※2019/12/3に決定

たたき台
CentOSで「指定ディレクトリ下層に複数存在する指定ディレクトリ」内にある全ファイルを削除するシェルスクリプト

cron作成
・シェルスクリプト作成できたので、cronで定期的に削除実行処理する
具体例A。2019/12/3



Twitterにおける「name」「screen_name」「user_id」の意味は明確に異なる

RTだけ取得に挑戦