Merge pull request #131 from Pigglebear/main

Этот коммит содержится в:
Vlad Pronsky 2024-04-18 18:20:55 +03:00
родитель 1469cefb97
Коммит cdf9477973
20 изменённых файлов: 59537 добавлений и 60001 удалений

Просмотреть файл

@ -1,5 +1,6 @@
all:
@echo "hi"
check:
@make lint
@make test
deps:
@pip install -e .[dev]
@ -8,7 +9,7 @@ build:
@python -m build
lint:
# https://docs.astral.sh/ruff/settings/#sorting-imports
# https://docs.astral.sh/ruff/settings/#sorting-imports
@ruff check --select I --fix .
@ruff format .
@ruff check .
@ -17,10 +18,6 @@ lint:
test:
@pytest -s --cov=twscrape tests/
check:
@make lint
@make test
test-cov:
@pytest -s --cov=twscrape tests/
@coverage html
@ -69,6 +66,7 @@ update-mocks:
twscrape favoriters --raw --limit 10 1649191520250245121 | jq > ./tests/mocked-data/raw_favoriters.json
twscrape user_tweets --raw --limit 10 2244994945 | jq > ./tests/mocked-data/raw_user_tweets.json
twscrape user_tweets_and_replies --raw --limit 10 2244994945 | jq > ./tests/mocked-data/raw_user_tweets_and_replies.json
twscrape user_media --raw --limit 10 2244994945 | jq > ./tests/mocked-data/raw_user_media.json
twscrape search --raw --limit 10 "elon musk lang:en" | jq > ./tests/mocked-data/raw_search.json
twscrape list_timeline --raw --limit 10 1494877848087187461 | jq > ./tests/mocked-data/raw_list_timeline.json
twscrape liked_tweets --raw --limit 10 2244994945 | jq > ./tests/mocked-data/raw_likes.json

Просмотреть файл

