Where all Cacodemons Where All Demons
 
Информация

Связаться со мной можно через q2-strogg(собако)mail.ru.

Увидимся в Аду. ;)


       
Разделы
Главная
Статьи
Скачать
Разное

#  06.11.2010        Я еще не сдох



  
Что у меня на сегодня?
А вот пара программок найдется.
  • Первая - сохранение rss-лент в текстовый файл на заданный носитель, под Linux.
  • Вторая - автобэкап указанной директории в нужное место в папку с текущей датой, под  Win.
Начнем с первой.

Купил я себе недорогую читалку - MagicBook M5. И вот всем она замечательна, но нет для нее софта, который бы позволял RSS-ленты читать. А я страсть как люблю новости почитать. И вот задумалось мне написать небольшую программку под линукс для автоматического скачивания по URL RSS-лент и записывания их всех подряд в один простой текстовый файл без всяких XML-форматирований для комфортного чтения с читалки.

Что я хотел:
  • Чтобы можно было создавать и редактировать список линков RSS-лент.
  • Чтобы все это сохранялось в каком-либо конфиге.
  • Чтобы при подключении книги, не нужно было выбирать директорию, куда она примонтировалась, а она находилась сама.
  • Чтобы конечный файл был удобен для чтения. Например, сохранялся бы в FB2.
  • Чтобы каким-либо образом в полученном FB2 были бы и картинки, находящиеся по ссылкам в RSS-ленте.
 
Что удалось сделать:
  • Писалось все на Lazarus. Лень было что-то другое брать, так как, имхо, лишь на лазарусе можно что-то толковое написать за вечер и не мучаясь с отладкой неделю.
  • Конфигурация и списки лент редактируются из окна программы. Сначала я хотел сделать скачку через сокет самой программой, но как работать с сокетами в Lazarus под x86_64 я не нашел. Поэтому скачка происходит с использованием wget или curl. Что именно будет использоваться для скачки, можно выбрать в настройках.
  • Под конфигурацию и временные файлы отводится директория .rss2pocket в папке пользователя. Директория создается, если не существует.
  • Для определения директории, в которую смонтирована книга используются системные утилиты blkid и mount. Поиск носителя (книги) происходит в выводе blkid по номеру UUID носителя (можно указать и устройство напрямую, к примеру, /dev/sdi, но лучше все же UUID). Изначально сам UUID нужного носителя (книги) можно узнать с помощью blkid в консоли.
  • Конечный файл - это либо простой текстовый файл в формате UTF8, в который сливается содержимое всех RSS-лент после примитивного парсинга на отсеивание ненужного xml-форматирования, либо файл в FB2 разметке. Выбор производится в настройках. Но имейте ввиду, что задавать имя конечного файла следует с учетом расширения! Дабы не получилось FB2 файла с расширением .txt. Некоторые ленты изначально могут иметь кодировку отличную от UTF8, поэтому содержимое их при записи в файл конвертируется по мере надобности в UTF8. Описание формата FB2 взято отсюда.
  • Картинки списком извлекаются из всех лент и последовательно скачиваются, кодируются в base64-формат имеющейся в дистрибутиве стандартной утилиткой base64 и включаются в общий файл FB2 в виде binary-последовательности.
Исходникбинарник под х86 и бинарник под х86_64.

Вторая программка

Тут ничего примечательного. Задумывалось все как что-то, что запускается при старте винды, бэкапит все файлы в указанной директории в другую директорию в папку с текущей датой (или выключается, если бэкап с этой датой уже сделан), и спокойно выключается.
Вот исходник и бинарник такой программки. Исходная и конечная директория задаются в файлике config.ini рядом с программкой в следующем виде:

[main]
source=путь_до_исходной_директории
destination=путь_до_конечной_директории

Ci vis pacem...






Оптимизировано под FireFox 800x480. HTML & CSS (С)Рейнхард Демон. q2-strogg(~)mail.ru