Новые "фичи"

Coordinator
Apr 17, 2013 at 11:52 PM
Edited Apr 17, 2013 at 11:54 PM
Пусть комьюнити проекта пока не велико, хочу обсудить целесообразность некоторых возможных нововведений.
  1. Есть-ли смысл создавать файлы баз и лог-файл не в текущей директории exe-шника, а там, где находится файл settings (т.е. в C:\Users[current_user]\AppData\Local\TinyOPDS ? В плане best practice - оно бы нужно так сделать...
  2. Будет-ли интересен HTML интерфейс к библиотеке? Сделать это можно достаточно просто; единственно, может потребоваться хороший web designer, чтобы страницы выглядели не слишком позорно :)
  3. Нужна-ли функциональность автоматического обновления, или, хотя-бы, оповещения о новой версии?
Apr 18, 2013 at 7:29 AM
  1. Может настроечку сделать? Кому-то удобнее в каталоге программы работать, а у кого-то туда и записи-то нет. И для settings, нельзя ли проверять при запуске, нет ли рядом с программой файла settings, и если он есть, то работать с ним (может, кстати, если не настроечку, то и остальные файлы привязать к settings, где он, там и всё остальное, будет логично).
  2. А что предполагается в интерфейсе, какой функционал? Если сделать возможность фильтровать по юзерскому списку авторов, да по вводимому юзером полю, скажем, рейтингу, цены программе не будет!
  3. Ну, разве что для законченности продукта...
Apr 18, 2013 at 9:11 AM
Edited Apr 18, 2013 at 6:37 PM
  1. Мне кажется, что файл конфигурации стоит перенести в папку с программой.
  2. Было бы просто здорово.
  3. Оповещение было бы неплохо.
  4. Авторизация была бы желательна
Apr 18, 2013 at 10:21 AM
  1. Для тестирования удобнее когда рядом лежит. И запускать и удалять файл базы и лога удобно. И по-моему, если программа маленькая и нигде не мусорит ни кешами, ни сотнями конфигов, ни драйверами, ни в реестре то удобнее когда все рядом лежит.
  2. Было бы очень удобно. А еще удобнее если сделать его адаптивным и как можно проще. Каким образом программа организует сервер, или как оно будет работать? Просто будет выдавать сложенные по запросу html-ки или настоящий сервер что работает с БД отдельно от OPDS-сервера?
  3. Опционально.
Coordinator
Apr 18, 2013 at 3:30 PM
OK, всем большое спасибо за мнения!

Итак, по пунктам:
  1. Поскольку наблюдается единодушие в этом вопросе, то делаю программу полностью portable; user.settings будет создаваться в каталоге самой программы. Оно, конечно, не по MS-овскому паттерну, ну и Бог с ним, с тем паттерном - программа не для Microsoft, а для пользователей.
  2. HTML я думал реализовать самым простым путем: обработкой XML результата (притом, можно будет использовать программку на javacript). Поскольку HTTP сервер уже есть, то слушать еще один порт (или выдавать различный результат в зависимости от "префикса") это плевое дело. Функционал предполагается самый простой, по-сути, та-же функциональность, что и OPDS, только в HTML виде. Хотя, теоретически, никто не мешает также встроить читалку (буде такая найдется в виде HTML5/js). OK, добавлю это в планируемые "фичи".
  3. OK - в "долгий ящик" пока :)
  4. "Авторизация была бы желательна" - уже запланировано, сделаю для релиза 1.1
Coordinator
Apr 18, 2013 at 7:01 PM
Могу обрадовать - это уже есть :) Пути к файлам внутри базы - относительные к базовому фолдеру (ну, Path to books folder). Имя базы - уникальный GUID, создаваемый на основе пути базового фолдера.
Т.е. перенос выглядит так:
1) Выбираем фолдер на новом носителе - получаем новый GUID - имя базы.
2) Переносим файлы, и просто переименовываем старую базу - все!
Apr 18, 2013 at 7:18 PM
Edited Apr 18, 2013 at 7:21 PM
Замечательно! А то 606 тысяч книг заново сканировать.... И это без раров либ старых.
Это надо в документации описать.
Coordinator
Apr 18, 2013 at 7:25 PM
Paguro_rus wrote:
Замечательно! А то 606 тысяч книг заново сканировать.... И это без раров либ старых.
Ого! Откуда ты столько набрал-то? Кстати, а за сколько оно просканировало? Я максимум на 200K тестировал.
Это надо в документации описать.
На счет документации - отличная мысль! Самое время создать новый файл "How to" (вообще, лучше 2 - на русском и английском). Возьмешься за русский (или даже за оба), базируясь на собственном опыте? Можешь скриншоты приложить - будет красиво и познавательно (для несведущих пользователей).
Apr 18, 2013 at 7:40 PM
Edited Apr 18, 2013 at 7:56 PM
Возьмусь. Но завтра. Оба языка могу. В пдф-е делать?
Сколько по времени на скрине есть, 6.5 часов. База создалась объёмом 280 метров. А либ набежало за годы существования фтпшника. Ну и куркульность.:-) Это твоя прога только фб2 и зипы с ним сканит. А еще куча раров, тхт, ртф, пдф, док есть. Только дублей 206 тысяч.
Coordinator
Apr 18, 2013 at 7:51 PM
Edited Apr 18, 2013 at 7:52 PM
Супер, спасибо! Это абсолютно не срочно - сделай, когда будет время, "нивапрос" :)
Нет, делай прямо на сайте, через их wiki markup - как у меня User manual сделаны. Т.е. заходишь в Documentation, New page etc.

