[트위터] 자신의 모든 트위터를 좋아요가 많은 순서대로 배열하고 싶어요!

17531 단어 TwitterPython3
'트위터에 트위터가 좋구나, 순서대로'트윗을 올려도 좋은 방법이 없어 스스로 시도해봤죠.
자신의 모든 트위터 다운로드
먼저 여기.를 참고하여 자신의 모든 트위터를 다운로드하세요.
Python 코드 실행
다운로드한 아카이브 데이터의 데이터 디렉토리에 다음 Pythhon 코드를 배치하여 실행합니다.
트위터의 계정 이름, 데이터 디렉터리를 저장하는 경로를 자신의 것으로 변경하십시오.
자신의 운행 환경은 다음과 같다.
  • Mac OS 10.15.7
  • Python 3.9.1
  • tweet_log.py
    import json
    from dateutil.parser import parse
    from pytz import timezone
    import codecs
    import subprocess
    
    # Twitterのアカウント名
    account_name = "自分のTwitterアカウント名"
    # アーカイブデータディレクトリのパス
    dir_path = "/自分のアーカイブデータのディレクトリパス/data"
    # 出力結果のファイル名
    all_tweet_file_name = "tweet.tsv"
    
    encode = 'utf-8'
    
    # jsonファイルを開いて読み込む
    with codecs.open('tweet.js', 'r' , encode, 'ignore') as f:
        data = f.read()
    tweet = json.loads(data[data.find('['):])
    
    # 書き出すファイルを開く
    f = open(all_tweet_file_name, 'wb')
    
    # 見たいデータを出力する
    for t in tweet:
        s = t['tweet']['full_text']
        e = t['tweet']['entities']
        if 'urls' in e:
            for u in e['urls']:
                s = s.replace(u['url'], u['expanded_url'])
        timestamp = parse(t['tweet']['created_at']).astimezone(timezone('Asia/Tokyo')).strftime("%Y-%m-%d %H:%M:%S")
        s = s.replace("\n", " ")
        s = s.replace("\r", " ")
        s = "https://twitter.com/" + account_name + "/status/" + t['tweet']['id']+ "\t" + timestamp + "\t" + t['tweet']['retweet_count'] + "\t" + t['tweet']['favorite_count'] + "\t" + s + '\n'
        f.write(s.encode(encode))
    f.close()
    
    # いいね数の多い順にソート
    subprocess.run("sort -t$'\t' -k4rn " + all_tweet_file_name + " -o " + all_tweet_file_name, shell=True, cwd=dir_path)
    
    출력된 TSV 파일은 엑셀과 넘버 등으로 열면 되며, 트위터는 수량이 많은 순서로 배열된다.
    다음은 자신의 파일 데이터로 시험해 본 것이다.
    표 왼쪽에서 세어 놓은 네 번째 열이 비교적 좋다.

    이렇게 하면 자신의 모든 트위터를 좋아요가 많은 순서대로 배열할 수 있다!
    특정 키워드가 포함된 트위터에 좋아요가 많은 순서대로
    search_filter_word에 키워드를 지정하면 키워드가 포함된 트위터에 수량이 많은 순서로 배열할 수 있다.
    tweet_log.py
    import json
    from dateutil.parser import parse
    from pytz import timezone
    import codecs
    import subprocess
    
    # Twitterのアカウント名
    account_name = "自分のTwitterアカウント名"
    # アーカイブデータディレクトリのパス
    dir_path = "/自分のアーカイブデータのディレクトリパス/data"
    # 出力結果のファイル名
    all_tweet_file_name = "tweet.tsv"
    search_file_name = "tweet_result.tsv"
    # フィルタするキーワード
    search_filter_word = ["hogehoge", "fugafuga"]
    
    encode = 'utf-8'
    
    # jsonファイルを開いて読み込む
    with codecs.open('tweet.js', 'r' , encode, 'ignore') as f:
        data = f.read()
    tweet = json.loads(data[data.find('['):])
    
    # 書き出すファイルを開く
    f = open(all_tweet_file_name, 'wb')
    
    # 見たいデータを出力する
    for t in tweet:
        s = t['tweet']['full_text']
        e = t['tweet']['entities']
        if 'urls' in e:
            for u in e['urls']:
                s = s.replace(u['url'], u['expanded_url'])
        timestamp = parse(t['tweet']['created_at']).astimezone(timezone('Asia/Tokyo')).strftime("%Y-%m-%d %H:%M:%S")
        s = s.replace("\n", " ")
        s = s.replace("\r", " ")
        s = "https://twitter.com/" + account_name + "/status/" + t['tweet']['id']+ "\t" + timestamp + "\t" + t['tweet']['retweet_count'] + "\t" + t['tweet']['favorite_count'] + "\t" + s + '\n'
        f.write(s.encode(encode))
    f.close()
    
    # いいね数の多い順にソート
    subprocess.run("sort -t$'\t' -k4rn " + all_tweet_file_name + " -o " + all_tweet_file_name, shell=True, cwd=dir_path)
    # キーワードフィルタ
    subprocess.run("cat " + all_tweet_file_name + " | awk 'BEGIN{FS=\"\t\"} $5 ~ /" + '|'.join(search_filter_word) + "/ {print $0}' > \"" +  search_file_name + "\"", shell=True, cwd=dir_path)
    
    참조: 트위터 자신의 모든 트위터 역사를 다운받아 인터넷에서 할 수 없는 DM 검색도 해봤다

    좋은 웹페이지 즐겨찾기