Редактор и генератор коллекций для Sony PRS-T1
Goto page 1, 2, 3, 4, 5, 6  Next
 
Libroom Forum IndexSony ReaderSony Reader на базе Android OS
AuthorMessage

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 30.04.2012 19:11    

Вот и я выкладываю свои первые наработки по редактору/генератору коллекций.

Программа написана на C# и требует .Net Framework 4.0
Сразу хотел бы сказать, что я специально не обучался программировать на данном языке, это моё маленькое хобби, в свободное время. Так что программа не ахти какая.

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




Описание программы :

:
Окно программы делится на три части. В левой части располагается список коллекций. В средней части располагается список книг в выбранной коллекции. И в правой части все книги из базы.

Программа использует только данные из файла books.db. В будущем, если добавлю генерацию, например, по жанрам или другим тегам, то будет и обращение напрямую к файлам.

Файл базы данных находится: x:\Sony_Reader\database\books.db
Для основной памяти и карты памяти разные базы.

После открытия файла books.db его резервная копия сохраняется в папке Backup, в каталоге программы. В начале файла, в скобочках, будет указан диск, с которого взята база, дата и время открытия. Резервное копирование можно отключить в файле настроек settings.ini установив CreateBackUp = 0
В этом же файле устанавливается символ разделитель для коллекций. По умолчанию это "~".

Сразу после автоматического создания резервной копии данные из базы загружаются в программу. И в окне "Книги в коллекции" отобразятся все книги из первой коллекции по списку.

Все коллекции и книги загружаются в том порядке, в каком они были добавлены в базу данных. К примеру, в общем списке книг можно увидеть, что книги из одной серии идут в обратном порядке, например сначала 10-я, потом 9-я, потом 8-я и т.д. Так её внесла в базу сама Sony PRS-T1.

При добавлении новой коллекции (а так же при редактировании существующей) в окошке ввода названия есть галочка "На карте памяти". Если её поставить, то в читалке справа от названия коллекции будет виден значок карты памяти.

Чтобы отобразить книги из определённой коллекции надо нажать на неё два раза мышкой, или выделить и нажать на Enter. Удалить коллекцию можно выделив её и нажав клавишу Delete, либо через контекстное меню или кнопкой на панели инструментов.

Удалить книги из коллекции можно так же клавишей Delete или кнопкой на панели.

Добавить книги в выбранную коллекцию можно просто перетащив их из общего списка книг.

Лично мне, очень удобно вручную подправить названия коллекций после автоматической генерации. Или вообще удалить лишние.

Если представить что мы имеем такую структуру каталогов:

Фантастика\Айзек Азимов
Фантастика\Warhammer 40000\Ересь Хоруса

то коллекции будут иметь вид:
Фантастика
Фантастика~Айзек Азимов
Фантастика~Warhammer 40000
Фантастика~Warhammer 40000~Ересь Хоруса

При генерации каталогов по Авторам, я столкнулся с тем, что у некоторых книг список авторов очень большой. Поскольку этот тип генерации я ещё не дорабатывал, я сделал просто, если в поле "автор" больше 50 символов, то будут браться первые 50.

Генерация может происходить долго, это из-за того, что я ещё не оптимизировал работу программы с SQLite. Оптимизация планируется в будущем.

После добавления/удаление коллекции/книг в коллекцию, происходит считывание данных из базы. Это создано для избежания ситуаций, когда в программе одни данные а в базе уже другие.

Перед добавлением книги в коллекцию выполняется проверка, нет ли уже этой книги в данной коллекции, чтобы избежать дублей. Из-за этого время генерации так же увеличивается.

P.S. Версия первая, однозначно тут есть глюки, недоработки и ошибки. Внешний вид программы такой как он удобен лично мне, так что если кому-то не по вкусу - принимаю ваши предложения. В случае ошибок программы, в её папке появится каталог Logs, в котором будет дамп и описание ошибки. Прошу не пугаться Smile
Колонка ID временная, это реальный идентификатор из базы данных.



Прошлый версии :


Версия 1.0.0.2

  • Автоопределение ридера по метке и загрузка базы.
  • Генерация коллекций из выделенных книг.
  • Статус-бар, пока что только для отображения количества выделенных книг и коллекций.
  • Установка пути по умолчанию для книг в настройках.
  • Исправлена ошибка с вылетом в список коллекций.