Касательно дублей: сейчас они определяются так
!_books.ContainsKey(book.ID) || _books[book.ID].Version < book.Version
т.е. или если не совпадает ID (это уникальный ID fb2 документа) или (при совпадении ID) версия добавляемой книги больше. Можно, конечно, попробовать еще проверять book Title, и при несовпадении, генерировать новый GUID. Проверю сегодня на своих файлах - уменьшится-ли число дублей (хотя я Энди спрашивал - это программист Флибусты - он говорит, что в торрентах все подряд лежит, просто запакованный "дамп" базы; реальных книг меньше)
Apr 18, 2013 at 8:09 PM
Хорошо. Ну насчет дублей это флибуста с либрусеком. ХЗ что там у них.
У меня есть знакомая, на которой я могу обкатывать мануал. Если что, она даже на немецкий может его перевести. И интерфейс, если надо.
May 4, 2013 at 11:10 AM
Идея с HTML интерфейсом к библиотеке просто замечательная!
Coordinator
May 5, 2013 at 3:27 AM
ramiraz1 wrote:
Идея с HTML интерфейсом к библиотеке просто замечательная!
Я вообще подумываю сделать это через css: все современные браузеры должны это понимать (xml styling with css). В этом случае изменения сервера будут минимальны. Вопрос лишь в том, чтобы найти разработчика - у меня нет, к сожалению, ни опыта написания каскадных стилей, ни особого таланта в UI дизайне.
Sep 19, 2013 at 10:48 AM
ramiraz1 wrote:
Идея с HTML интерфейсом к библиотеке просто замечательная!
SeNS, подсмотрел одну интересную идею на хабрахабаре по организации личной библиотеки в дропбоксе.

Была лишь одна проблема -- недостаток дискового пространства в облаке дя ее реализации. Но теперь, в связи с открытием mail.ru своего облачного хранилища, эта проблема снимается.
Посмотрите статью с описанием реализации идеи создания личной библиотеки на основе дропбокса... правда, там используется так "любимая" Вами calibre... =) ...
Но, может быть, аналогичное решение возможно и с использованием Вашей программы? Ну, или ждать реализации в ней веб-интерфейса.

По поводу дизайна HTML интерфейса можно сказать, что "рюшечки" и всевозможные изыски там никто не ждет... Так что минималистичность и функциональность это главное... а шкурки можно и отдельно потом прикручивать...
Хотелось бы главного -- возможности доступа к своей коллекции из любого браузера. Очень важно -- поддержка авторизации. И хотелось бы -- возможность пользователю хотя бы минимально изменять отображение своей коллекции -- установить нужное название (может быть, логоитп), добавить полезные ссылки: на создателя программы, на источник контента (комрада Traum'a, например), выложить ссылки на свободные библиотеки и полезную информацию.. ну, и т.п.
Coordinator
Sep 19, 2013 at 7:34 PM
Библиотека в dropbox-е - это интересно, но не пересекается с TinyOPDS. "Облачные хранилища" подключать я не планирую - нет смысла.

HTML интерфейс планируется минималистический; по сути, это будет XML вывод программы, преобразованный в HTML с помощью языка XSL. Но результирующий HTML должен работать и одинаково выглядеть на всех платформах, включая мобильные. Ну, и выглядеть он должен не "позорно". Если не надется профессиональный дизайнер, займусь по свободе сам (но для профи там работы на пару дней максимум, а для меня - гораздо дольше, нет опыта).
Sep 20, 2013 at 6:01 PM
SeNS wrote:
<...> HTML интерфейс планируется минималистический
<...>
Это и хорошо. Ни к чему там всякие "рюшечки". =) Вот хороший пример того, как веб-интерфейс коллекции мог бы выглядеть -- мобильная версия библиотеки Maxima-Library. Есть подозрение, что это и есть веб-интерфейс ихнего OPDS-каталога.
Минималистично и функционально.