@ -58,7 +58,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -109,16 +110,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 172792,
"followers_count": 6423,
"friends_count": 2379,
"favourites_count": 172919,
"followers_count": 6419,
"friends_count": 2404,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 14,
"location": "↓ 案件のサポートを受けたい方はこちら ↓",
"media_count": 84,
"name": "あつし@バナーデザインコンペ開催中",
"normal_followers_count": 6423,
"normal_followers_count": 6419,
"pinned_tweet_ids_str": [
"1720031666742378557"
],
@ -127,13 +128,14 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1758690030372143104/Ue1bykNi_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "file_webcreator",
"statuses_count": 15167,
"statuses_count": 15169,
"translator_type": "none",
"url": "https://t.co/0DmpLAkL49",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -185,15 +187,15 @@
},
"fast_followers_count": 0,
"favourites_count": 21030,
"followers_count": 1202,
"friends_count": 2077,
"followers_count": 1204,
"friends_count": 2079,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 1,
"location": "Toulouse, France. ",
"media_count": 159,
"name": "Actu Du Football",
"normal_followers_count": 1202,
"normal_followers_count": 1204,
"pinned_tweet_ids_str": [
"1775222007145103534"
],
@ -202,7 +204,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1770919983100354560/50WbQ36P_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "actu_dufootball",
"statuses_count": 5188,
"statuses_count": 5187,
"translator_type": "none",
"url": "https://t.co/XYKOaEWJvo",
"verified": false,
@ -219,7 +221,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -250,21 +253,21 @@
"created_at": "Sat Feb 29 11:17:48 +0000 2020",
"default_profile": true,
"default_profile_image": false,
"description": "Philosophy of Curiosity\nCommunity notes contributor on 𝕏 \n$TSLA \n@xAI \n@spacex",
"description": "Huszár leszek blokkláncon\nCommunity notes contributor on 𝕏 \n$TSLA",
"entities": {
"description": {
"urls": []
}
},
"fast_followers_count": 0,
"favourites_count": 36524,
"favourites_count": 36557,
"followers_count": 198,
"friends_count": 178,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2,
"location": "Hungary 🇭🇺 🇪🇺 ",
"media_count": 158,
"media_count": 159,
"name": "Viktor Ax",
"normal_followers_count": 198,
"pinned_tweet_ids_str": [
@ -275,12 +278,13 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1749614334932623361/tIoFa2mU_normal.png",
"profile_interstitial_type": "",
"screen_name": "ProxyPryor",
"statuses_count": 1225,
"statuses_count": 1228,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -319,7 +323,7 @@
},
"fast_followers_count": 0,
"favourites_count": 328,
"followers_count": 2509,
"followers_count": 2228,
"friends_count": 189,
"has_custom_timelines": false,
"is_translator": false,
@ -327,7 +331,7 @@
"location": "New York",
"media_count": 4,
"name": "Vitoria Mandrak ✡",
"normal_followers_count": 2509,
"normal_followers_count": 2228,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/2906692829/1417805976",
@ -339,7 +343,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -377,8 +382,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 10983,
"followers_count": 42,
"favourites_count": 11019,
"followers_count": 41,
"friends_count": 360,
"has_custom_timelines": false,
"is_translator": false,
@ -386,19 +391,20 @@
"location": "",
"media_count": 56,
"name": "christopher",
"normal_followers_count": 42,
"normal_followers_count": 41,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1745861299672940545/1705086821",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1772566114259857408/UUvyfL04_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "christoph_929",
"statuses_count": 2049,
"statuses_count": 2053,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -457,7 +463,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -496,7 +503,7 @@
},
"fast_followers_count": 0,
"favourites_count": 343,
"followers_count": 63,
"followers_count": 60,
"friends_count": 74,
"has_custom_timelines": false,
"is_translator": false,
@ -504,7 +511,7 @@
"location": "",
"media_count": 1,
"name": "german contreras",
"normal_followers_count": 63,
"normal_followers_count": 60,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1758551315276517376/4-yEFUK-_normal.jpg",
@ -515,7 +522,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -574,7 +582,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -612,16 +621,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 4907,
"followers_count": 527,
"friends_count": 599,
"favourites_count": 4905,
"followers_count": 522,
"friends_count": 601,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 0,
"location": "United Arab Emirates",
"media_count": 6,
"name": "A",
"normal_followers_count": 527,
"normal_followers_count": 522,
"pinned_tweet_ids_str": [
"1776071594248438081"
],
@ -630,7 +639,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1776073244103049216/E5YfYM3Z_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "fameofmemes",
"statuses_count": 3137,
"statuses_count": 3134,
"translator_type": "none",
"verified": false,
"want_retweets": false,
@ -646,7 +655,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -704,7 +714,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -773,7 +784,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -811,8 +823,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 59493,
"followers_count": 2352,
"favourites_count": 59492,
"followers_count": 2353,
"friends_count": 4314,
"has_custom_timelines": false,
"is_translator": false,
@ -820,7 +832,7 @@
"location": "São Paulo, Brasil",
"media_count": 40,
"name": "Rene Luiz Moda",
"normal_followers_count": 2352,
"normal_followers_count": 2353,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png",
@ -831,7 +843,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -890,7 +903,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -951,16 +965,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 209325,
"followers_count": 3120,
"friends_count": 3326,
"favourites_count": 209513,
"followers_count": 3118,
"friends_count": 3334,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 28,
"location": "Central Pennsylvania",
"media_count": 9943,
"media_count": 9973,
"name": "precog.eth 💎🐷",
"normal_followers_count": 3120,
"normal_followers_count": 3118,
"pinned_tweet_ids_str": [
"1778212577140445370"
],
@ -969,7 +983,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1762546495964774400/FnA2VTkP_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "CosmicInfinitum",
"statuses_count": 95842,
"statuses_count": 95983,
"translator_type": "none",
"url": "https://t.co/dq5dWqjk6N",
"verified": false,
@ -986,6 +1000,9 @@
"icon_name": "IconBriefcaseStroke"
}
]
},
"tipjar_settings": {
"is_enabled": true
}
}
},
@ -1024,28 +1041,29 @@
}
},
"fast_followers_count": 0,
"favourites_count": 504,
"followers_count": 111,
"favourites_count": 509,
"followers_count": 110,
"friends_count": 281,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 1,
"location": "",
"media_count": 116,
"media_count": 117,
"name": "Maria Hearst",
"normal_followers_count": 111,
"normal_followers_count": 110,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1557886966586380288/1677745812",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1557887039265177607/c8Tgi5ae_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "MariaHearst3",
"statuses_count": 145,
"statuses_count": 146,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1084,7 +1102,7 @@
},
"fast_followers_count": 0,
"favourites_count": 5178,
"followers_count": 144,
"followers_count": 143,
"friends_count": 198,
"has_custom_timelines": false,
"is_translator": false,
@ -1092,7 +1110,7 @@
"location": "",
"media_count": 35,
"name": "Bharat Kadam",
"normal_followers_count": 144,
"normal_followers_count": 143,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1335766373998284800/1613958780",
@ -1104,7 +1122,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1143,7 +1162,7 @@
},
"fast_followers_count": 0,
"favourites_count": 530,
"followers_count": 1203,
"followers_count": 1029,
"friends_count": 242,
"has_custom_timelines": false,
"is_translator": false,
@ -1151,7 +1170,7 @@
"location": "Washington",
"media_count": 2,
"name": "Anniken Lee",
"normal_followers_count": 1203,
"normal_followers_count": 1029,
"pinned_tweet_ids_str": [
"1758382572592386060"
],
@ -1165,7 +1184,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1204,7 +1224,7 @@
},
"fast_followers_count": 0,
"favourites_count": 1662,
"followers_count": 117,
"followers_count": 127,
"friends_count": 256,
"has_custom_timelines": false,
"is_translator": false,
@ -1212,7 +1232,7 @@
"location": "",
"media_count": 0,
"name": "Seth Russell",
"normal_followers_count": 117,
"normal_followers_count": 127,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1719845985147297792/1698937351",
@ -1224,7 +1244,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1275,8 +1296,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 283298,
"followers_count": 2445,
"favourites_count": 283409,
"followers_count": 2447,
"friends_count": 3105,
"has_custom_timelines": true,
"is_translator": false,
@ -1284,7 +1305,7 @@
"location": "Global Cosmopolitan",
"media_count": 798,
"name": "Lars █████",
"normal_followers_count": 2445,
"normal_followers_count": 2447,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/189075697/1613073679",
@ -1297,7 +1318,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -57,7 +57,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -95,16 +96,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 4907,
"followers_count": 527,
"friends_count": 599,
"favourites_count": 4905,
"followers_count": 522,
"friends_count": 601,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 0,
"location": "United Arab Emirates",
"media_count": 6,
"name": "A",
"normal_followers_count": 527,
"normal_followers_count": 522,
"pinned_tweet_ids_str": [
"1776071594248438081"
],
@ -113,7 +114,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1776073244103049216/E5YfYM3Z_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "fameofmemes",
"statuses_count": 3137,
"statuses_count": 3134,
"translator_type": "none",
"verified": false,
"want_retweets": false,
@ -129,7 +130,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -198,7 +200,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -237,7 +240,7 @@
},
"fast_followers_count": 0,
"favourites_count": 893,
"followers_count": 40,
"followers_count": 38,
"friends_count": 25,
"has_custom_timelines": false,
"is_translator": false,
@ -245,7 +248,7 @@
"location": "",
"media_count": 2,
"name": "Aman Shivam Anupam",
"normal_followers_count": 40,
"normal_followers_count": 38,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1750876558745907200/1707653371",
@ -257,7 +260,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -316,7 +320,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -375,7 +380,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -434,7 +440,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -492,7 +499,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -531,7 +539,7 @@
},
"fast_followers_count": 0,
"favourites_count": 39,
"followers_count": 294,
"followers_count": 296,
"friends_count": 222,
"has_custom_timelines": false,
"is_translator": false,
@ -539,7 +547,7 @@
"location": "",
"media_count": 2,
"name": "teny.eth",
"normal_followers_count": 294,
"normal_followers_count": 296,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1516009073937891340/1651568998",
@ -551,7 +559,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -610,7 +619,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -648,9 +658,9 @@
}
},
"fast_followers_count": 0,
"favourites_count": 15435,
"favourites_count": 15433,
"followers_count": 787,
"friends_count": 5010,
"friends_count": 5009,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 8,
@ -666,12 +676,13 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1495177537554550787/zcSSAA3D_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "ARMGI9854WXZ59M",
"statuses_count": 17102,
"statuses_count": 17100,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -711,7 +722,7 @@
"fast_followers_count": 0,
"favourites_count": 277,
"followers_count": 119,
"friends_count": 263,
"friends_count": 274,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 0,
@ -730,7 +741,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -789,7 +801,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -848,7 +861,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -907,7 +921,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -966,7 +981,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1028,7 +1044,7 @@
},
"fast_followers_count": 0,
"favourites_count": 3445,
"followers_count": 198,
"followers_count": 200,
"friends_count": 1220,
"has_custom_timelines": false,
"is_translator": false,
@ -1036,7 +1052,7 @@
"location": "everywhere and nowhere",
"media_count": 360,
"name": "The Whole E Bubble",
"normal_followers_count": 198,
"normal_followers_count": 200,
"pinned_tweet_ids_str": [
"1620094485261869059"
],
@ -1062,6 +1078,9 @@
"icon_name": "IconBriefcaseStroke"
}
]
},
"tipjar_settings": {
"is_enabled": true
}
}
},
@ -1121,7 +1140,8 @@
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
}
},
"tipjar_settings": {}
}
},
"userDisplayType": "User"
@ -1186,9 +1206,9 @@
}
},
"fast_followers_count": 0,
"favourites_count": 7390,
"favourites_count": 7421,
"followers_count": 540,
"friends_count": 4987,
"friends_count": 4989,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 3,
@ -1202,7 +1222,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/961618203209228288/c_H53G3j_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "Yogi39Yogi",
"statuses_count": 9454,
"statuses_count": 9478,
"translator_type": "none",
"url": "https://t.co/FkxeNl3zwQ",
"verified": false,
@ -1219,6 +1239,9 @@
"icon_name": "IconBriefcaseStroke"
}
]
},
"tipjar_settings": {
"is_enabled": false
}
}
},

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -18,7 +18,7 @@
"entries": [
{
"entryId": "user-101584084",
"sortIndex": "1780786152769323008",
"sortIndex": "1780970553109118976",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -60,16 +60,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 407110,
"followers_count": 264672,
"friends_count": 31126,
"favourites_count": 407228,
"followers_count": 264841,
"friends_count": 31135,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 3655,
"listed_count": 3656,
"location": "transcendence",
"media_count": 33148,
"media_count": 33154,
"name": "Brian Roemmele",
"normal_followers_count": 264672,
"normal_followers_count": 264841,
"pinned_tweet_ids_str": [
"1564825039731535872"
],
@ -78,13 +78,18 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1492616506/Brian-Med-Green-Fin_normal.png",
"profile_interstitial_type": "",
"screen_name": "BrianRoemmele",
"statuses_count": 128593,
"statuses_count": 128626,
"translator_type": "none",
"url": "https://t.co/riCFzsOQbj",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {
"is_enabled": true,
"bitcoin_handle": "36RmdgQKH5bNAEUxnfGfbyLv6MqoQjJz7g",
"cash_app_handle": "$BrianRoemmele"
},
"super_follow_eligible": true
}
},
@ -98,7 +103,7 @@
},
{
"entryId": "user-2835451658",
"sortIndex": "1780786152769323007",
"sortIndex": "1780970553109118975",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -163,16 +168,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 68243,
"followers_count": 1464178,
"favourites_count": 68254,
"followers_count": 1464040,
"friends_count": 2930,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 6118,
"listed_count": 6120,
"location": "Portland, OR refugee in London",
"media_count": 15004,
"media_count": 15007,
"name": "Andy Ngô 🏳️‍🌈",
"normal_followers_count": 1464178,
"normal_followers_count": 1464040,
"pinned_tweet_ids_str": [
"1768697894347981276"
],
@ -181,7 +186,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1265070746931302401/2w71OcJP_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "MrAndyNgo",
"statuses_count": 43038,
"statuses_count": 43050,
"translator_type": "none",
"url": "https://t.co/g8LZzaVjZV",
"verified": false,
@ -199,6 +204,13 @@
}
]
},
"tipjar_settings": {
"is_enabled": true,
"bitcoin_handle": "333k25HfF8Rxw48YLdn4Xc58g7jf87xsbz",
"cash_app_handle": "MrAndyNgo",
"patreon_handle": "AndyNgo",
"venmo_handle": "MrAndyNgo"
},
"super_follow_eligible": true
}
},
@ -212,7 +224,7 @@
},
{
"entryId": "user-3129966405",
"sortIndex": "1780786152769323006",
"sortIndex": "1780970553109118974",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -255,15 +267,15 @@
},
"fast_followers_count": 0,
"favourites_count": 1054,
"followers_count": 30759,
"followers_count": 30766,
"friends_count": 60,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 98,
"location": "Germany",
"media_count": 220,
"media_count": 221,
"name": "wudijo",
"normal_followers_count": 30759,
"normal_followers_count": 30766,
"pinned_tweet_ids_str": [
"1773565280490332508"
],
@ -271,7 +283,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1584592441453199360/I0cQMKBs_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "wudijo",
"statuses_count": 858,
"statuses_count": 859,
"translator_type": "none",
"url": "https://t.co/iP893D6uys",
"verified": false,
@ -289,6 +301,7 @@
}
]
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -302,7 +315,7 @@
},
{
"entryId": "user-226986867",
"sortIndex": "1780786152769323005",
"sortIndex": "1780970553109118973",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -355,7 +368,7 @@
},
"fast_followers_count": 0,
"favourites_count": 1229,
"followers_count": 14622,
"followers_count": 14566,
"friends_count": 83,
"has_custom_timelines": false,
"is_translator": false,
@ -363,7 +376,7 @@
"location": "NRW, Germany",
"media_count": 103,
"name": "Rob2628",
"normal_followers_count": 14622,
"normal_followers_count": 14566,
"pinned_tweet_ids_str": [
"1741824559936868486"
],
@ -390,6 +403,7 @@
}
]
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -403,7 +417,7 @@
},
{
"entryId": "user-896466491587080194",
"sortIndex": "1780786152769323004",
"sortIndex": "1780970553109118972",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -446,7 +460,7 @@
},
"fast_followers_count": 0,
"favourites_count": 43156,
"followers_count": 354180,
"followers_count": 354185,
"friends_count": 2949,
"has_custom_timelines": true,
"is_translator": false,
@ -454,7 +468,7 @@
"location": "NoVA",
"media_count": 7530,
"name": "Greg Price",
"normal_followers_count": 354180,
"normal_followers_count": 354185,
"pinned_tweet_ids_str": [
"1753604603281658117"
],
@ -470,6 +484,11 @@
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {
"is_enabled": true,
"cash_app_handle": "gprice1234",
"venmo_handle": "gprice1234"
},
"super_follow_eligible": true
}
},
@ -483,7 +502,7 @@
},
{
"entryId": "user-294293982",
"sortIndex": "1780786152769323003",
"sortIndex": "1780970553109118971",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -525,16 +544,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 60099,
"followers_count": 176912,
"friends_count": 3465,
"favourites_count": 60149,
"followers_count": 177174,
"friends_count": 3467,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 865,
"listed_count": 862,
"location": "Michigan, USA",
"media_count": 52947,
"media_count": 52997,
"name": "Rothmus 🏴",
"normal_followers_count": 176912,
"normal_followers_count": 177174,
"pinned_tweet_ids_str": [
"1711806612749365270"
],
@ -543,7 +562,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1427434033290661891/hLTTZ5lt_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "Rothmus",
"statuses_count": 70312,
"statuses_count": 70378,
"translator_type": "none",
"url": "https://t.co/zd9bRP7CwA",
"verified": false,
@ -561,6 +580,11 @@
}
]
},
"tipjar_settings": {
"is_enabled": true,
"bitcoin_handle": "bc1qw2n02rzvrm8m9v46mz909hue3krrjc4f0yy722",
"ethereum_handle": ""
},
"super_follow_eligible": true
}
},
@ -574,7 +598,7 @@
},
{
"entryId": "user-3895214232",
"sortIndex": "1780786152769323002",
"sortIndex": "1780970553109118970",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -603,16 +627,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 56219,
"followers_count": 337861,
"favourites_count": 56253,
"followers_count": 337923,
"friends_count": 533,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 657,
"location": "Tennessee, USA",
"media_count": 9508,
"media_count": 9515,
"name": "Reddit Lies",
"normal_followers_count": 337861,
"normal_followers_count": 337923,
"pinned_tweet_ids_str": [
"1778899250857783731"
],
@ -621,12 +645,15 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1438530746164121602/esKsjv3b_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "reddit_lies",
"statuses_count": 17888,
"statuses_count": 17905,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {
"is_enabled": true
},
"super_follow_eligible": true
}
},
@ -640,7 +667,7 @@
},
{
"entryId": "user-191871143",
"sortIndex": "1780786152769323001",
"sortIndex": "1780970553109118969",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -705,16 +732,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 26685,
"followers_count": 876779,
"friends_count": 1992,
"favourites_count": 26690,
"followers_count": 877244,
"friends_count": 1993,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 3586,
"listed_count": 3592,
"location": "USA",
"media_count": 7089,
"name": "The Vigilant Fox 🦊",
"normal_followers_count": 876779,
"normal_followers_count": 877244,
"pinned_tweet_ids_str": [
"1780780482700951823"
],
@ -723,7 +750,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1657046545265557504/7wQ3wrAv_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "VigilantFox",
"statuses_count": 20117,
"statuses_count": 20120,
"translator_type": "none",
"url": "https://t.co/veNO5Xg9Hs",
"verified": false,
@ -741,6 +768,13 @@
}
]
},
"tipjar_settings": {
"is_enabled": true,
"bitcoin_handle": "3JUMCbLoQv2wNNU2knHkrnUpoCNXoCbFcp",
"cash_app_handle": "",
"patreon_handle": "",
"venmo_handle": "VigilantFox"
},
"super_follow_eligible": true
}
},
@ -754,7 +788,7 @@
},
{
"entryId": "user-1390762874809761793",
"sortIndex": "1780786152769323000",
"sortIndex": "1780970553109118968",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -809,8 +843,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 26825,
"followers_count": 1035870,
"favourites_count": 26830,
"followers_count": 1035824,
"friends_count": 93,
"has_custom_timelines": true,
"is_translator": false,
@ -818,7 +852,7 @@
"location": "",
"media_count": 2187,
"name": "Defiant Ls",
"normal_followers_count": 1035870,
"normal_followers_count": 1035824,
"pinned_tweet_ids_str": [
"1763040243693846869"
],
@ -834,6 +868,10 @@
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {
"is_enabled": true,
"cash_app_handle": ""
},
"super_follow_eligible": true
}
},
@ -847,7 +885,7 @@
},
{
"entryId": "user-31439580",
"sortIndex": "1780786152769322999",
"sortIndex": "1780970553109118967",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -876,8 +914,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 66229,
"followers_count": 78203,
"favourites_count": 66248,
"followers_count": 78222,
"friends_count": 2348,
"has_custom_timelines": true,
"is_translator": false,
@ -885,7 +923,7 @@
"location": "",
"media_count": 2961,
"name": "Joel Berry",
"normal_followers_count": 78203,
"normal_followers_count": 78222,
"pinned_tweet_ids_str": [
"1780549923374526859"
],
@ -894,12 +932,13 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1760073445180600320/CKyIkkId_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "JoelWBerry",
"statuses_count": 27283,
"statuses_count": 27286,
"translator_type": "none",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -913,7 +952,7 @@
},
{
"entryId": "user-15143478",
"sortIndex": "1780786152769322998",
"sortIndex": "1780970553109118966",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -975,15 +1014,15 @@
},
"fast_followers_count": 0,
"favourites_count": 230,
"followers_count": 3012997,
"followers_count": 3013040,
"friends_count": 359,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 17805,
"location": "",
"media_count": 866,
"media_count": 867,
"name": "Richard Dawkins",
"normal_followers_count": 3012997,
"normal_followers_count": 3013040,
"pinned_tweet_ids_str": [
"1779925270838796712"
],
@ -992,13 +1031,14 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1094327574031945729/tU8wz8DL_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "RichardDawkins",
"statuses_count": 32224,
"statuses_count": 32225,
"translator_type": "none",
"url": "https://t.co/UcChRWyGJF",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1012,7 +1052,7 @@
},
{
"entryId": "user-1599510806680535042",
"sortIndex": "1780786152769322997",
"sortIndex": "1780970553109118965",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1054,16 +1094,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 23571,
"followers_count": 302881,
"favourites_count": 23611,
"followers_count": 303378,
"friends_count": 148,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 1417,
"listed_count": 1420,
"location": "Florida",
"media_count": 2516,
"media_count": 2518,
"name": "Mike Benz",
"normal_followers_count": 302881,
"normal_followers_count": 303378,
"pinned_tweet_ids_str": [
"1666925704334950402"
],
@ -1072,13 +1112,14 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1599999101961224197/uBSpyKN0_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "MikeBenzCyber",
"statuses_count": 13314,
"statuses_count": 13324,
"translator_type": "none",
"url": "https://t.co/blplvbllR5",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1092,7 +1133,7 @@
},
{
"entryId": "user-16523905",
"sortIndex": "1780786152769322996",
"sortIndex": "1780970553109118964",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1144,8 +1185,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 187754,
"followers_count": 438890,
"favourites_count": 187763,
"followers_count": 438895,
"friends_count": 10187,
"has_custom_timelines": true,
"is_translator": false,
@ -1153,7 +1194,7 @@
"location": "Nashville, TN",
"media_count": 7811,
"name": "Robby Starbuck",
"normal_followers_count": 438890,
"normal_followers_count": 438895,
"pinned_tweet_ids_str": [
"1753518666056867866"
],
@ -1162,7 +1203,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1619031750302220311/SDAWFhh5_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "robbystarbuck",
"statuses_count": 108146,
"statuses_count": 108153,
"translator_type": "regular",
"url": "https://t.co/CqfgFs6NwI",
"verified": false,
@ -1174,6 +1215,7 @@
"professional_type": "Creator",
"category": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1187,7 +1229,7 @@
},
{
"entryId": "user-314341900",
"sortIndex": "1780786152769322995",
"sortIndex": "1780970553109118963",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1229,8 +1271,8 @@
}
},
"fast_followers_count": 0,
"favourites_count": 2287,
"followers_count": 24519,
"favourites_count": 2289,
"followers_count": 24520,
"friends_count": 1239,
"has_custom_timelines": true,
"is_translator": false,
@ -1238,7 +1280,7 @@
"location": "San Francisco, CA",
"media_count": 133,
"name": "Ross",
"normal_followers_count": 24519,
"normal_followers_count": 24520,
"pinned_tweet_ids_str": [
"1673484908524888066"
],
@ -1258,6 +1300,9 @@
"professional_type": "Creator",
"category": []
},
"tipjar_settings": {
"is_enabled": false
},
"super_follow_eligible": true
}
},
@ -1271,7 +1316,7 @@
},
{
"entryId": "user-116579971",
"sortIndex": "1780786152769322994",
"sortIndex": "1780970553109118962",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1313,16 +1358,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 35556,
"followers_count": 860688,
"favourites_count": 35566,
"followers_count": 860900,
"friends_count": 385,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 3580,
"listed_count": 3581,
"location": "Canada",
"media_count": 16403,
"name": "Gad Saad",
"normal_followers_count": 860688,
"normal_followers_count": 860900,
"pinned_tweet_ids_str": [
"1780688064152584589"
],
@ -1331,13 +1376,17 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/979192426660327424/4B9g75QR_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "GadSaad",
"statuses_count": 131047,
"statuses_count": 131056,
"translator_type": "none",
"url": "https://t.co/8p3F9wdOAO",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {
"is_enabled": true,
"patreon_handle": "GadSaad"
},
"super_follow_eligible": true
}
},
@ -1351,7 +1400,7 @@
},
{
"entryId": "user-1637507099558027267",
"sortIndex": "1780786152769322993",
"sortIndex": "1780970553109118961",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1403,16 +1452,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 58330,
"followers_count": 86233,
"friends_count": 877,
"favourites_count": 58431,
"followers_count": 86466,
"friends_count": 880,
"has_custom_timelines": false,
"is_translator": false,
"listed_count": 611,
"listed_count": 612,
"location": "Earth",
"media_count": 4727,
"name": "Crémieux",
"normal_followers_count": 86233,
"normal_followers_count": 86466,
"pinned_tweet_ids_str": [
"1770582513951326684"
],
@ -1421,13 +1470,14 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1637507712983375875/EQHiqVq8_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "cremieuxrecueil",
"statuses_count": 19953,
"statuses_count": 19963,
"translator_type": "none",
"url": "https://t.co/UFvzSpmGBI",
"verified": false,
"want_retweets": false,
"withheld_in_countries": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1441,7 +1491,7 @@
},
{
"entryId": "user-3291691",
"sortIndex": "1780786152769322992",
"sortIndex": "1780970553109118960",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1506,16 +1556,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 12823,
"followers_count": 1689737,
"favourites_count": 12821,
"followers_count": 1689618,
"friends_count": 825,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 15358,
"listed_count": 15360,
"location": "Arena",
"media_count": 460,
"name": "Chamath Palihapitiya",
"normal_followers_count": 1689737,
"normal_followers_count": 1689618,
"pinned_tweet_ids_str": [
"1719887650688282786"
],
@ -1536,6 +1586,7 @@
"professional_type": "Creator",
"category": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1549,7 +1600,7 @@
},
{
"entryId": "user-1457867047334031360",
"sortIndex": "1780786152769322991",
"sortIndex": "1780970553109118959",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1601,23 +1652,23 @@
}
},
"fast_followers_count": 0,
"favourites_count": 48301,
"followers_count": 1110808,
"friends_count": 774,
"favourites_count": 48309,
"followers_count": 1110810,
"friends_count": 775,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 11378,
"listed_count": 11375,
"location": "Georgia, USA",
"media_count": 6550,
"name": "OSINTdefender",
"normal_followers_count": 1110808,
"normal_followers_count": 1110810,
"pinned_tweet_ids_str": [],
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1457867047334031360/1638905263",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1505052393750384642/XNFUztL2_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "sentdefender",
"statuses_count": 30492,
"statuses_count": 30495,
"translator_type": "none",
"url": "https://t.co/yjWIFwAqR6",
"verified": false,
@ -1635,6 +1686,10 @@
}
]
},
"tipjar_settings": {
"is_enabled": true,
"cash_app_handle": "$OSINTdefender"
},
"super_follow_eligible": true
}
},
@ -1648,7 +1703,7 @@
},
{
"entryId": "user-1495726466",
"sortIndex": "1780786152769322990",
"sortIndex": "1780970553109118958",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1700,16 +1755,16 @@
}
},
"fast_followers_count": 0,
"favourites_count": 48658,
"followers_count": 525677,
"friends_count": 1534,
"favourites_count": 48668,
"followers_count": 525698,
"friends_count": 1537,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2025,
"location": "London, England",
"media_count": 1935,
"media_count": 1936,
"name": "Konstantin Kisin",
"normal_followers_count": 525677,
"normal_followers_count": 525698,
"pinned_tweet_ids_str": [
"1613830456243273730"
],
@ -1718,7 +1773,7 @@
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1271801424272384001/r4WGzdXc_normal.jpg",
"profile_interstitial_type": "",
"screen_name": "KonstantinKisin",
"statuses_count": 29060,
"statuses_count": 29064,
"translator_type": "none",
"url": "https://t.co/lTYIsbn2S0",
"verified": false,
@ -1730,6 +1785,9 @@
"professional_type": "Creator",
"category": []
},
"tipjar_settings": {
"is_enabled": true
},
"super_follow_eligible": true
}
},
@ -1743,7 +1801,7 @@
},
{
"entryId": "user-130003441",
"sortIndex": "1780786152769322989",
"sortIndex": "1780970553109118957",
"content": {
"entryType": "TimelineTimelineItem",
"__typename": "TimelineTimelineItem",
@ -1783,7 +1841,7 @@
},
"fast_followers_count": 0,
"favourites_count": 1505,
"followers_count": 680611,
"followers_count": 680579,
"friends_count": 456,
"has_custom_timelines": true,
"is_translator": false,
@ -1791,7 +1849,7 @@
"location": "Washington, DC",
"media_count": 7477,
"name": "Simon Ateba",
"normal_followers_count": 680611,
"normal_followers_count": 680579,
"pinned_tweet_ids_str": [
"1757511428552995272"
],
@ -1811,6 +1869,7 @@
"professional_type": "Creator",
"category": []
},
"tipjar_settings": {},
"super_follow_eligible": true
}
},
@ -1823,22 +1882,22 @@
}
},
{
"entryId": "cursor-bottom-1780786152769322988",
"sortIndex": "1780786152769322988",
"entryId": "cursor-bottom-1780970553109118956",
"sortIndex": "1780970553109118956",
"content": {
"entryType": "TimelineTimelineCursor",
"__typename": "TimelineTimelineCursor",
"value": "1779161710279382311|1780786152769322986",
"value": "1779161710279382311|1780970553109118954",
"cursorType": "Bottom"
}
},
{
"entryId": "cursor-top-1780786152769323009",
"sortIndex": "1780786152769323009",
"entryId": "cursor-top-1780970553109118977",
"sortIndex": "1780970553109118977",
"content": {
"entryType": "TimelineTimelineCursor",
"__typename": "TimelineTimelineCursor",
"value": "-1|1780786152769323009",
"value": "-1|1780970553109118977",
"cursorType": "Top"
}
}