А теперь подробнее. В файле settings.ini добавлен ряд новых настроек. При первом запуске все недостающие настройки пропишутся, со значениями по-умолчанию.

Для того чтобы работало автоопределение ридера и автоподключение к базе, необходимо вписать в настройках метки дисков для основной памяти и для карты памяти.
Пример:
MainMemoryLabel = READER
SDCardLabel = SDCARD
А так же указать с диска с какой меткой будет загружаться база.
Пример:
LabelForBaseAutoLoading = READER

И для того чтобы это всё работало надо установить параметр UseBaseAutoLoading равным 1. Соответственно, в значении 0 эти функции работать не будут.

Следующие параметры это:
BooksPath = Sony_Reader\media\books
и
UsePathFromSettings = 1

В первом параметре (BooksPath) указывается путь к папке, в которой хранятся книги. Если у вас книги хранятся и на карте памяти и в основной памяти, папка для их хранения должна быть одинаковой в обоих местах. Иначе это не будет работать. В начале и в конце путей слеши указывать нельзя!
Примеры:
h:\Sony_Reader\media\books\а тут книги -> Sony_Reader\media\books
h:\Books\а тут книги -> Books

Ну и второй параметр (UsePathFromSettings) включает/отключает эту опцию.

И последний параметр GenerateCollectionsFromSelectedBooks он включает возможность генерирования коллекций из выделенных книг. Причём нужно чтобы было выделено 2 и более книги.

Версия 1.0.0.3

Изменений пока что не много. Только сохранение состояния и размеров окна. А так же размеров колонок. Ну и принудительные кавычки в файле настроек.

Обновление. Версия 1.0.0.5

Реализована сортировка по колонкам. Причём для числовых и строковых колонок разные принципы сортировки. К числовым относятся колонки ID и новая колонка с номером порядка следования книги. В числовых колонках сортировка будет по возрастанию (ну или убыванию) 1,2,3,..9,10. А в строчных по символам 1,10,11,12.

И как раз о новой колонке. В списке книг в коллекции добавлена новая колонка, по умолчанию она пустая. При нажатии на кнопку "Сохранить порядок следования книг" (с рисунком пронумерованных строк) в неё установится номер по порядку. И при следующем открытии данной коллекции сортировка будет идти по данному номеру.

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

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

При добавлении новой коллекции и удалении старой, фокус будет возвращаться на ту коллекцию, что была открыта. А не сбрасываться на первую.

P.S.
В данный момент, в колонке "Книги в коллекции", есть возможность вручную изменять порядок следования книг. Но тут есть один нюанс. Перетаскиваемая книга становится на одну позицию выше чем там на которую её перетащили. То есть, если вы взяли 5-ю книгу и перетащили её на 1-ю, то 5-я станет 1-ой, а 1-я станет 2-й. Но! Если вы 5-ю книгу перетащили на последнюю, то 5-я станет предпоследней. Тут ещё предстоит подумать, как лучше это реализовать. Просто меня лично это не напрягает особо, поэтому оставил "на потом".

Обновление. Версия 1.0.0.6
Новый тип генерации коллекций, только по текущим папкам книги.
По просьбе и описанию Владимир М.



Обновление. Версия 1.0.0.7
Изменения :


Добавлена возможность перед открытием базы копировать её во временную папку, а после закрытия программы возвращать её назад на устройство.

После запуска новой версии в файле настроек появится пункт CopyDataBaseBeforeOpen, его необходимо выставить в значение "1", для включения нового режима.



Ссылка на скачивание, текущая версия 1.0.0.7:
http://dl.dropbox.com/u/1365162/SonyT1CollectionsEditor/SonyT1Collecti onsEditor.7z


Last edited by loveworthy on 19.07.2012 10:49; edited 7 times in total
 
View user's profile ^

REALexMSG
Член клуба The eBook

Член клуба The eBook



Joined: 01 Sep 2005
Posts: 23302


Location: Москва, Россия

Posted: 30.04.2012 19:15    

loveworthy
спасибо!
_________________
Sony PRS-500, Sony PRS-505, ...
Продажа в Москве и пересылка по России Sony Reader, Amazon Kindle, B&N Nook, Apple iPad и аксессуаров
 
View user's profile ^

rupor
Developer