Хотелось бы еще иметь возможность пользователю установить название своей коллекции, и хорошо бы было -- иметь возможность разместить ссылки на полезные ресурсы... Этого было более чем достаточно.

Ну и отдельный вопрос -- авторизация. Хорошо бы иметь возможность установить права доступа не только для скачивания контента, но и для просмотра...
Coordinator
Sep 21, 2013 at 4:26 AM
Выглядит мобильная Максима ничего так, но там явный overhead (если в сорец посмотреть). Это можно сделать куда проще и изящнее (и будет сделано!).

Будет (100%, потому, что уже сделано) поддержка внешнего XSL файла (т.е. если его нет, то HTML будет рендериться по встроенному, а если он есть - то по внешнему. Поскольку это шаблон, то пользователю предоставлена полная свобода, что туда напихать :) )

Авторизация будет стандартная (такая-же, как и сейчас).

Вообще, как это будет работать: один порт, но свой префикс для OPDS каталога и свой - для HTML. Например, если префикс OPDS будет /opds, а HTML - пустой, то доступ по OPDS будет осуществляться, как http://my.local.site.com/opds , а при заходе на http://my.local.site.com будем видеть HTML страницу
Sep 23, 2013 at 8:45 PM
Edited Sep 23, 2013 at 8:46 PM
SeNS wrote:
Выглядит мобильная Максима ничего так, но там явный overhead (если в сорец посмотреть). Это можно сделать куда проще и изящнее (и будет сделано!).
Она выглядит хорошо не только в браузере, но и при добавлении в качестве книжного репозитария в программы для чтения...
Вот пример программы для поиска и смачивания книг под iOS -- BookDownloader, которая умеет добавлять в список книжных репозитариев как OPDS-каталогаи, так и HTML-сайты ... Так вот в ней мобильный сайт Максимы выглядит очень хорошо (см. скриншот). Есть поиск, книжки отображаются с обложками и аннотациями... И что немаловажно, есть возможность указать формат при скачивании книги: fb2 или epub.
Coordinator
Sep 23, 2013 at 9:09 PM
Это все возможно сделать и на базе вывода TinyOPDS. Загвоздка только в том, что я не знаю XSL, и не силен в web-дизайне :(

Написал на паре русских форумов (буржуев OPDS не сильно интересует, в силу определенных причин), подожду ответа.

P.S. Если у тебя есть знакомые веб-дизайнеры, или время, чтобы поспрашивать на разных форумах - помоги, pls.
Coordinator
Sep 23, 2013 at 9:16 PM
Да, если интересно посмотреть, как будет выглядеть новый TinyOPDS, то вот: https://www.dropbox.com/s/kkgot17ija0wsd7/TinyOPDS.zip
Файлы из архива распаковать в текущую папку программы (перезаписать; если что, откатиться всегда можно, программа-то portable).

Шаблон находится в файле opds.xsl, несмотря на то, что он совсем "дубовый", но уже работает :)
Sep 23, 2013 at 9:41 PM
SeNS wrote:
Да, если интересно посмотреть, как будет выглядеть новый TinyOPDS, то вот: https://www.dropbox.com/s/kkgot17ija0wsd7/TinyOPDS.zip
Файлы из архива распаковать в текущую папку программы (перезаписать; если что, откатиться всегда можно, программа-то portable).

Шаблон находится в файле opds.xsl, несмотря на то, что он совсем "дубовый", но уже работает :)
Вау! =) Мне нравится!
За авторизацию -- отдельное спасибо! =) Очень нужная вещь!

Да, допиливать отображение каталогов еще надо (обложки не отображаются и текст аннотации замусорен тегами... Но уже сейчас понятно, как может выглядеть в релизе и оно мне нравится. Спасибо! =)
Sep 23, 2013 at 10:20 PM
SeNS wrote:
Да, если интересно посмотреть, как будет выглядеть новый TinyOPDS, то вот: https://www.dropbox.com/s/kkgot17ija0wsd7/TinyOPDS.zip
<...>
В этой версии по ссылке... Из браузера открываю библиотеку... если кликнуть по книжке, то открывается файл обложки, а не предлагается скачивание....
А вот те книжки, которые скачались, обложки не имеют...


P.S. Может быть имеет смысл открыть отдельную тему с вопросами по программе?
Coordinator
Sep 23, 2013 at 10:29 PM
Это не версия, просто демонстрация возможностей. Открой opds.xsl через notepad, посмотри, как это делается.

