日付の範囲のPython&Twitter APIを使用して古いつぶやきを削除する


あなたが与えられた日付範囲内であなたの古いつぶやきを削除したいならば、このポストはあなたのTwitterプロフィールから得られるパイソンツイッターとデータを使っているステップを通してあなたを歩きます
GitHub Link of Jupyter Notebook

必須条件:


Twitterのデータアーカイブ:


Twitterのデータには、各つぶやきの2つの属性を取得する必要があります.
ツイートIDと
ツイートデート
既にこれらの2つのアイテムをCSVファイルまたは他のフォームに持っているならば、あなたはこのステップをスキップすることができます.
Twitterのデータを取得するには
OR
代わりに、設定&プライバシーから-に到達することができます-アカウントのダウンロード


TwitterのAPI資格情報


場合は、既存のアプリをして1つを作成してください.
あなたのアプリケーションが作成された後、それは“詳細”に移動し、許可は、読み取り、書き込み、直接メッセージを、それ以外の編集と変更を行うに割り当てられていることを確認してください

その後、消費者APIキーとアクセストークンを生成する必要があります

ダウンロードしたTwitterデータの処理


Twitterのデータを抽出した後、1つのデータがあり、他の2つのフォルダが見つかります.HTMLファイルをつぶやきオフラインで閲覧するために使用することができます.

我々はコードを使用する前に、つぶやきのいくつかの変更を行う必要があります.資産フォルダの中にあるJSファイル

現在のTwitterのデータをダウンロードサービスのつぶやきの中にすべてのつぶやき資産を一覧表示します.オブジェクトの配列としてのJSファイル.このファイルをPythonで読み込む必要があるので、JSONファイルを作成する必要があります
   window.YTD.tweet.part0 = [ {
で置き換えます.
   {"data": [ {
最後の行については、「SOL」を追加してJSONオブジェクトにする必要があります.
  } ]}
JSONファイルとして保存する

コード:


Python Jupyterノートブックは、このlinkでgithubで見つかります
1 )まずスタンドアロンのTwitterパッケージをアンインストールして、Pythonのバージョンをインストールしてください(普通のTwitterパッケージが「twitter . api ()」メソッドを含んでいないので、Jupyterノートブックから直接実行できます(インストール後にノートブックを再起動する必要があります).
!pip uninstall twitter
!pip install python-twitter
または端末使用
pip uninstall twitter
pip install python-twitter
2 ) Enterpriseキー, EntifierError , AccessRound TokenRenKeyを初期化する
あなた自身のTwitterのAPI資格情報を持つAccessRound TokenRage秘密の変数は、“Deletetweet(tweetID)”機能につぶやきID文字列を通過するつぶやきを削除します.つぶやきIDは、各つぶやきの“iCount str”としてJSONファイルに位置しています.
# ==================================================================
# Import statements
# ==================================================================

import sys
import time
from datetime import datetime
import os
import twitter
from dateutil.parser import parse
import numpy as np
import pandas as pd
import json


# ==================================================================
# API Credentials
# ==================================================================

CONSUMER_KEY = ""
CONSUMER_SECRET = ""
ACCESS_TOKEN_KEY = ""
ACCESS_TOKEN_SECRET = ""


# ==================================================================
# Initialize
# ==================================================================

api = twitter.Api(consumer_key = CONSUMER_KEY,
                  consumer_secret = CONSUMER_SECRET,
                  access_token_key = ACCESS_TOKEN_KEY,
                  access_token_secret = ACCESS_TOKEN_SECRET)


# ======================================================================================
# Function to delete tweet by ID
# ======================================================================================

def deleteTweet(tweetId):
   try:
     print("Deleting tweet #{0})".format(tweetId))
     api.DestroyStatus(tweetId)
     print("Deleted")

   except Exception as err:
      print("Exception: %s\n" % err)
3 ) PythonでJSONファイルをJSON変数に読み込む
myData = None
with open('editedTweet.json') as json_file:
    myData = json.load(json_file)
現在、配列内の各つぶやきのつぶやき属性を参照することができます.参照のために、インデックス0にある要素の内容を印刷しました.ここでは、“CreateData at”と“idCount str”属性にのみ興味があります.
{'tweet': {'created_at': 'Thu Sep 11 12:26:39 +0000 2014',
  'display_text_range': ['0', '137'],
  'entities': {'hashtags': [],
   'symbols': [],
   'urls': [{'display_url': 'fb.me/3oL0wLoge',
     'expanded_url': 'http://fb.me/3oL0wLoge',
     'indices': ['115', '137'],
     'url': 'http://t.co/spMVNltxDk'}],
   'user_mentions': []},
  'favorite_count': '0',
  'favorited': False,
  'full_text': 'for galaxy y , galaxy pocket, galaxy ace, galaxy music, galaxy y dous lite and any other low end android device... http://t.co/spMVNltxDk',
  'id': '510041733099712513',
  'id_str': '510041733099712513',
  'lang': 'en',
  'possibly_sensitive': False,
  'retweet_count': '0',
  'retweeted': False,
  'source': '<a href="http://www.facebook.com/twitter" rel="nofollow">Facebook</a>',
  'truncated': False}}
4 )我々は今、削除する必要があるつぶやきのIDを持つ配列を作成する必要があるので、削除する必要がありますつぶやきの日付範囲を選択し、UTCオフセットを考慮に入れておくのを忘れないでください.「RangeRadio Start」と「Rangepersend」を使用してください.
# Range (in UTC offset) within which tweets will be deleted
# =================================================================

range_start = datetime.strptime('Sep 10 00:00:00 +0000 2012','%b %d %H:%M:%S %z %Y')
range_end = datetime.strptime('Sep 10 00:00:00 +0000 2017','%b %d %H:%M:%S %z %Y')

# ==================================================================
# I am creating a list of tweet IDs for consideration, where tweetsToBeDeleted will be
# used for deleting tweet
# ==================================================================

tweetsToBeDeleted = []
tweetsToBeIgnored = []

for element in myData["data"]:
  tweet_post_time = datetime.strptime(element["tweet"]["created_at"],'%a %b %d %H:%M:%S %z %Y')
  if (tweet_post_time>= range_start and tweet_post_time<= range_end ):
    tweetsToBeDeleted.append(element["tweet"]["id_str"])
  else:
    tweetsToBeIgnored.append(element["tweet"]["id_str"])

print(len(tweetsToBeDeleted),len(tweetsToBeIgnored))
5 )最終的に配列を反復処理し、"tweetstobedelete "配列から各idを削除するつぶやきの削除関数に渡します.
for id in tweetsToBeDeleted:
  deleteTweet(id)