Art studio tz CLI
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file art_studio_tz-0.1.1.tar.gz.
File metadata
- Download URL: art_studio_tz-0.1.1.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.8.0-84-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f520683a16fd296bc8f22c0383ad801843abfb05710ef04f90941734be7c78aa
|
|
| MD5 |
fff5ec61e54792b0ad7394dc424740a4
|
|
| BLAKE2b-256 |
184c2ad043ebececa176810680e21fe45929f18d93cf97d73a1481f6aee0c1dd
|
File details
Details for the file art_studio_tz-0.1.1-py3-none-any.whl.
File metadata
- Download URL: art_studio_tz-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.8.0-84-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38560cb8981d8c6b9e6283040ef62f1c42324a6aaab80d55680d38b46f754c4b
|
|
| MD5 |
e8d1b2ba89a95264c850c0aa47af9c42
|
|
| BLAKE2b-256 |
cdb1e7f77df9a0ef81ab4f19f1509db642aad4ea26e9b79cc7490e9b6f362638
|