Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Qt Book Reader - Читалка электронных книг  (Прочитано 872805 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Qt Book Reader - Читалка электронных книг
« : 12 Августа 2021, 01:02:23 »
Привет.

Я тут в свободное время по чуть-чуть пишу читалку электронных книг на Qt. И вот я кажется созрел показать её кому кроме друзей.

Код и инструкция по сборке тут: https://github.com/moose-kazan/qbr

PPA: https://launchpad.net/~bulvinkl/+archive/ubuntu/ppa/+packages

Разрабатываю и тестирую на Kubuntu 22.04.

Код не отличается красотой, но в своё оправдание могу сказать что эта читалка - единственное что я написал на плюсах за последние лет десять:)

В настоящий момент читалка умеет открывать FB2, FB3, CBZ и AMB сохранять открытую книгу в HTML, искать слова в тексте.

В планах:
  • Запоминать и восстанавливать позицию в книге (сделано)
  • Добавить поддержку других форматов (из ближайших планов: ODT и EPUB)
  • Переделать поиск по тексту (сделать более удобным) (сделано)
  • Исправлять баги:)
  • Попробовать собрать под Windows (не факт что буду поддерживать этот билд)

Буду рад конструктивной критике. Ну а патчам буду рад в двойне:)

Замечания можно писать сюда и в трэкер на гитхабе.

Ну и скриншот:



« Последнее редактирование: 05 Января 2024, 05:11:12 от MooSE »

Оффлайн Ser_W

  • Активист
  • *
  • Сообщений: 385
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #1 : 12 Августа 2021, 15:57:05 »
MooSE, хрошее начинание, но вам нужно стать по-настоящему кроссплатформенным, иначе не взлетит, кмк!
Вот сюда добавьте себя: https://ru.wikipedia.org/wiki/FictionBook .

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #2 : 12 Августа 2021, 19:47:33 »
В планах:
Запоминать и восстанавливать позицию в книге
Для читалки, ИМХО, это самое важное.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

astroncia

  • Гость
Re: Qt Book Reader - Читалка электронных книг
« Ответ #3 : 12 Августа 2021, 21:36:12 »
Цитировать
sudo apt install qt5-make qt5-default qtwebengine5-dev libquazip5-dev build-essential
В README.md опечатка, qt5-make - видимо имелось ввиду qt5-qmake? :)

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #4 : 13 Августа 2021, 00:02:20 »
В README.md опечатка, qt5-make - видимо имелось ввиду qt5-qmake?

Да. Спасибо. Поправил.

Пользователь добавил сообщение 13 Августа 2021, 00:06:49:
MooSE, хрошее начинание, но вам нужно стать по-настоящему кроссплатформенным, иначе не взлетит, кмк!
Вот сюда добавьте себя: https://ru.wikipedia.org/wiki/FictionBook .

Писать самому про себя на википедии мне кажется не очень правильным:)

Сейчас кроссплатформенность не в приоритете. Ещё не весь базовый функционал реализован:)
« Последнее редактирование: 13 Августа 2021, 00:06:49 от MooSE »

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #5 : 21 Января 2022, 12:29:19 »
Медленно и неуверенно, но всё-таки пилю читалку дальше. Полностью переписал главное окно, реализовал сохранение позиции в книге, перекроил поиск и исправил некоторое количество багов.

Morisson

  • Гость
Re: Qt Book Reader - Читалка электронных книг
« Ответ #6 : 25 Января 2022, 14:44:59 »
У меня такой нескромный вопрос - а зачем делать приложение на Qt ?
Нескромно отвечу- qt- кроссплатформенно, gtk- нет.
Пример кроссплатформенного приложения на qt- qbittorrent, работает в Windows, линукс и макос.
Это удобно для разработчика.

Будет срач- удалю все "левые" сообщения, зачинщики получат перманентный бан, ведомые- проценты.
« Последнее редактирование: 25 Января 2022, 14:48:08 от Morisson »

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #7 : 18 Февраля 2023, 14:08:05 »
С момент прошлого поста прошёл год. Времени катастрофически нет, но за этот год:

  • Проведён рефакторинг кода
  • Добавлена поддержка AMB-книг
  • Добавлены настройки
  • При запуске читалка теперь открывает последний файл (отключаемо)
  • Начал собирать пакеты в PPA (ссылка в первом посте)
  • В связи с переходом с 20.04 на 22.04 версия quazip в зависимостях теперь 0.9 или выше

Оффлайн faveoled

  • Участник
  • *
  • Сообщений: 174
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #8 : 18 Февраля 2023, 15:12:41 »
А какой смысл писать десктоп на C++ в 2023, париться с указателями и т.п.? Я не пытаюсь провоцировать

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #9 : 19 Февраля 2023, 03:02:59 »
А какой смысл писать десктоп на C++ в 2023, париться с указателями и т.п.? Я не пытаюсь провоцировать

Потому что это родной язык для Qt. Биндинги для других языков или не все возможности Qt поддерживают, или содержат баги/нюансы, с которыми не сталкиваешься когда используешь C++.