Developer



Joined: 08 Nov 2008
Posts: 1985


Location: США

Posted: 30.04.2012 19:32    

Ребята, имейте ввиду - в Соневском коде на создание коллекций стоит проверка на 100. Т.е. создать 101 коллекцию на устройстве нельзя. Я не знаю, как они будут показывать много коллекций...
_________________
Sony PRS (500,505,900,650,T1,Т2), Nook (ST, GL+), Kindle (PW2,3,4 Voyage, Oasis 2)


Last edited by rupor on 01.05.2012 02:08; edited 1 time in total
 
View user's profile ^

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 30.04.2012 20:04    

rupor wrote:
Ребята, имейте ввиду - в Соневском коде на создание коллекций стоит проверка на 100. Т.е. создать 101 коллекцию нельзя. Я не знаю, как они будут показывать много коллекций...


Благодарю за информацию, добавлю в следующей версии проверку, чтобы было не больше 100 коллекций. По крайней мере в настройки добавлю возможность включения блокировки на генерацию и создание больше 100 коллекций.
 
View user's profile ^

BatalinVA
Член клуба The eBook

Член клуба The eBook



Joined: 25 Aug 2009
Posts: 25476


Location: 67°56с. ш. 32°54в. д.

Posted: 30.04.2012 20:16    

loveworthy Спасибо, друхх. плюсак заслуженый. А за то что со Сталинграда еще два плюсака.
_________________
есть:iPadAir; Kobo H2O; KPW2015;i Phone8+;
 
View user's profile ^

p4veltr
Зрелый участник форума

Зрелый участник форума



Joined: 23 Feb 2012
Posts: 35


Location: Казань

Posted: 30.04.2012 23:49    

Коллекции создались как надо. Только такое вот странное поведение наблюдаю: захожу в коллекции, вижу список. Если нажимаю на любую из коллекций, на секунду отображается список книг в ней, успеваю увидеть обложки, после этого снова отображается список коллекций. Как будто срабатывает выбор и сразу кнопка назад. Не знаю, связано это с генератором или прошивкой (стоит последний rupor).

Имхо трёхпанельный вид удобен, только делить надо по горизонтали т.к. в большинстве случаев названия длинный и при вертикальном разделении в экран не влезают. При горизонтальном текст будет во всю ширину экрана, что удобнее.
 
View user's profile ^

Nthnsq
Продвинутый участник форума

Продвинутый участник форума



Joined: 20 Jan 2012
Posts: 85



Posted: 01.05.2012 20:30    

loveworthy
Поигрался генеацией. При заходе в коллекции = "Произошла неожиданная остановка приложения Менеджер содержимого. Посторите попытку."
Повторял.
 
View user's profile ^

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 01.05.2012 20:58    

Nthnsq
Хм, странно конечно. А ID коллекций не сбился? Они у всех коллекций по порядку идут, нет такого ID чтобы выбивался из общего ряда? Или может быть название слишком длинное? Хорошо было бы взглянуть на books.db который выдаёт такую ошибку.

Сейчас попробовал создать больше 100 коллекций, все отображаются, но вот в самой читалке новые уже не создать.
Так же попробовал создать новую коллекцию с очень длинным названием и в название вставил кучу разных символов и букв, на тот случай если глюк из-за этого. И запхал в неё 450 книг. Ошибка так и не вышла. Даже идентификатор коллекции сбил, всё равно такой ошибки нет. Нужна база с ошибкой иначе не понять.
 
View user's profile ^

Nthnsq
Продвинутый участник форума

Продвинутый участник форума



Joined: 20 Jan 2012
Posts: 85



Posted: 01.05.2012 21:08    

Из пожеланий: вычислять присоединенный Ридер по метке тома и самому подключать db
 
View user's profile ^

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 01.05.2012 21:17    

Nthnsq
Quote:
Из пожеланий: вычислять присоединенный Ридер по метке тома и самому подключать db


Хорошо, тут проблем нет, сделаю. Только нюанс, какую базу подключать, основную или с карты памяти? Хотя, тут можно настройку сделать, а по умолчанию вопрос задавать.


Протестил ещё, сгенерировал коллекций по авторам. Набралось больше 240 штук в итоге, все отображаются и в каждую заходит. Хотя там даже были пустые названия и всякие не читаемые символы. Всё переварилось. Да делаю всё на последней прошивке от rupor.

