trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

Pythonでtweet全削除

なんとなくPython使ってtweet全削除したいと思ったので削除。

ここ参考にすればよいです。

qiita.com

だけでは寂しいので環境とか手順とか引っかかった点とか。

環境とか

Windows 8.1
Python 3.6.8
anacondaを使用
apiのアクセストークンなどは取得済み

手順

  1. Twitter Developersapiの権限変更、再発行
    PermissionsタブでAccess permissionRead,write,and direct messagesに変更
    Keys and tokensタブでAccess token & access token secretRegenerate
  2. twitterで過去のツイート取得
    設定とプライバシー→Twitterデータ→Twitterデータをダウンロード
  3. python-twitterをインストール
    Anaconda Prompt から pip install python-twitter
  4. 全削除のスクリプトと3で取得したツイートファイル(tweets.js)を同じフォルダに置く
  5. 全削除のスクリプト実行

引っかかった点とか注意点とか

  • apiの権限変更後はtokenの再発行が必要だった
  • tokenコピペしたら末尾に空欄が入ってた
  • 参照先ではtweets.csvだけど今はtweet.js
  • tweet.jsの書式はutf-8nなのでファイルオープンにエンコーディング指定(encoding='utf-8')が必要
  • tweet.jsを読み取った後何かしらの変換が必要
window.YTD.tweet.part0 = [ {
  "hoge1" : false,
  "id" : "12345",
}, {
...
}]

みたいな書式になってる。 window.YTD.tweet.part0 = を削除して保存。json.loadすれば楽。

with open('tweet.js',encoding='utf_8') as f:
    tweetsjson=json.load(f)
    for tweet in tweetsjson:
        print(tweet['id']+':'+tweet['full_text'])
        api.DestroyStatus(tweet['id'])

一行ずつ読み込んで' "id"'で開始してれば数字部分を読み込んで削除、でもよいかも。("id"自体はRTやらmentionやらいくつか種類があるので注意)

メモ

エンコード時、デフォルトで使われる文字コードはOSに依存。windowsではcp932(Shift_jisの独自拡張)が使用される。