Оффлайн cargan

  • Активист
  • *
  • Сообщений: 488
  • Oderint, dum metuant
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #10 : 19 Февраля 2023, 10:04:33 »
для Qt и Python тоже родной!
А почему нет формата EPUB???

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #11 : 19 Февраля 2023, 11:55:17 »
для Qt и Python тоже родной!

1. У Qt родной только C++
2. В питоновских биндингах для Qt я столкнулся с проблемами разбора XML если оный не в utf-8. А очень часто FB2-файлы имеют внутри кодировку 1251/

А почему нет формата EPUB???

В планах есть. Но там сам формат допускает довольно много вольностей и можно или как многие другие читалки - забить на спеку и реализовать только частично, или попробовать сделать хорошо, но я пока не придумал как.

P.S. Очень не хочу холиваров по поводу Qt и/или C++. В планах есть сборка не только под Linux, но и под другие ОС и тут связка Qt и C++ подходит очень хорошо.
« Последнее редактирование: 19 Февраля 2023, 12:08:07 от MooSE »

Оффлайн cargan

  • Активист
  • *
  • Сообщений: 488
  • Oderint, dum metuant
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #12 : 19 Февраля 2023, 20:06:25 »
В планах есть. Но там сам формат допускает довольно много вольностей и можно или как многие другие читалки - забить на спеку и реализовать только частично, или попробовать сделать хорошо, но я пока не придумал как.
Если говорить просто -EPUB - всего лишь спакованая в ZIP - страница из HTML+CSS+скрипты. Там все просто как три копейки, правда не все возможости читалки могут исполнить, ну это уже не важно.
Я тоже предпочитаю Си, но Питон мне сейчас больше нравится - ибо это интерпретатор, а он всегда эффективнее, с точки зрения перестройки структуры ибо исполнение происходит на ходу и не привязывается к оси, системе команд и прочего
-------------
ЯТД - главное в читалках - это преобразователь формата в удобноисполняемый, а форматы потом можно прикодировать к этому.
Советую внимательнее присмотреться к системе calibre - там есть много чего интересного
« Последнее редактирование: 21 Февраля 2023, 09:30:35 от cargan »

Оффлайн MooSE

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1110
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #13 : 19 Февраля 2023, 22:20:42 »
1. Про epub всё просто только на словах. Спецификация позволяет кроме HTML встраивать ещё шрифты, изображения, видео и аудио, и не накладывает серьёзных ограничений на HTML и CSS, допускает подгрузку содержимого не только из контейнера и много чего ещё. Это больше напоминает CHM, чем обычную книгу.

2. Вы пишете про enca но как будто бы не постарались вникнуть в суть. Во-первых enca хороша для автоматического определения кодировки. В XML кодировка указана явно и с определением проблем нет. Проблема немного в другом.

В C++ метод QDomDocument->SetContent нормально отрабатывает если контент передан как QByteArray, в питоне что-то идёт не так и разбор идёт как utf-8, независимо от того что указано в документе и как этот документ передан. В итоге это приводит как минимум к некорректному разбору, а часто вообще к ошибке.

3. Использование интерпретируемого языка требует наличия интерпретатора на пользовательской машине, биндингов для используемых библиотек и самих библиотек. В случае компилируемого языка можно в крайнем случае слинковать всё статически и не думать как windows-пользователю установить python, qt, pyside и проч. На этом ещё раз прошу дискуссию по выбор языка и библиотек закончить.

Оффлайн cargan

  • Активист
  • *
  • Сообщений: 488
  • Oderint, dum metuant
    • Просмотр профиля
Re: Qt Book Reader - Читалка электронных книг
« Ответ #14 : 20 Февраля 2023, 02:52:07 »
Про epub всё просто только на словах. Спецификация позволяет кроме HTML встраивать ещё шрифты, изображения, видео и аудио, и не накладывает серьёзных ограничений на HTML и CSS, допускает подгрузку содержимого не только из контейнера и много чего ещё. Это больше напоминает CHM, чем обычную книгу.
да нет.. я так и редактирую сторонний Epub - распаковываю  и просто правлю в GEDIТ, используя специальный плагин для HTML-файлов. Простая спецификация обычного HTML, с щрифтами имаджами и прочим; кладешь их в папки и ссылаешься на них из текста. Причем каждая секция может нахoдится в своем отдельном файле и от этого можно собирать очень большие книги, ибо грузится он в чмталку порционно, а не всем файлом как это бывает c FB+картинки

Пользователь добавил сообщение 20 Февраля 2023, 03:00:29:
в Питоне просто нужно указать что вы используете кодировку UTF-8.
По умолчанию она имено такая поэтоиу ее ни кто не указывает
кароче#!/usr/bin/python
# -*- coding: utf-8 -*-
добавить строку и тогда ваши скрипты будут работать и с национальными кодировками символов!

Пользователь добавил сообщение 20 Февраля 2023, 03:04:45:
и последнее я вас не нагибаю - как хотите так и пишите, но уверен на Сях этот проект не прокатит...
« Последнее редактирование: 20 Февраля 2023, 03:04:45 от cargan »

 

Страница сгенерирована за 0.044 секунд. Запросов: 21.