Metadata-Version: 2.1
Name: freq-table
Version: 0.2.1
Summary: Make printable tables using http://radioscanner.ru frequency db
Home-page: https://github.com/snowwm/freq_table
Author: Pavel Andreyev
Author-email: snowwontmelt@gmail.com
License: MIT
Keywords: radio radio-frequency html-table html-generation
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Topic :: Printing
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3
Description-Content-Type: text/markdown
Requires-Dist: beautifulsoup4
Requires-Dist: mako
Requires-Dist: pyphen
Requires-Dist: pyyaml
Requires-Dist: requests

# freq_table

Мощный инструмент для создания красиво оформленных таблиц радиочастот.\
Проект имеет большой потенциал, помощь в развитии приветствуется.

Пример сгенерированной таблицы (кликабельно):
[![Sample](https://github.com/snowwm/freq-table/raw/master/samples/preview.png)](https://github.com/snowwm/freq-table/raw/master/samples/output.pdf)

## Возможности

* Получение записей из базы портала [radioscanner.ru](http://www.radioscanner.ru/base/).
  Сайт поддерживает расширенные [поиск и фильтрацию](http://www.radioscanner.ru/base/index.php?action=search1).
* Сохранение и редактирование записей в формате YAML, объединение и обновление списков.
* Генерация HTML-файлов по шаблону, стилизация с помощью CSS.
* Простая кастомизация не требует знания HTML&CSS.

#### Недостатки:
* Остаётся необходимость (полу)ручной подгонки вёрстки.

## Использование

### Установка

1. Убедиться в наличии Python (протестировано на версии 3.7).
2. Рекомендуемая установка (необходим [pipx](https://github.com/pipxproject/pipx)):

       pipx install freq_table

   **ИЛИ**

   Простая установка (может привести к конфликту зависимостей):

       pip install --user freq_table

### Конфигурирование

1. Создать пустую папку и перейти в неё.
2. Инициализировать файлы конфигурации и шаблонов:

       freq_table --init

   Должно появиться три файла с предустановленными параметрами, которые можно менять по своему усмотрению.
   **Текущие параметры подогнаны под вертикальный лист формата A1.**
   Чтобы вернуть изначальные, просто начните заново в другой папке.
3. В файле `config.yaml`:
   * Вписать URL нужной таблицы с сайта radioscanner.ru (со всеми фильтрами), не забудьте заменить номер страницы на `{page}`.
   * Настроить содержимое и заголовки колонок по своему вкусу, ширину можно подобрать позже, экспериментальным путём.
4. Можно поменять также файлы `output.html.mako` и `output.css`.

### Генерация таблицы

1. Первый запуск загрузит и сохранит записи с сайта в файл `records.yaml`, а также сразу сгенерирует таблицу:

       freq_table --dump

2. Открыть полученный `output.html` в **достаточно новом** браузере (рекомендую Chrome, Yandex).
   Открыть предпросмотр печати, настроить параметры страницы. Желательно сразу выбрать экспорт в PDF.
3. Кол-во строк в каждой таблице регулируется ключом `slices` в конфиге.
   Эмпирически подобрать нужные значения.
4. После каждого изменения необходимо запускать скрипт (без аргументов) и перезагружать страницу в браузере.
   При изменении CSS достаточно перезагрузки страницы.

### Редактирование и обновление записей    

1. Можно редактировать записи в файле `records.yaml` и добавлять новые.
3. Получить новые записи с сервера (существующие при этом изменены не будут):

       freq_table -sld

## Продвинутое использование

Программа работает со списком *записей*.
Запись представляет собой частоту и произвольную информацию, ассоциированную с ней.
Обязательные поля:
* `frequency` - частота (в МГц), по ней записи сортируются
* `url` - уникальный идентификатор, при скрейпинге с сайта соответствует URL страницы

При загрузке записей из нескольких источников (интернет, файлы) каждая обработанная запись перезаписывает предыдущие с тем же `url`.
В будущем планируется добавить инструменты для разрешения конфликтов вручную.

Подробное описание опций запуска программы можно получить, выполнив:

    freq_table --help