Просмотреть файл

@ -69,15 +69,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -104,7 +104,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -119,7 +120,7 @@
},
"is_translatable": false,
"views": {
"count": "744078",
"count": "744324",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -139,7 +140,7 @@
"urls": [],
"user_mentions": []
},
"favorite_count": 459,
"favorite_count": 458,
"favorited": false,
"full_text": "Today, we are deprecating our Premium v1.1 API, including Premium Search and Account Activity API.",
"is_quote_status": false,
@ -229,15 +230,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -264,7 +265,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -279,7 +281,7 @@
},
"is_translatable": false,
"views": {
"count": "190478",
"count": "190485",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -394,15 +396,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -429,7 +431,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -444,7 +447,7 @@
},
"is_translatable": false,
"views": {
"count": "178247",
"count": "178357",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -571,15 +574,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -606,7 +609,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -621,7 +625,7 @@
},
"is_translatable": false,
"views": {
"count": "147560",
"count": "147670",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -699,7 +703,7 @@
}
},
{
"entryId": "cursor-showmorethreads-608659526907586392",
"entryId": "cursor-showmorethreads-1035688227873306695",
"sortIndex": "7574180516604530675",
"content": {
"entryType": "TimelineTimelineItem",

Просмотреть файл

@ -69,15 +69,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624634,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624634,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -104,7 +104,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -119,7 +120,7 @@
},
"is_translatable": false,
"views": {
"count": "744078",
"count": "744323",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -229,15 +230,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624634,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624634,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -264,7 +265,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -279,7 +281,7 @@
},
"is_translatable": false,
"views": {
"count": "190478",
"count": "190485",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -394,15 +396,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624634,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624634,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -429,7 +431,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -444,7 +447,7 @@
},
"is_translatable": false,
"views": {
"count": "178247",
"count": "178357",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -571,15 +574,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624634,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624634,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -606,7 +609,8 @@
"icon_name": "IconBriefcaseStroke"
}
]
}
},
"tipjar_settings": {}
}
}
},
@ -621,7 +625,7 @@
},
"is_translatable": false,
"views": {
"count": "147560",
"count": "147669",
"state": "EnabledWithCount"
},
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
@ -699,7 +703,7 @@
}
},
{
"entryId": "cursor-showmorethreads-4670310023196643569",
"entryId": "cursor-showmorethreads-8582045099848601206",
"sortIndex": "7574180516604530675",
"content": {
"entryType": "TimelineTimelineItem",

Просмотреть файл

@ -49,15 +49,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -85,6 +85,7 @@
}
]
},
"tipjar_settings": {},
"smart_blocked_by": false,
"smart_blocking": false,
"business_account": {},