Когда web доступ будет в официальном релизе, естественно, появится документация. Пока это только демо.
Sep 24, 2013 at 8:54 AM
SeNS wrote:
Это не версия, просто демонстрация возможностей. Открой opds.xsl через notepad, посмотри, как это делается.

Когда web доступ будет в официальном релизе, естественно, появится документация. Пока это только демо.
ok, я понял. Без пояснительной документации меня хватило на смену названия коллекции, цвета и ширины таблицы. =))

Но что касается работы через HTML-интерфейс с коллекцией. Я попробовал и браузерами, и программами для чтения, имеющими собственные браузеры. То, что вместо скачивания книжки пока открывается обложка, я ранее написал... Но тут еще такой нюанс. Какая-то читалка под iOS книжку таки скачала, но тут же в недоумении ругнулась на невалидный epub... Как я понимаю, OPDS-клиенты заточены под конкретный формат (чаще всего -- под epub), и сервер, "понимая", что от него ждут, подключает конвертер fb2epub и отдает сконвертированную книгу... А браузер качает то, что есть... и если в программе для чтения, которая поддерживает epub, но понятия не имеет о fb2.zip, ее встроенный браузер скачивает неподдерживаемый этой программой формат, она ругается на невалидный файл epub.
Я снова приведу в пример мобильный сайт библиотеки Maxima-Library -- там можно выбрать формат скачиваемой книги.
В TinyOPDS, на мой взгляд, тоже желательно при работе с коллекцией через браузер иметь возможность сконвертировать книгу в epub или скачать в fb2.zip (как есть).

Еще вопрос по навигации в коллекции. У меня сейчас создана небольшая тестовая коллекция ("973 книг от 74 авторов")... Такое количество авторов отображается на одной странице... А если их будет несколько тысяч? Они будут так же отображаться единым списком, но на нескольких страницах? Тогда добраться до букв алфавита, близких к его концу, будет довольно неприятным занятием... листать до конца весь список... Или авторы будут сгруппированы по алфавиту?
Sep 24, 2013 at 10:15 AM
Добрый день.
Огромное спасибо за Ваш труд.
Возник вопрос: скажите, пожалуйста, поддерживает ли программа пути длиннее 255 символов? Пытаюсь сделать OPDS-каталог домашней библиотеки - довольно большой, около 70000 fb2, не считая других форматов. Так вот, программа всё время спотыкается на одном и том же месте, статус "Сканирую" висит по нескольку часов без малейшего продвижения дальше. В чём тут может быть дело?
Coordinator
Sep 24, 2013 at 1:57 PM
Krok_us , не надо пока работать с библиотекой через HTML :) XSL там пока довольно "тупой" - не различает, где ссылка на картинку, а где - на файл (и на какой), и берет первый попавшийся. Будет, как на максиме, и будет выбор типа файла для закачки. Не все сразу - я же написал об объективных причинах...

vlbeznosov , программа поддерживает пути, поддерживаемые файловой системой, искусственных ограничений нет. Скорее всего, программа "спотыкается" на одном из файлов (лично у меня TinyOPDS прекрасно сканирует весь fb2 архив либрусека, там более 260000 книг). Что нужно сделать: включить вывод в log file, запустить сканирование, посмотреть (в логе), на чем программа останавливается, и сообщить мне, открыв новый issue (не в этом топике, please - тут мы о новых фичах говорим) и приложив log file :)
Sep 24, 2013 at 3:43 PM
Прога супер! Oчень понравилась быстрота работы.
Теперь возможные хотелки...
у меня есть nas qnap на нем стоит веб сервер apache, smb вся библиотека у меня хранится на насе. и допустим раcшарена папка lib через smb
smb://nas/www/lib и web http://nas/lib

можно сделать в TinyOPDS что я указываю путь до библиотеке до папки lib + указываю место хранения базы например (smb://nas/www/db)
после скана соответственно создается база.

А теперь самое главное нужна отдельная от программы web часть.
например некие файлы скрипты который я кладу на web сервер в папки http://nas/web и http://nas/opds/,
после чего при заходе на http://nas/opds/ некий web скрипт, считывает сгенерированною базу и выводит opds каталог
при заходе на http://nas/web некий web скрипт, считывает сгенерированною базу и выводит html каталог.

ps.
вот несколько сумбурно обрисовал свои хотелики ))
аналогов с поддержкой fb2 я не нашел
если кто знает как без изменения программы организовать opds каталог на внешнем сервере используя базу от данной программы подскажите?
pps.
nas включен постоянно а держать постоянно комп ради доступа к библиотеке..... НУ СИЛЬНО НЕ ОХОТА
Coordinator
Sep 24, 2013 at 6:51 PM
kobraru, TinyOPDS прекрасно поддерживает unix-style пути; если есть проблемы с доступом через префик smb:// , попробуй создать символическую связь средствами linux.