Так что на лимит 100 коллекций можно внимания не обращать. Но и перебарщивать с этим стоит тоже.
 
View user's profile ^

Nthnsq
Продвинутый участник форума

Продвинутый участник форума



Joined: 20 Jan 2012
Posts: 85



Posted: 01.05.2012 21:57    

Я вот, честно говоря - не знаю - чего бы хотел. Книжка - недавно, хотел бы, закинув с компа новую книгу - получить ее к\в коллекции. Или по автору, или по жанру, или по каталогу.

Добавлено спустя 28 минут 18 секунд:

вот у меня книги находятся в таком порядке
http://s019.radikal.ru/i606/1205/db/7ef8ea60fd9d.jpg
хотел бы увидеть их и в Коллекциях в таком же виде
[/img]

Добавлено спустя 1 минуту 37 секунд:

Т.е. как программист программисту:
- определим - что хотим.
 
View user's profile ^

xlukin
Новенький участник форума

Новенький участник форума



Joined: 02 May 2012
Posts: 9



Posted: 02.05.2012 14:59    

каталог имеет вид i:\BOOK\названиеавтора\книга
при создании коллекций по структуре каталога обрезает первую букву в названиеавтора
и у русских и у английских каталогов
Не подскажите как победить?
 
View user's profile ^

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 02.05.2012 15:19    

xlukin
Старое сообщение :

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

Ещё раз уточню, обрезает первую букву вообще у всех коллекций, в этом месте? Или только у определённых?

А если создать коллекцию вручную, она полностью создаётся, или тоже обрезается первая буква?

P.S. Каталог именно i:\BOOK\ а не стандартно i:\Books\ ?



В общем, разобрался в причине, и думаю что исправил, читалки под рукой нет, проверить не могу.
Скачать можно по старой ссылке.
 
View user's profile ^

xlukin
Новенький участник форума

Новенький участник форума



Joined: 02 May 2012
Posts: 9



Posted: 02.05.2012 15:57    

Ручная создается нормально.
Каталог именно i:\BOOK\
Обрезает у всех
может быть действительно дело в количестве знаков?
пробовал до этого генерить из папки i:\Book_256\ так там названия начинались с 56, точно не уверен .тк уже потер те коллекции. если нужно можно еще поиграться.

Posted after 2 minutes 57 seconds:

Сейчас протестим ))) Спасибо

Posted after 3 minutes 37 seconds:

и раньше и теперь генерит ошибку:
Sqlite error near "Lavransa" , при закрытии работает дальше , не знаю пропускает ли чтонить при этом из книг.
Сходу не вижу в названиях или авторах "Lavransa"

Posted after 2 minutes 41 seconds:

нашел lavransa и еще несколько таких же ошибок появляется если есть ' в названии или авторе
(апостороф)

Posted after 1 minute 29 seconds:

апостров , сорри за опечатку

Posted after 51 minutes:

проблема с именами решилась. Спасибо.
при этом понял что было бы очень удобно иметь возможность удалять несколько коллекций разом, а не по одной.
и еще генерить коллекции на выбранные справа файлы , а не на весь список. (например если добавил две-три папки и перестраивать все незачем)
 
View user's profile ^

loveworthy
Бывалый участник форума

Бывалый участник форума



Joined: 26 Aug 2010
Posts: 101


Location: Волгоград

Posted: 02.05.2012 18:28    

Хорошо, удаление нескольких коллекций разом сделаю. А вот с апострофами надо подумать как быть. Но думаю с ними тоже решу проблему.

На несколько книг тоже можно сделать генерацию. Но тут наверное такой будет алгоритм, если в окне справа выделено больше одной книги, то генерация будет происходить только для них. Ещё подумаю над реализацией этого всего.

Наверное уже завтра это сделаю.
 
View user's profile ^

ts71
Недавний участник форума

Недавний участник форума



Joined: 28 Apr 2012
Posts: 13



Posted: 02.05.2012 21:55    