Просмотреть файл

@ -49,15 +49,15 @@
},
"fast_followers_count": 0,
"favourites_count": 2080,
"followers_count": 624531,
"followers_count": 624633,
"friends_count": 1767,
"has_custom_timelines": true,
"is_translator": false,
"listed_count": 2648,
"listed_count": 2647,
"location": "127.0.0.1",
"media_count": 815,
"name": "Developers",
"normal_followers_count": 624531,
"normal_followers_count": 624633,
"pinned_tweet_ids_str": [
"1770153912013615285"
],
@ -85,6 +85,7 @@
}
]
},
"tipjar_settings": {},
"smart_blocked_by": false,
"smart_blocking": false,
"legacy_extended_profile": {},

9887
tests/mocked-data/raw_user_media.json Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -315,6 +315,20 @@ async def test_user_tweets_and_replies():
check_tweet(doc)
async def test_raw_user_media():
api = API()
mock_rep(api.user_media_raw, "raw_user_media", as_generator=True)
tweets = await gather(api.user_media(2244994945))
assert len(tweets) > 0
for doc in tweets:
check_tweet(doc)
assert doc.media is not None
media_count = len(doc.media.photos) + len(doc.media.videos) + len(doc.media.animated)
assert media_count > 0, f"{doc.url} should have media"
async def test_list_timeline():
api = API()
mock_rep(api.list_timeline_raw, "raw_list_timeline", as_generator=True)