Я сейчас работаю над консольной версией программы (без GUI); если под твой NAS есть пакет mono, то ты "в шоколаде" (кстати, если что, протестируешь под "голым" linux-ом?).

Никаких скриптов и внешних каталогов/баз поддерживаться НЕ будет; поддержка одновременно opds и html сейчас в процессе разработки (можешь опробовать ссылку выше).

Наверное (когда закончу с консольной бетой) будет смысл создать отдельный топик для тестирования на "голом линухе" (т.е. на NAS-е). Единственно, боюсь, у тебя RAM не хватит: для повышения быстродействия программа все держит в RAM (за исключением, собственно, самих файлов с книгами) - базу, кэш картинок/файлов и т.д.
Sep 24, 2013 at 7:01 PM
SeNS wrote:
Krok_us , не надо пока работать с библиотекой через HTML :) XSL там пока довольно "тупой" - не различает, где ссылка на картинку, а где - на файл (и на какой), и берет первый попавшийся. Будет, как на максиме, и будет выбор типа файла для закачки. Не все сразу - я же написал об объективных причинах...
Да меня и сейчас все устраивает -- в том виде, в каком оно существует в нынешнем рабочем варианте... понятно, как оно может (и, наверне, будет) выглядеть, что к релизу будет причесано и доделано...
До полноценной работы с библиотекой кроме софтовой части мне нужно еще со своим оборудованием разобраться -- починить файловый типа_сервачок на miniITX, на коем и планируется использовать TinyOPDS. Так что пока у меня тестирование на небольшой базе из тысячи книжек, подбор и привыкание к необходимому набору софта под эту затею...

Что касается хотелок (не знаю, может не в эту тему надо)... Где-то уже видел вопрос про добавление новых книг в библиотеку, вот я тоже об этом...
Понятно, что там есть функция, обязывающая программу следить за книжной директорией... Но я не про это.

Вот пример... У меня есть известная библиотека комрадаТраума, на которую создатель периодически выпускает обновления. Но вот на данный момент крайнее обновление было довольно давно... А я за это время качаю книжки, новинки, и хочу добавить их в свою коллекцию, чтобы они там были до выхода обновления от Траума... То есть, в чем хотелка -- хотелось бы эти новинки добавлять в отдельный каталог "Новые поступления", и чтобы программа книги, находящиеся там, в OPDS отображала тоже как "Недавно добавленные". Когда Траум выкладывает обновление, которое почти стопроцентно будет содержать книги из этого каталога, он мной очищается, а библиотека обновляется "официальным " обновлением от Траума... а каталог "Новые поступления" начинает заполняться до следующего обновления новинками, скаченными из разных источников...

Да, это не жизненно необходимая функция, но для ведения библиотеки в том виде, в котором она существует, будучи созданной Траумом, вещь полезная... ))) чтобы труд его по чистке либрусековской базы от дублей и невалидного хлама не пропал даром у конечного ползователя, желающего раньше выхода "официального "обновления пополнить свой OPDS-каталог новинками...
Coordinator
Sep 24, 2013 at 10:12 PM
Сорри, TinyOPDS не предназначен для ведения библиотеки (более того, поскольку я сам ненавижу вести какие-то "библиотеки", и заниматься непроизводительным трудом, подобная функциональность никогда не будет добавлена). TinyOPDS - это инструмент лентяя :) Настроил один раз (и автоматический апдейт раздач либрусека) - и забыл.

В версии 1.1 был (незаметно для пользователей) немного изменен формат базы: добавлено поле "дата добавления книги". На этом поле и будет базироваться каталог "Новые книги" (т.е. дополнительная ссылка OPDS/web). Дельту времени можно будет задавать из UI/settings (например, считать "новыми" книги, добавленные за последний месяц).

В силу того, что сколько людей, столько и структур библиотек, пристрастий, привычек, просто невозможно сделать универсальное решение. В таких случаях я поступаю, как покойный Стив Джобс - говорю пользователям, что именно им нужно :)

Как это работает у меня:
  • TinyOPDS стоит себе тихонечно на домашнем сервере/видеоплеере (etc.)
  • раздачи (какие и откуда - сами знаете :)) качаются по мере обновления
  • новые книжки подхватываются в базу
  • все.
    Не трогал уже несколько месяцев - жив, курилка, книжки всегда под рукой.