freq-table 0.2.2
Make printable tables using http://radioscanner.ru frequency db
License: MIT
Requires Python: >=3
Keywords: radio radio-frequency html-table html-generation

# freq_table

[![PyPI version](https://img.shields.io/pypi/v/freq_table.svg)](https://pypi.org/project/freq_table/)
[![PyPI pyversion](https://img.shields.io/pypi/pyversions/freq_table.svg)](https://pypi.org/project/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 достаточно перезагрузки страницы.

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

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

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

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

    freq_table --help

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

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

      freq_table -s -l -d

* Получить новые записи с перезаписью существующих:

      freq_table -u -l -d

### Доработка кода

Если хочется залезть в код ручками:
1. Склонировать этот репозиторий.
2. `pip install -e .`
3. ???
4. Profit! Любые изменения в коде будут сразу подхватываться.