66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
import json
|
|
import os
|
|
from pathlib import Path
|
|
|
|
import requests
|
|
import tweepy
|
|
import yaml
|
|
from hypy_utils import ensure_dir, write
|
|
from tweepy import User
|
|
|
|
|
|
def wget(url: str, file: Path):
|
|
if not file.is_file():
|
|
r = requests.get(url)
|
|
write(file, r.content)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# token = os.environ['TWITTER_BEARER']
|
|
# auth = tweepy.OAuth2BearerHandler(token)
|
|
# api = tweepy.API(auth)
|
|
|
|
gen_path = ensure_dir('content/generated/friends')
|
|
(gen_path / 'img').mkdir(exist_ok=True, parents=True)
|
|
|
|
# Load friends
|
|
friends: dict[str, dict] = yaml.safe_load(Path('content/friends.yaml').read_text())
|
|
|
|
# Loop through all friends
|
|
for name, f in friends.items():
|
|
avatar_path = gen_path / f'img/{name}-avatar.jpg'
|
|
banner_path = gen_path / f'img/{name}-banner.jpg'
|
|
|
|
avatar, banner = f.get('avatar'), f.get('banner')
|
|
|
|
# Get avatar url
|
|
# if 'twitter' in f:
|
|
# try:
|
|
# u: User = api.get_user(user_id=f['twitter'])
|
|
# print(f"{f['twitter']}'s username is {u.screen_name}")
|
|
# f['twitter'] = f"https://twitter.com/{u.screen_name}"
|
|
|
|
# if not avatar:
|
|
# avatar = u.profile_image_url_https.replace('_normal', '')
|
|
# if not banner and 'profile_banner_url' in u.__dict__:
|
|
# banner = u.profile_banner_url
|
|
|
|
# except tweepy.errors.NotFound:
|
|
# print(f"Twitter user {f['twitter']} not found, removing from friends.json")
|
|
# del f['twitter']
|
|
|
|
# Download avatar/banner locally if not exist
|
|
if banner:
|
|
wget(banner, banner_path)
|
|
if avatar:
|
|
wget(avatar, avatar_path)
|
|
|
|
f['avatar'], f['banner'] = str(avatar_path), str(banner_path)
|
|
|
|
# Map names
|
|
friends: list[dict] = [{'name': name, **f} for name, f in friends.items()]
|
|
|
|
write(gen_path / 'friends.json', json.dumps(friends))
|
|
|
|
print('Done')
|