From 93018b8cd1d58ec0681be66087c8bc4f8e8d23a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=A7=89=20infominer?= Date: Mon, 11 Sep 2023 16:46:35 -0400 Subject: [PATCH] depreciated --- infominer.png | Bin 13744 -> 0 bytes requirements.txt | 2 - staticman.yml | 28 ------ twscraper.py | 248 ----------------------------------------------- 4 files changed, 278 deletions(-) delete mode 100644 infominer.png delete mode 100644 requirements.txt delete mode 100644 staticman.yml delete mode 100644 twscraper.py diff --git a/infominer.png b/infominer.png deleted file mode 100644 index 2c513db3540433cdc358e5dc132a08f37b66da48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13744 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 M$*IfMN?U~f4>Getting Link Metadata<<') - headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'} - tit, desc, ima = web_preview(lkn,timeout=10,headers=headers,parser='lxml') - title.append(tit) - description.append(desc) - image.append(ima) - except: - pass - ### If it's a quote-tweet, get original stats - if hasattr(tweet, 'quoted_status'): - qtmedia = [''] - qturls = [''] - qttext = tweet.quoted_status.full_text - qtuser = tweet.quoted_status.user.screen_name - qtid = "https://twitter.com/" + qtuser + "/status/" + tweet.quoted_status.id_str - if 'media' in tweet.quoted_status.entities: - for media in tweet.quoted_status.extended_entities['media']: - qtmedia.append(media['media_url_https']) - if 'urls' in tweet.quoted_status.entities: - for url in tweet.quoted_status.entities['urls']: - qturls.append(url['expanded_url']) - #### Column attributes - line = [created, id, lnks, title, description, image, medias, replink, qtid, qtmedia, qturls] - - #### Write row to CSV and print line - csvWriter.writerow(line) - tweet_ids.append(idstr) - print(idstr) - -#### Get USER Tweets -tweets = [] -ids = [] -tmpTweets = api.user_timeline('DecentralizeID') -for tweet in tmpTweets: - created = tweet.created_at.strftime("%Y-%m-%d, %H:%M:%S") - if created < date_time and created > startDate: - tweets.append(tweet) - -while (tmpTweets[-1].created_at.strftime("%Y-%m-%d, %H:%M:%S") > startDate): - print("Last Tweet @", tmpTweets[-1].created_at, " - fetching some more") - tmpTweets = api.user_timeline(username, max_id = tmpTweets[-1].id) - for tweet in tmpTweets: - createdate = tweet.created_at.strftime("%Y-%m-%d, %H:%M:%S") - if createdate < date_time and createdate > startdate: - tweets.append(tweet) - - -for tweet in tweets: - created = str(tweet.created_at) - id = "https://twitter.com/" + username + "/status/" + tweet.id_str - idstr = str(tweet.id_str) - username = tweet.user.screen_name - if hasattr(tweet, 'text'): - text = tweet.text - if hasattr(tweet, 'full_text'): - text = tweet.full_text - try: - username = tweet.retweeted_status.user.screen_name - id = "https://twitter.com/" + tweet.retweeted_status.user.screen_name + "/status/" + tweet.retweeted_status.id_str - idstr = tweet.retweeted_status.id_str - except: - pass - if id not in ids: - ids.append(id) - tweet_ids.append(idstr) - line = [created, id, lnks, title, description, image, medias, replink, qtid, qttext, qtmedia, qturls] - #### Write row to CSV and print line - csvWriter.writerow(line) -csvFile.close() -print(tweet_ids) - -# Create Collection -from requests_oauthlib import OAuth1Session -import json -## OAuth vs Tweepy auth, idk why can't create collection with above tweepy auth -consumer_key = os.environ.get('CONSUMER_KEY') -consumer_secret = os.environ.get('CONSUMER_SECRET') -access_token = os.environ.get('ACCESS_KEY') -access_token_secret = os.environ.get('ACCESS_SECRET') -print(consumer_key) -print(consumer_secret) -print(access_token) -print(access_token_secret) -twitter = OAuth1Session(consumer_key, - client_secret=consumer_secret, - resource_owner_key=access_token, - resource_owner_secret=access_token_secret) - -# create -url = 'https://api.twitter.com/1.1/collections/create.json' -params_create = { - 'name': 'Decentralized-ID Curated ' + date_time, - 'description': 'Decentralized Identity Curated Tweets by @infominer33 via identosphere.net', - 'timeline_order': 'tweet_chron' - } -r = twitter.post(url, data=params_create) -print(r.json()) -print(r.json()['response']) -# 'response': {'timeline_id': 'custom-1180945428222595074'}} -## Extract ID from response -res = str(r.json()['response']) -ss1 = "{'timeline_id': 'custom-" -ss2 = "'}" -resp = res.removeprefix(ss1) -response = resp.removesuffix(ss2) - -timeline_id = r.json()['response']['timeline_id'] -# the collection can be viewed at, eg: https://twitter.com/laurenfratamico/timelines/1180945428222595074 - -# bulk add -url = 'https://api.twitter.com/1.1/collections/entries/curate.json' -# split into batches of 100 for the uploads -n = 100 -batches = [tweet_ids[i:i + n] for i in range(0, len(tweet_ids), n)] -print (len(batches)) - -for batch in batches: - params_add = { - "id": timeline_id, - "changes": [] - } - for tweet_id in batch: - sub_params_add = { - "tweet_id": str(tweet_id), - "op": "add" - } - params_add['changes'].append(sub_params_add) - - r = twitter.post(url, data=json.dumps(params_add)) - print(r.json()) - -file_name = "_posts/twitter/" + str(date_time) + '-twitter.md' -f = open(file_name,"w+") - -str1 = "---\n" -str2 = 'title: "Twitter Collection – ' + date_time + '"\n' -str3 = 'description: "Collection of tweets on decentralized identity – ' + date_time + '"\n' -str4 = "last_modified_at: " + date_time + '\n' -str5 = "---\n" -str6 = "\n\n" -str7 = ' ' - -L = [str1, str2, str3, str4, str5, str6, str7] -f.writelines(L) -f.close() \ No newline at end of file