|
@@ -608,6 +608,67 @@ def get_bookmarks_feed (user_id, pagination_token=None, max_results=10, me=None)
|
|
|
|
|
|
|
|
return collection_page
|
|
return collection_page
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+def get_liked_tweets_feed (user_id, pagination_token=None, max_results=10, me=None):
|
|
|
|
|
+
|
|
|
|
|
+ if not me:
|
|
|
|
|
+ me = g.get('me') or request.args.get('me')
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ print(f'get_liked_tweets_feed. me={me}')
|
|
|
|
|
+
|
|
|
|
|
+ twitter_user = session.get( me )
|
|
|
|
|
+
|
|
|
|
|
+ if not twitter_user:
|
|
|
|
|
+ return None
|
|
|
|
|
+
|
|
|
|
|
+ token = twitter_user['access_token']
|
|
|
|
|
+
|
|
|
|
|
+ tweet_source = ApiV2TweetSource(token)
|
|
|
|
|
+ response_tweets = tweet_source.get_liked_tweets(user_id,
|
|
|
|
|
+ pagination_token = pagination_token,
|
|
|
|
|
+ return_dataclass=True,
|
|
|
|
|
+ max_results=max_results
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ #print(response_json)
|
|
|
|
|
+
|
|
|
|
|
+ cache_tweets_response(response_tweets, 'liked_tweets', user_id, user_id=user_id, pagination_token=pagination_token)
|
|
|
|
|
+
|
|
|
|
|
+ if response_tweets.data:
|
|
|
|
|
+ includes = response_tweets.includes
|
|
|
|
|
+ tweets = list(map(lambda t: tweet_model_dc_vm(includes, t, me), response_tweets.data))
|
|
|
|
|
+ next_token = response_tweets.meta.next_token
|
|
|
|
|
+ else:
|
|
|
|
|
+ print('no tweet data:')
|
|
|
|
|
+ print(response_tweets)
|
|
|
|
|
+ tweets = []
|
|
|
|
|
+ next_token = None
|
|
|
|
|
+
|
|
|
|
|
+ query = {}
|
|
|
|
|
+
|
|
|
|
|
+ if next_token:
|
|
|
|
|
+ query = {
|
|
|
|
|
+ **query,
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ user = {
|
|
|
|
|
+ 'id': user_id
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ts = int(time.time() * 1000)
|
|
|
|
|
+ with open(f'{DATA_DIR}/cache/liked_tweets_{user_id}_{ts}_{pagination_token}.json', 'wt') as f:
|
|
|
|
|
+ f.write(json.dumps(cleandict(asdict(response_tweets))))
|
|
|
|
|
+
|
|
|
|
|
+ collection_page = CollectionPage(
|
|
|
|
|
+ id = user_id, # FIXME this should perhaps be the unresolved id
|
|
|
|
|
+ items = tweets,
|
|
|
|
|
+ next_token = next_token
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ return collection_page
|
|
|
|
|
+
|
|
|
def get_user_feed (user_id, me=None, **twitter_kwargs):
|
|
def get_user_feed (user_id, me=None, **twitter_kwargs):
|
|
|
|
|
|
|
|
if not me and 'me' in g:
|
|
if not me and 'me' in g:
|
|
@@ -1014,6 +1075,7 @@ def register_content_sources ():
|
|
|
register_content_source('twitter:tweet:', get_tweet_item, id_pattern='(?P<tweet_id>\d+)')
|
|
register_content_source('twitter:tweet:', get_tweet_item, id_pattern='(?P<tweet_id>\d+)')
|
|
|
register_content_source('twitter:tweet:', get_tweet_embed, id_pattern='(?P<tweet_id>\d+)')
|
|
register_content_source('twitter:tweet:', get_tweet_embed, id_pattern='(?P<tweet_id>\d+)')
|
|
|
register_content_source('twitter:bookmarks:', get_bookmarks_feed, id_pattern='(?P<user_id>\d+)')
|
|
register_content_source('twitter:bookmarks:', get_bookmarks_feed, id_pattern='(?P<user_id>\d+)')
|
|
|
|
|
+ register_content_source('twitter:liked_tweets:', get_liked_tweets_feed, id_pattern='(?P<user_id>\d+)')
|
|
|
register_content_source('twitter:feed:user:', get_user_feed, id_pattern='(?P<user_id>\d+)')
|
|
register_content_source('twitter:feed:user:', get_user_feed, id_pattern='(?P<user_id>\d+)')
|
|
|
register_content_source('twitter:user:', get_user, id_pattern='(?P<user_id>\d+)')
|
|
register_content_source('twitter:user:', get_user, id_pattern='(?P<user_id>\d+)')
|
|
|
register_content_source('twitter:users', get_users, id_pattern='')
|
|
register_content_source('twitter:users', get_users, id_pattern='')
|