Можно реализовать статусбар внизу? В нём индикатор прогресса, счётчики количества(выделеленных ?) файлов под каждой частью(зависимость от фокуса?). Полезно было бы видеть на каком этапе процесс и сколько книг выбрано для коллекции.
Поймал проблему:
Создал во внутр. памяти пять коллекций(из книг здесь же), ID по порядку 1,2,3,4,5 . Затем открываю базу на мSD, создаю (во внутр. памяти) три коллекции, ID 1,2,3 . Открываю ридер - коллекции с ID 1,2,3 перемешаны Sad. Из программы удалил коллекции 1,2,3 базы mSD, создал пустые с ID 1,2,3,4,5 ,чтоб нужные мне получились начиная с 6. Удалил пустые, в ридере порядок Smile.
Спасибо.
 
View user's profile ^

xlukin
Новенький участник форума

Новенький участник форума



Joined: 02 May 2012
Posts: 9



Posted: 03.05.2012 10:03    

какой примерно процент по объему от объема книг должна занимать база? при первой генерации базы самой читалкой при объеме книг 400 мег, ее объем составил 100 мег.
Составлял и удалял множество коллекций Вашей программой несколько раз. сейчас коллекций 83 штуки и объем базы 290 мег. Данные о 80 коллекциях могут так базу раздуть? Дубляжей нет, вложенности папок нет, каждая книга входил только в одну коллекцию.
Стоит в тестовых целях перегенерить коллекции на обнуленной базе одним проходом? Или логика работы программы гарантирует вычищение всех данных от удаленных коллекций?

Вопрос не по теме: а что он в базе то хранит в таких количествах? название автор и путь к файлу должны копейки занимать. неужели обложки так жрут место?

Программа супер , еще раз спасибо, просто не представляю как можно с этой дебильной логикой Sony работать без Вашей проги. )))
 
View user's profile ^

Nthnsq
Продвинутый участник форума

Продвинутый участник форума



Joined: 20 Jan 2012
Posts: 85



Posted: 03.05.2012 11:09    

loveworthy
пробую новую сборку
подскажите, может я чтот недопонял?
Из мануала
Quote:

Если представить что мы имеем такую структуру каталогов:

Фантастика\Айзек Азимов
Фантастика\Warhammer 40000\Ересь Хоруса

то коллекции будут иметь вид:
Фантастика
Фантастика~Айзек Азимов
Фантастика~Warhammer 40000
Фантастика~Warhammer 40000~Ересь Хоруса

где располагать книги, чтобы получился такой вид коллекции? В Корне ридера? Глубже?
Просто тогда в коллекции прорисовывается полный путь
root~Sony_Reader~media~ИмяКаталогаСКнигами
а желательно бы только ИмяКаталогаСКнигами. Т.е. где-то указать в енастройках - где находятся книги, и пусть программа при присвоении имени этот путь отбрасывает, а пишет только структуру, которая внутри.

Добавлено спустя 10 минут 53 секунды:


вот картинка
зачем вообще первые 2 коллекции?
А черным выделил - как бы хотел видеть коллекции.

Добавлено спустя 3 минуты 46 секунд:

И - самое непритяное - я не могу зайти в Коллекцию. Открывает и обратно закрывает. В Книги - могу, все книги в fb2.
 
View user's profile ^

ts71
Недавний участник форума

Недавний участник форума



Joined: 28 Apr 2012
Posts: 13



Posted: 03.05.2012 11:32    

Quote:
пусть программа при присвоении имени этот путь отбрасывает

Это как? А если путь такой: Reader\BOOKS\*жанр\*автор\*серия\*книги , покуда обрезать надо?
Не надо этого, полный путь наглядней и удобней. Тем более этот путь фиксирован в books.db .

UPD. Используйте ручной режим создания коллекций и добавления в неё книг. Будет выглядеть как необходимо вам.
 
View user's profile ^

Nthnsq
Продвинутый участник форума

Продвинутый участник форума



Joined: 20 Jan 2012
Posts: 85



Posted: 03.05.2012 12:07    

Обрезать - покуда сам установишь. Я же написал - в настройках
А зачем такой длинный путь в имени коллекции?
Удаляю коллекции в программе, отключаю кабель, захожу в Ридер - все на месте. Только руками из Ридера удалять.
Ну и - нельзя зайти в коллекцию. Открывает список и сразу оттуда вылетает опять на список коллекций.
 
View user's profile ^
Libroom Forum IndexSony ReaderSony Reader на базе Android OSAll times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5, 6  Next
Page 1 of 6

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Libroom, 2021