small scripts to work with text (classic) ii-net database
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md
archive.py
builder.py
checker.py
clean.py
datesort.py
delete-echoareas.py
emailtoii.py
fetchmailrc
ii-bb.sh
ii-bundle.py
ii-debundle.py
ii-echocat.sh
ii-search.py
ii-stats.py
ii_functions.py
mailii.sh
offline-fetch.py
procmailrc
sender.py
sqlite-export.py
sqlite-import.py
subjsort.py
view.py
visual-stats.py
xfileget.py

README.md

ii-db-utils

ii-db-utils - это простейшие скрипты на python3 и bash для работы с классической текстовой базой данных ii и IDEC. В ii_functions.py есть переменные indexdir и msgdir, где указывается альтернативный путь к индексу и сообщениям. По умолчанию идёт работа с базой в текущем каталоге.

Документация сетей IDEC и ii здесь.

За скрипты для sqlite, архивов и наглядной статистики спасибо spline1986.

emailtoii.py

С этим скриптом (помещённым в сron) можно использовать ii-клиент для чтения входящих email-писем. HTML преобразуется в plain-text. Для использования требуется установить fetchmail, procmail и html2text (python-версию). Примерные образцы конфигов находятся в файлах fetchmailrc и procmailrc этого репозитория.

sender.py

Эта вещь позволяет отправлять сообщения на удалённую станцию (как поинт). Полезно для роботов-автопостеров или собственных утилит. Формат файлов - обычный msgline (без base64).

ii-search.py

Утилита для поиска сообщений в базе.

  • Ищет по эхам, отправителям, получателям, адресам станции, по временным промежуткам, по сабжу и тексту сообщения
  • Если надо искать по всем значениям параметра поиска, то просто жмёте Enter
  • По первым 4 параметрам поиска можно вводить несколько значений через разделитель (пробел или || для адреса и поинтов)
  • Найденные сообщения сортируются по времени
  • Если передать строку в качестве аргумента командной строки, то запишет в этот файл результаты в виде msgid

ii-stats.py

Простейшая статистика для всей базы данных в целом: по эхам, сообщениям, поинтам и.т.д.

visual-stats.py

Скрипт генерирует и выводит на экран гистограмму со статистикой по активности за указанный период. Список эхоконференций вводится с клавиатуры.

Поддерживает статистику по эхам и поинтам.

Примеры:

visual-stats.py -t echoareas -s 2014.01.01 -e 2015.01.01

Выведет на экран гистограмму по активности в указанных эхоконференциях с первого января 2014 года по первое января 2015 года.

visual-stats.py -t points -s 2014.01.01 -e 2015.01.01

Аналогично, только здесь в основе подсчёта не сами эхоконференции, а пользователи.

ii-echocat.sh

Всего лишь выводит по N последних сообщений с каждой выбранной эхи с сортировкой по времени. Можно применять для conky или чего-нибудь подобного.

view.py

Позволяет быстро просматривать сообщения в нужной эхоконференции.

# Посмотреть все сообщения
view.py echoarea.15

# Вывести последние пять
view.py echoarea.15 -5:

# Первое сообщение (отсчёт идёт с нуля)
view.py echoarea.15 0

# Со второго по четвёртое
view.py echoarea.15 1:5

# Узнать количество сообщений в эхе
view.py echoarea.15 len

checker.py и builder.py

checker.py проверяет базу данных на элементарные ошибки (дубли, пустые сообщения и несоответствие базы индексу). builder.py эти ошибки исправляет.

delete-echoareas.py

Удаляет заданные эхоконференции вместе с сообщениями из базы данных. Ключи командной строки: -q для "молчаливого" режима, -i запрашивает подтверждение.

clean.py

Скрипт принимает в качестве аргументов название эхоконференции и дату в формате YYYY.MM.DD, затем удаляет все сообщения из эхи, отправленные до указанной даты.

Пример:

clean.py ii.14 2015.01.01

Данная команда удалит из эхоконференции ii.14 сообщения, отправленные до 2015 года.

offline-fetch.py

Оффлайн аналог webfetch.py. Синхронизирует базу данных между каталогами источника и назначения (эхоконференции задаются с клавиатуры). Может также не синхронизировать каталоги напрямую, а лишь генерировать бандл при указании необязательного параметра (см. далее).

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

offline-fetch.py <БД-источник> <БД-назначение> [файл бандла]

ii-bundle.py и ii-debundle.py

Упаковка и распаковка бандлов. Можно записывать туда содержимое как одной, так и сразу нескольких эхоконференций. Расположение базы данных в ii-debundle.py указывается через параметры. Использование:

ii-bundle.py <имя output-файла>
ii-debundle.py <файл-бандл> <путь к директории БД>

archive.py

Скрипт принимает в качестве аргументов название эхоконференции и дату в формате YYYY.MM.DD, затем создаёт файл-бандл с сообщениями из указанной эхи, отправленными до указанной даты.

Пример:

archive.py ii.14 2015.01.01

sqlite-import.py и sqlite-export.py

Аналоги bundle.py и debundle.py, только в качестве бандла используется база данных sqlite3.

sqlite-export.py <имя output-файла>
sqlite-import.py <файл-БД>

xfileget.py

Скачивание файлов ноды через расширение IDEC /x/file. Требуется указать станцию и строку авторизации (в коде).

ii-bb.sh

ii-клиент на чистом busybox.

Работает на busybox ash (стандартный шелл), который совместим с dash. Дополнительные необходимые апплеты: wget, vi, cat, mv, stat, dd, base64, head, tail, date, mkdir (вроде все).

В самом начале файла удобно расположены настройки.

Фетч идёт через старый добрый /m. Отправка через GET, потому что busybox-овский wget не поддерживает POST

Просмотр эх
# вся эха
ii-bb.sh view ii.test.14

# узнать количество сообщений
ii-bb.sh view ii.test.14 len

# конкретное сообщение (отсчёт с нуля)
ii-bb.sh view ii.test.14 9
Написание сообщений
# всем
ii-bb.sh write ii.14

# ответить на конкретное
ii-bb.sh write ii.14 1522
Фетч и отправка
ii-bb.sh send
ii.bb.sh fetch