{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "𝐎𝐒𝐈𝐍𝐓 - 𝐓𝐰𝐢𝐭𝐭𝐞𝐫 𝐝𝐨𝐫𝐤𝐬 For \"Russia-Ukraine Conflict\"\n", "\n", "OSINT to Pandas By https://medium.com/@liontin\n", "\n", "Tweet Dork by : https://twitter.com/techniquesOsint/\n", "\n", "search Query by Hastags, language, filter by video, location by goecode and radius\n", "\n", "**#StandWithUkraine lang:uk \"filter:native_video\" geocode:49.3227937844972,31.3202829593814,200km**\n", "\n", "search Query by language, filter by video, location by goecode and radius\n", "\n", "**lang:uk \"filter:native_video\" geocode:49.3227937844972,31.3202829593814,200km**\n", "\n", "search Query by language, filter by video, filter by account verified, location by goecode and radius\n", "\n", "**lang:uk \"filter:native_video\" \"filter:verified\" geocode:49.3227937844972,31.3202829593814,200km**\n", "\n", "search Query by language, filter by video, and filter by account verified\n", "\n", "**lang:uk \"filter:verified\" #Kyiv**\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 441, "metadata": {}, "outputs": [], "source": [ "import requests\n", "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 442, "metadata": {}, "outputs": [], "source": [ "token_reponse = requests.request(\"POST\", 'https://api.twitter.com/1.1/guest/activate.json', headers={'authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'}).json() # Please Input You Bearer Code\n", "guest_token = token_reponse['guest_token']\n", "\n", "\n", "keywoard = input('keywoard')\n", "numberstart = input('Number')\n", "tweets = []\n", "num_tweets = int(numberstart)\n", "first_scroll = True\n", "\n", "params = {\n", " 'include_quote_count': True,\n", " 'include_reply_count': True,\n", " 'tweet_mode': 'extended',\n", " 'tweet_search_mode': 'live',\n", " 'q': keywoard,\n", " 'query_source': 'typed_query',\n", " 'result_filter': 'video',\n", " 'cursor': None,\n", "}\n", "\n", "headers = {\n", " 'authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA', # Please Input You Bearer Code\n", " 'x-guest-token': guest_token,\n", "}\n", "\n", "\n", "while len(tweets) < num_tweets:\n", " tweet_data = requests.get('https://twitter.com/i/api/2/search/adaptive.json', headers=headers, params=params).json()\n", "\n", " for tweet in tweet_data['globalObjects']['tweets']:\n", " tweetuser = tweet_data['globalObjects']['tweets'][tweet]['extended_entities']['media'][0]['expanded_url'].replace('https://', '').split('/')[1]\n", " try : replay = tweet_data['globalObjects']['tweets'][tweet]['reply_count']\n", " except : replay = '0'\n", " text = tweet_data['globalObjects']['tweets'][tweet]['full_text']\n", " tweettime = tweet_data['globalObjects']['tweets'][tweet]['created_at']\n", " try : retweet = tweet_data['globalObjects']['tweets'][tweet]['retweet_count']\n", " except : retweet = '0'\n", " try : quote = tweet_data['globalObjects']['tweets'][tweet]['quote_count']\n", " except : quote = '0'\n", " try : tweetlike = tweet_data['globalObjects']['tweets'][tweet]['favorite_count']\n", " except : tweetlike = '0'\n", " try : tweetmedia = tweet_data['globalObjects']['tweets'][tweet]['extended_entities']['media'][0]['expanded_url']\n", " except : tweetmedia = '0'\n", " try : tweetview = tweet_data['globalObjects']['tweets'][tweet]['extended_entities']['media'][0]['ext']['r']['ok']['viewCount']\n", " except : tweetview = '0'\n", " tweeturl = tweet_data['globalObjects']['tweets'][tweet]['extended_entities']['media'][0]['url']\n", " \n", "\n", " tweets.append({'username': str('@%s' % tweetuser),'tweet': text, 'replay': replay, 'retweet': retweet, 'retweet comments': quote, 'like': tweetlike, 'media': tweetmedia, 'link': tweeturl, 'time': tweettime})\n", " getww3 = []\n", " for tweet in tweets:\n", " data = tweet\n", " getww3.append(data)\n", "\n", " if first_scroll:\n", " entries = tweet_data['timeline']['instructions'][0]['addEntries']['entries']\n", " for entry in entries:\n", " if entry['entryId'] == 'sq-cursor-bottom':\n", " params['cursor'] = entry['content']['operation']['cursor']['value']\n", " first_scroll = False\n", " else:\n", " for object in tweet_data['timeline']['instructions']:\n", " if 'replaceEntry' in object:\n", " if object['replaceEntry']['entryIdToReplace'] == 'sq-cursor-bottom':\n", " params['cursor'] = object['replaceEntry']['entry']['content']['operation']['cursor']['value']\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 443, "metadata": {}, "outputs": [], "source": [ "ru_uk = pd.DataFrame(getww3)" ] }, { "cell_type": "code", "execution_count": 444, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | username | \n", "tweet | \n", "replay | \n", "retweet | \n", "retweet comments | \n", "like | \n", "media | \n", "link | \n", "time | \n", "
---|---|---|---|---|---|---|---|---|---|
0 | \n", "@ArmedForcesUkr | \n", "Привіт від Харківських танкістів! \\nСЛАВА УКРА... | \n", "91 | \n", "917 | \n", "62 | \n", "3884 | \n", "https://twitter.com/ArmedForcesUkr/status/1498... | \n", "https://t.co/KMbO1eD2LF | \n", "Mon Feb 28 05:04:27 +0000 2022 | \n", "
1 | \n", "@ian_tanya | \n", "Російські окупаційні війська зайшли в місто Ге... | \n", "139 | \n", "2535 | \n", "495 | \n", "9455 | \n", "https://twitter.com/ian_tanya/status/149684513... | \n", "https://t.co/Lp95AJu1Tk | \n", "Thu Feb 24 13:51:04 +0000 2022 | \n", "
2 | \n", "@olehbatkovych | \n", "Пояснення чому не було брифінгу Путіна https:/... | \n", "38 | \n", "425 | \n", "19 | \n", "1996 | \n", "https://twitter.com/olehbatkovych/status/14979... | \n", "https://t.co/j5c8f6x3Dn | \n", "Sun Feb 27 15:10:59 +0000 2022 | \n", "
3 | \n", "@ArmedForcesUkr | \n", "Байрактари в роботі. Наші оператори ювелірно к... | \n", "736 | \n", "5288 | \n", "1025 | \n", "20738 | \n", "https://twitter.com/ArmedForcesUkr/status/1497... | \n", "https://t.co/dH2UEUbKST | \n", "Sun Feb 27 18:08:15 +0000 2022 | \n", "
4 | \n", "@Vitaliy_Klychko | \n", "⚡️Володимир Кличко звернувся до демократичного... | \n", "753 | \n", "7658 | \n", "503 | \n", "23010 | \n", "https://twitter.com/Vitaliy_Klychko/status/149... | \n", "https://t.co/mt5Jmmu6hr | \n", "Sat Feb 26 14:07:04 +0000 2022 | \n", "
5 | \n", "@bohdandj | \n", "Харків. Гради по житлових кварталах https://t.... | \n", "0 | \n", "16 | \n", "3 | \n", "13 | \n", "https://twitter.com/bohdandj/status/1498259024... | \n", "https://t.co/Q7iMxRqD9n | \n", "Mon Feb 28 11:29:22 +0000 2022 | \n", "
6 | \n", "@NCherkasy | \n", "Чіназес))) https://t.co/mpId8LHBxq | \n", "0 | \n", "5 | \n", "0 | \n", "6 | \n", "https://twitter.com/NCherkasy/status/149825897... | \n", "https://t.co/mpId8LHBxq | \n", "Mon Feb 28 11:29:10 +0000 2022 | \n", "
7 | \n", "@ArmedForcesUkr | \n", "ПРОПОЗИЦІЯ ДЛЯ 🇷🇺 ОКУПАНТІВ! https://t.co/JegD... | \n", "51 | \n", "774 | \n", "77 | \n", "1960 | \n", "https://twitter.com/ArmedForcesUkr/status/1498... | \n", "https://t.co/JegDKXqELq | \n", "Sun Feb 27 20:31:34 +0000 2022 | \n", "
8 | \n", "@ukrpravda_news | \n", "Росіяни обстріляли Харків https://t.co/tj3DgDSAZl | \n", "4 | \n", "37 | \n", "1 | \n", "23 | \n", "https://twitter.com/ukrpravda_news/status/1498... | \n", "https://t.co/tj3DgDSAZl | \n", "Mon Feb 28 11:23:19 +0000 2022 | \n", "
9 | \n", "@ArmedForcesUkr | \n", "Харків ❗❗❗ https://t.co/qD2RmqbsiY | \n", "5 | \n", "100 | \n", "7 | \n", "204 | \n", "https://twitter.com/ArmedForcesUkr/status/1498... | \n", "https://t.co/qD2RmqbsiY | \n", "Mon Feb 28 11:26:19 +0000 2022 | \n", "