пакет предоставляет функции для получения содержания статей или видео с YouTube и запуска API-сервера для суммаризации через сервис 300.ya.ru.
## установка
- из репозитория pypi:
`pip install prlps_ya300`
- из репозитория github:
`pip install git+https://github.com/gniloyprolaps/ya300.git`
## как использовать
### непосредственно в коде Python:
функция `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, если возникли проблемы со ссылкой или авторизацией.
```python
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 на указанном порту.
#### в коде:
```python
from prlps_ya300 import api_start # импортируем функцию
api_start() # запуск API-сервера
```
#### в консоли:
```bash
python -m prlps_ya300
```
или
```bash
python -c "from prlps_ya300 import api_start; api_start()"
```
#### запуск API-сервера через Docker:
```dockerfile
# базовый образ (вместо версии с 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"]
```
#### выполнение запроса к API
##### через `curl`
```sh
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"}'
```
##### в коде Python
```python
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 для 300.ya.ru
необходимо указать `Session_id` из cookies с залогиненной страницы https://300.ya.ru.
задается в переменной окружения `YA300_SESSION_ID`:
```python
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'
```
в консоли:
```sh
export YA300_SESSION_ID='3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404'
```
### уровень логгирования (можно не указывать, по умолчанию INFO)
задается в переменной окружения `YA300_LOG_LEVEL`:
```python
from os import environ
environ['YA300_LOG_LEVEL'] = 'WARNING'
```
в консоли:
```sh
export YA300_LOG_LEVEL=DEBUG
```
### порт для API-сервера
задается в переменной окружения `YA300_API_PORT` (можно не указывать, по умолчанию 7860):
```python
from os import environ
environ['YA300_API_PORT'] = '8000'
```
в консоли:
```sh
export YA300_API_PORT=8000
```
Raw data
{
"_id": null,
"home_page": "https://github.com/gniloyprolaps/ya300",
"name": "prlps-ya300",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": null,
"author": "prolapser",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/6c/a4/7af93ced0f4a7de9ab3b8af7097bee1ff21a20977ba92c41611ce95d834a/prlps_ya300-0.0.1.tar.gz",
"platform": null,
"description": "\u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0441 YouTube \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0432\u0438\u0441 300.ya.ru. \n\n## \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n- \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f pypi:\n`pip install prlps_ya300`\n\n- \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f github:\n`pip install git+https://github.com/gniloyprolaps/ya300.git`\n\n\n## \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\n\n### \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 Python:\n\n\u0444\u0443\u043d\u043a\u0446\u0438\u044f `get_summary` \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0441 YouTube.\n\n#### \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b:\n- `article_or_youtube_url` (str): URL \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 YouTube).\n- `short` (bool): \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0442\u043a\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0442\u0435\u0437\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0437\u0430\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u043a\u043e\u0434\u044b \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e.\n- `session_id` (str): `Session_id` \u0438\u0437 cookies \u0441 \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b https://300.ya.ru.\n\n#### \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:\n- `str | None`: \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0432 \u0432\u0438\u0434\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0438 \u0442\u0435\u0437\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 None, \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439.\n\n```python\nimport asyncio\nfrom prlps_ya300 import get_summary # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\n\n# \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435\nasync def main():\n session_id = \"3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404\"\n # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0441 YouTube:\n youtube_url = \"https://www.youtube.com/watch?v=mloZU0LW8aQ\"\n youtube_summary = await get_summary(youtube_url, short=False, session_id=session_id)\n print(youtube_summary)\n # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0437\u0430\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0430\u0439\u043c\u043a\u043e\u0434\u043e\u0432 \u0432\u0438\u0434\u0435\u043e \u0441 YouTube:\n titled_timecodes = await get_summary(youtube_url, short=True, session_id=session_id)\n print(titled_timecodes)\n # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438:\n article_url = \"https://azbyka.ru/otechnik/Ignatij_Brjanchaninov/simfonija-po-tvorenijam-svjatitelja-ignatija-brjanchaninova-tereshenko/3\"\n article_summary = await get_summary(article_url, short=False, session_id=session_id)\n print(article_summary)\n # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u0440\u0430\u0442\u043a\u0438\u0445 \u0442\u0435\u0437\u0438\u0441\u043e\u0432 \u0441\u0442\u0430\u0442\u044c\u0438:\n article_url = \"https://azbyka.ru/otechnik/Ignatij_Brjanchaninov/simfonija-po-tvorenijam-svjatitelja-ignatija-brjanchaninova-tereshenko/3\"\n article_summary = await get_summary(article_url, short=True, session_id=session_id)\n print(article_summary)\n\nasyncio.run(main()) # \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430\n```\n\n### \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 \u0430\u043f\u0438\n\n\u0444\u0443\u043d\u043a\u0446\u0438\u044f `api_start` \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 FastAPI \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443.\n\n#### \u0432 \u043a\u043e\u0434\u0435:\n\n```python\nfrom prlps_ya300 import api_start # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\n\napi_start() # \u0437\u0430\u043f\u0443\u0441\u043a API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\n```\n\n#### \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n```bash\npython -m prlps_ya300\n```\n\u0438\u043b\u0438\n```bash\npython -c \"from prlps_ya300 import api_start; api_start()\"\n```\n\n#### \u0437\u0430\u043f\u0443\u0441\u043a API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 Docker:\n\n```dockerfile\n# \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 (\u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 alpine \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e python:3.12):\nFROM python:3.12-alpine\n# \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u0430\u043f\u0438:\nRUN pip install --no-cache-dir --upgrade prlps_ya300\n# \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e:\nENV YA300_LOG_LEVEL=DEBUG\n# \u043f\u043e\u0440\u0442, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 7860):\nENV YA300_API_PORT=8080\n# \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0430\u043f\u0438:\nCMD [\"python\", \"-m\", \"prlps_ya300\"]\n```\n\n#### \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a API\n\n##### \u0447\u0435\u0440\u0435\u0437 `curl`\n\n```sh\ncurl -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\"}'\n```\n\n##### \u0432 \u043a\u043e\u0434\u0435 Python\n\n```python\nfrom httpx import AsyncClient\n\nasync def fetch_summary():\n async with AsyncClient() as client:\n response = await client.post(\n \"http://127.0.0.1:8000/summarize\",\n 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\"}\n )\n print(response.json())\n\nimport asyncio\nasyncio.run(fetch_summary())\n```\n\n\n## \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\n\n### session_id \u0434\u043b\u044f 300.ya.ru\n\n\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c `Session_id` \u0438\u0437 cookies \u0441 \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b https://300.ya.ru.\n\n\u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f `YA300_SESSION_ID`:\n\n```python\nfrom os import environ\nenviron['YA300_SESSION_ID'] = '3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404'\n```\n\n\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n\n```sh\nexport YA300_SESSION_ID='3:173323456.5.0.1724108495806:Y12iog:x21y.1.2:1|1141634570.0.2.3:1728003508|6:10200414.986812.uaRU96USIomXSkGPPOV1-Zov404'\n```\n\n### \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e INFO)\n\n\u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f `YA300_LOG_LEVEL`:\n\n```python\nfrom os import environ\nenviron['YA300_LOG_LEVEL'] = 'WARNING'\n```\n\n\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n\n```sh\nexport YA300_LOG_LEVEL=DEBUG\n```\n\n### \u043f\u043e\u0440\u0442 \u0434\u043b\u044f API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\n\n\u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f `YA300_API_PORT` (\u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 7860):\n\n```python\nfrom os import environ\nenviron['YA300_API_PORT'] = '8000'\n```\n\n\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n\n```sh\nexport YA300_API_PORT=8000\n```\n",
"bugtrack_url": null,
"license": "LICENSE.txt",
"summary": "\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0441 YouTube \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0432\u0438\u0441 300.ya.ru",
"version": "0.0.1",
"project_urls": {
"Homepage": "https://github.com/gniloyprolaps/ya300"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2feb1e2262c1facb14ffc3ac30ef5dbf794566f7c5b1ef218376061fb3534fd6",
"md5": "910faab4e200abe4fc8a41a24e1c509a",
"sha256": "8989127f38d4d35cc5247e00368e57da92250b0a799aaa75c0ee6d638e1224b8"
},
"downloads": -1,
"filename": "prlps_ya300-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "910faab4e200abe4fc8a41a24e1c509a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 10128,
"upload_time": "2024-12-11T07:14:31",
"upload_time_iso_8601": "2024-12-11T07:14:31.245227Z",
"url": "https://files.pythonhosted.org/packages/2f/eb/1e2262c1facb14ffc3ac30ef5dbf794566f7c5b1ef218376061fb3534fd6/prlps_ya300-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ca47af93ced0f4a7de9ab3b8af7097bee1ff21a20977ba92c41611ce95d834a",
"md5": "f205bfee186f52cca75307e956660ba3",
"sha256": "113c58ddff5039d80dd01cfac73cd52521f4816c3fcf4412ecc400914a5d093e"
},
"downloads": -1,
"filename": "prlps_ya300-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "f205bfee186f52cca75307e956660ba3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 9678,
"upload_time": "2024-12-11T07:14:33",
"upload_time_iso_8601": "2024-12-11T07:14:33.543053Z",
"url": "https://files.pythonhosted.org/packages/6c/a4/7af93ced0f4a7de9ab3b8af7097bee1ff21a20977ba92c41611ce95d834a/prlps_ya300-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-11 07:14:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gniloyprolaps",
"github_project": "ya300",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "fastapi",
"specs": []
},
{
"name": "pydantic",
"specs": []
},
{
"name": "uvicorn",
"specs": []
},
{
"name": "httpx",
"specs": []
}
],
"lcname": "prlps-ya300"
}