Art studio tz CLI
Это консольное приложение для управления цитатами. Поддерживает локальную базу данных(quotes.csv) и работу с MySQL.
-
решение ТЗ пункт(3, 4, 5): art_studio_tz - консольное приложенение работа с DB на основе CSV файла и MySQL c автоматической загрузкой данных по средсвам свободных API
-
решение ТЗ пункт(2) index.html: Мудрые цитаты
-
Репозиторий: https://github.com/nafanius/art_studio_tz
-
Лицензия: MIT
Возможности
- Получение цитат из внешнего API с паузой по одной или блоками по 50 шт(
zenquotes.io). - Добавление, удаление, обновление цитат.
- Список цитат с фильтрацией по автору, по дате добаления в БД.
- Сохранение и управления цитатами в локальную БД(quotes.csv) или MySQL.
- Получение свежих цитат из БД MySQL c указанием количества (по умолчянию 5).
- Работа через современный CLI-фреймворк Typer и форматирование таблиц с помощью Rich.
Установка
С PyPI (рекомендуется)
pip install art_studio_tz
Из GitHub
pip install git+https://github.com/nafanius/art_studio_tz.git
Из исходного кода
# Клонируем репозиторий
git clone https://github.com/nafanius/art_studio_tz.git
cd art_studio_tz
# Устанавливаем через pip
pip install .
# Или с помощью poetry (для разработки)
poetry install
Использование
После установки доступна команда art_studio_tz:
art_studio_tz --help
Основные команды CLI для локальной БД(quotes.csv)
Usage: art_studio_tz [OPTIONS] COMMAND [ARGS]...
quotes is a small command line task tracking application
start [-u URL] [-p Пауза]— Получать цитаты с API и сохранять в локальную БД(quotes.csv) с паузой между запросами (по умолчанию 5 с)list [-a Автор]— Показать список цитат (опционально с фильтрацией по автору)version— Показать версию приложенияadd "ТЕКСТ" -a "Автор"— Добавить цитату в локальную БДdelete <ID>— Удалить цитату по ID, либо всеupdate <ID> -t "Новый текст" -o "Новый автор"— Обновить цитату по IDconfig— Показать путь к локальной базе данныхcount— Показать количество цитат в локальной базе
Команды для работы с MySQL
-
get -u user -p password [-H host] [-P port] [-d db] [--url URL]— Получить 50 цитат из API и записать в MySQL(требуется сервер mySQL) -
list-latest-5 -u user -p pass ... [-n N]— Показать последние N цитат из MySQL (по умолчанию 5) --отробатывает через ORM аналогичено сырому запросу:SELECT id, text FROM quotes ORDER BY timestep DESC, id DESC LIMIT 5;
-
delete-all-sql -u user -p pass ...— Удалить все цитаты в MySQL -
list-sql -u user -p pass ... [-a Автор]— Показать список цитат из MySQLкаждая команда имеет отдельный --help пример:
art_studio_tz get --help
$ art_studio_tz get -u USER -p PASSWORD
Usage: art_studio_tz get [OPTIONS]
Get 50 quotes from url and add to mySQL
* --user -u TEXT Database user [required]
* --password -p TEXT Database password [required]
--host -H TEXT Database host, default localhost
--port -P INTEGER Database port, default 3306
--database -d TEXT Database name, default quotes_db
--url TEXT URL for get quotes, default https://zenquotes.io/api/random
--help Show this message and exit.
Примеры использования
Получение цитаты каждые 30 секунд по API, запись в quotes.csv
$ art_studio_tz start -p 30
For stop taking quotes press 'Ctrl + C'
Added Quote: The attempt to escape from pain, is what creates more pain. - Author: Gabor Mate
For stop taking quotes press 'Ctrl + C'
Added Quote: Our greatest glory is not in never falling but in rising every time we fall. - Author: Confucius
For stop taking quotes press 'Ctrl + C'
Added Quote: If the plan doesn't work, change the plan, but never the goal. - Author: Unknown
For stop taking quotes press 'Ctrl + C'
^C
Остановка запроса цитат пользователем.
Получение всех записей из quotes.csv
$ art_studio_tz list
ID TimeStep Quote Author
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
8 2025-09-28 08:31:24 UTC The attempt to escape from pain, is what creates more pain. Gabor Mate
9 2025-09-28 08:31:55 UTC Our greatest glory is not in never falling but in rising every time we fall. Confucius
10 2025-09-28 08:32:26 UTC If the plan doesn't work, change the plan, but never the goal. Unknown
Переменные окружения
# по умолчянию DB на основе CSV(quotes.csv) создаётся автомотически в директории откуда вызывается программа
# при необходимости создайте переменную окружения где нужно сохранять quotes.csv
export QUOTES_DB_DIR=/путь/к/папке
Разработка и тестирование
poetry install --with test
pytest
Требования
- Python >= 3.10
- Зависимости перечислены в pyproject.toml (SQLAlchemy, Typer, Rich и др.), requirement.txt
Струуктура
.
├── art_studio_tz
│ ├── __init__.py
│ ├── __main__.py
│ ├── cli.py # UI через командную строку
│ ├── api.py # API управляющее приложением сязь между CLI и DB
│ ├── db.py # БД на базе csv
│ └── db_sql.py # БД на базе MySQL
├── index.html # Страница цитатник AJAX запросы
├── LICENSE
├── pyproject.toml
├── quotes.csv
├── README.md
├── requirement.txt
├── tests
│ ├── test_api.py
│ ├── test_cli.py
│ ├── test_db.py
│ └── test_db_sql.py
└── ТЗ.pdf
Лицензия
MIT © 2025 Ilin Maksim
Metadata
Release files for art_studio_tz 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| art_studio_tz-0.1.1.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| art_studio_tz-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.0 kB
Release files / art_studio_tz-0.1.1.tar.gz
| Download URL | art_studio_tz-0.1.1.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f520683a16fd296bc8f22c0383ad801843abfb05710ef04f90941734be7c78aa
|
|
BLAKE2b-256 checksum How to use checksums |
184c2ad043ebececa176810680e21fe45929f18d93cf97d73a1481f6aee0c1dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.3 Linux/6.8.0-84-generic
|
Release files / art_studio_tz-0.1.1-py3-none-any.whl
| Download URL | art_studio_tz-0.1.1-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38560cb8981d8c6b9e6283040ef62f1c42324a6aaab80d55680d38b46f754c4b
|
|
BLAKE2b-256 checksum How to use checksums |
cdb1e7f77df9a0ef81ab4f19f1509db642aad4ea26e9b79cc7490e9b6f362638
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.3 Linux/6.8.0-84-generic
|