v6d3music/v6d3music/utils/entries_for_url.py
2022-12-20 02:18:49 +00:00

30 lines
691 B
Python

from typing import Any, AsyncIterable
from v6d2ctx.context import Explicit
from v6d3music.utils.aextract import aextract
from v6d3music.utils.tor_extract import tor_extract
async def entries_for_url(url: str, tor: bool) -> AsyncIterable[
dict[str, Any]
]:
ef = aextract
if tor:
ef = tor_extract
info = await ef(
{
'logtostderr': True
},
url,
download=False,
process=False
)
if '__error__' in info:
raise Explicit('extraction error\n' + info.get('__error_str__'))
if 'entries' in info:
for entry in info['entries']:
yield entry
else:
yield info | {'url': url}