forked from forks/microblog.pub
33 lines
880 B
Python
33 lines
880 B
Python
|
from pathlib import Path
|
||
|
|
||
|
from loguru import logger
|
||
|
|
||
|
from app.webfinger import get_actor_url
|
||
|
|
||
|
|
||
|
def _load_mastodon_following_accounts_csv_file(path: str) -> list[str]:
|
||
|
handles = []
|
||
|
for line in Path(path).read_text().splitlines()[1:]:
|
||
|
handle = line.split(",")[0]
|
||
|
handles.append(handle)
|
||
|
|
||
|
return handles
|
||
|
|
||
|
|
||
|
async def get_actor_urls_from_following_accounts_csv_file(
|
||
|
path: str,
|
||
|
) -> list[tuple[str, str]]:
|
||
|
actor_urls = []
|
||
|
for handle in _load_mastodon_following_accounts_csv_file(path):
|
||
|
try:
|
||
|
actor_url = await get_actor_url(handle)
|
||
|
except Exception:
|
||
|
logger.error("Failed to fetch actor URL for {handle=}")
|
||
|
else:
|
||
|
if actor_url:
|
||
|
actor_urls.append((handle, actor_url))
|
||
|
else:
|
||
|
logger.info(f"No actor URL found for {handle=}")
|
||
|
|
||
|
return actor_urls
|