Просмотреть файл

@ -22,36 +22,37 @@ OP_ListLatestTweetsTimeline = "GX5ovLTwyoN1Td13GHvhIg/ListLatestTweetsTimeline"
OP_Likes = "RaAkBb4XXis-atDL3rV-xw/Likes"
OP_BlueVerifiedFollowers = "AXsZSOWx3FCvneEIzxDj6A/BlueVerifiedFollowers"
OP_UserCreatorSubscriptions = "NHT8e7FjnCS3TP0QfP_OUQ/UserCreatorSubscriptions"
OP_UserMedia = "aQQLnkexAl5z9ec_UgbEIA/UserMedia"
GQL_URL = "https://twitter.com/i/api/graphql"
GQL_FEATURES = { # search values here (view source) https://twitter.com/
"articles_preview_enabled": False,
"c9s_tweet_anatomy_moderator_badge_enabled": True,
"communities_web_enable_tweet_community_results_fetch": True,
"creator_subscriptions_quote_tweet_preview_enabled": False,
"creator_subscriptions_tweet_preview_api_enabled": True,
"freedom_of_speech_not_reach_fetch_enabled": True,
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": True,
"longform_notetweets_consumption_enabled": True,
"longform_notetweets_inline_media_enabled": True,
"longform_notetweets_rich_text_read_enabled": True,
"responsive_web_edit_tweet_api_enabled": True,
"responsive_web_enhance_cards_enabled": False,
"responsive_web_graphql_exclude_directive_enabled": True,
"verified_phone_label_enabled": False,
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": False,
"responsive_web_graphql_timeline_navigation_enabled": True,
"tweetypie_unmention_optimization_enabled": True,
"responsive_web_edit_tweet_api_enabled": True,
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": True,
"view_counts_everywhere_api_enabled": True,
"longform_notetweets_consumption_enabled": True,
"tweet_awards_web_tipping_enabled": False,
"freedom_of_speech_not_reach_fetch_enabled": True,
"standardized_nudges_misinfo": True,
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": True,
"longform_notetweets_rich_text_read_enabled": True,
"responsive_web_enhance_cards_enabled": False,
"creator_subscriptions_tweet_preview_api_enabled": True,
"longform_notetweets_inline_media_enabled": True,
"responsive_web_media_download_video_enabled": False,
"responsive_web_twitter_article_tweet_consumption_enabled": False,
"c9s_tweet_anatomy_moderator_badge_enabled": True,
"responsive_web_twitter_article_tweet_consumption_enabled": True,
"rweb_tipjar_consumption_enabled": True,
"rweb_video_timestamps_enabled": True,
"rweb_tipjar_consumption_enabled": False,
"communities_web_enable_tweet_community_results_fetch": False,
"creator_subscriptions_quote_tweet_preview_enabled": False,
"standardized_nudges_misinfo": True,
"tweet_awards_web_tipping_enabled": False,
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": True,
"tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": False,
"articles_preview_enabled": False,
"tweetypie_unmention_optimization_enabled": True,
"verified_phone_label_enabled": False,
"view_counts_everywhere_api_enabled": True,
}
@ -110,6 +111,8 @@ class API:
params["variables"]["cursor"] = cur
if queue in ("SearchTimeline", "ListLatestTweetsTimeline"):
params["fieldToggles"] = {"withArticleRichContentState": False}
if queue in ("UserMedia",):
params["fieldToggles"] = {"withArticlePlainText": False}
rep = await client.get(f"{GQL_URL}/{op}", params=encode_params(params))
if rep is None:
@ -381,7 +384,40 @@ class API:
for x in parse_tweets(rep.json(), limit):
yield x
# list timeline
# user_media
async def user_media_raw(self, uid: int, limit=-1, kv=None):
op = OP_UserMedia
kv = {
"userId": str(uid),
"count": 40,
"includePromotedContent": False,
"withClientEventToken": False,
"withBirdwatchNotes": False,
"withVoice": True,
"withV2Timeline": True,
**(kv or {}),
}
async with aclosing(self._gql_items(op, kv, limit=limit)) as gen:
async for x in gen:
yield x
async def user_media(self, uid: int, limit=-1, kv=None):
async with aclosing(self.user_media_raw(uid, limit=limit, kv=kv)) as gen:
async for rep in gen:
for x in parse_tweets(rep, limit):
# sometimes some tweets without media, so skip them
media_count = (
len(x.media.photos) + len(x.media.videos) + len(x.media.animated)
if x.media
else 0
)
if media_count > 0:
yield x
# list_timeline
async def list_timeline_raw(self, list_id: int, limit=-1, kv=None):
op = OP_ListLatestTweetsTimeline

Просмотреть файл

@ -195,6 +195,7 @@ def run():
c_lim("subscriptions", "Get user subscriptions", "user_id", "User ID", int)
c_lim("user_tweets", "Get user tweets", "user_id", "User ID", int)
c_lim("user_tweets_and_replies", "Get user tweets and replies", "user_id", "User ID", int)
c_lim("user_media", "Get user's media", "user_id", "User ID", int)
c_lim("list_timeline", "Get tweets from list", "list_id", "List ID", int)
c_lim("liked_tweets", "Get user's liked tweets", "user_id", "User ID", int)