пакет предоставляет функции для получения содержания статей или видео с YouTube и запуска API-сервера для суммаризации через сервис 300.ya.ru.
-
из репозитория pypi:
pip install prlps_ya300
-
из репозитория github:
pip install git+https://github.com/gniloyprolaps/ya300.git
функция get_summary
служит для получения содержания статьи или видео с YouTube.
article_or_youtube_url
(str): URL статьи или видео (поддерживаются только ссылки с YouTube).short
(bool): возвратить только краткие заголовки тезисов для статей и только озаглавленные таймкоды для видео.session_id
(str):Session_id
из cookies с залогиненной страницы https://300.ya.ru.
str | None
: содержание статьи или видео в виде заголовков и тезисов или None, если возникли проблемы со ссылкой или авторизацией.
import asyncio
from prlps_ya300 import get_summary # импортируем функцию
# пример использования в асинхронном коде
async def main():
session_id = "3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404"
# получение содержания видео с YouTube:
youtube_url = "https://www.youtube.com/watch?v=mloZU0LW8aQ"
youtube_summary = await get_summary(youtube_url, short=False, session_id=session_id)
print(youtube_summary)
# получение озаглавленных таймкодов видео с YouTube:
titled_timecodes = await get_summary(youtube_url, short=True, session_id=session_id)
print(titled_timecodes)
# получение содержания статьи:
article_url = "https://azbyka.ru/otechnik/Ignatij_Brjanchaninov/simfonija-po-tvorenijam-svjatitelja-ignatija-brjanchaninova-tereshenko/3"
article_summary = await get_summary(article_url, short=False, session_id=session_id)
print(article_summary)
# получение кратких тезисов статьи:
article_url = "https://azbyka.ru/otechnik/Ignatij_Brjanchaninov/simfonija-po-tvorenijam-svjatitelja-ignatija-brjanchaninova-tereshenko/3"
article_summary = await get_summary(article_url, short=True, session_id=session_id)
print(article_summary)
asyncio.run(main()) # запуск асинхронного кода
функция api_start
служит для запуска API-сервера FastAPI на указанном порту.
from prlps_ya300 import api_start # импортируем функцию
api_start() # запуск API-сервера
python -m prlps_ya300
или
python -c "from prlps_ya300 import api_start; api_start()"
# базовый образ (вместо версии с alpine можно указать просто python:3.12):
FROM python:3.12-alpine
# установка библиотеки с апи:
RUN pip install --no-cache-dir --upgrade prlps_ya300
# уровень логирования, не обязательно:
ENV YA300_LOG_LEVEL=DEBUG
# порт, не обязательно (по умолчанию 7860):
ENV YA300_API_PORT=8080
# команда запуска апи:
CMD ["python", "-m", "prlps_ya300"]
ВНИМАНИЕ: session_id
можно оставить пустым, если на сервере в переменных окружения или секретах уже указан валидный YA300_SESSION_ID
.
curl -X GET "http://127.0.0.1:8000/summarize" -H "Content-Type: application/json" -d '{"url": "https://www.youtube.com/watch?v=mloZU0LW8aQ", "short": false, "session_id": "3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404"}'
from httpx import AsyncClient
async def fetch_summary():
async with AsyncClient() as client:
response = await client.post(
"http://127.0.0.1:8000/summarize",
json={"url": "https://www.youtube.com/watch?v=mloZU0LW8aQ", "short": False, "session_id": "3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404"}
)
print(response.json())
import asyncio
asyncio.run(fetch_summary())
необходимо указать Session_id
из cookies с залогиненной страницы https://300.ya.ru.
задается в переменной окружения YA300_SESSION_ID
:
from os import environ
environ['YA300_SESSION_ID'] = '3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404'
в консоли:
export YA300_SESSION_ID='3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404'
задается в переменной окружения YA300_LOG_LEVEL
:
from os import environ
environ['YA300_LOG_LEVEL'] = 'WARNING'
в консоли:
export YA300_LOG_LEVEL=DEBUG
задается в переменной окружения YA300_API_PORT
(можно не указывать, по умолчанию 7860):
from os import environ
environ['YA300_API_PORT'] = '8000'
в консоли:
export YA300_API_PORT=8000