Qt based ebook reader

Overview

Lector

Qt based ebook reader

Currently supports:

  • pdf
  • epub
  • djvu
  • fb2
  • mobi
  • azw / azw3 / azw4
  • cbr / cbz
  • md

Contribute

Paypal

Bitcoin: 17jaxj26vFJNqQ2hEVerbBV5fpTusfqFro

Requirements

Needed

Package Version tested
Python 3.6
PyQt5 5.10.1
python-lxml 4.3.0
python-beautifulsoup4 4.6.0
python-xmltodict 0.11.0

Optional

Package Version tested Required for
python-pymupdf 1.14.5 PDF support
python-djvulibre 0.8.4 DjVu support
python-markdown 3.0.1 Markdown support
textile 3.0.4 TXT support

Support

When reporting issues:

  • Make sure you're at the latest commit.
  • Run with $EXECUTABLEPATH debug.
  • Include the log ~/.local/share/Lector/Lector.log AND terminal output.
  • If you're having trouble with a book while the rest of the application / other books work, please link to a copy of the book itself.
  • If nothing is working, please make sure the requirements mentioned above are all installed, and are at least at the version mentioned.

Installation

Manual

  1. Install dependencies - I recommend using your package manager for this.

  2. Clone repository

  3. Type the following in the root directory:

     $ python setup.py build
     # python setup.py install
    
  4. OR launch with lector/__main__.py

Available packages

Translations

  1. There is a SAMPLE.ts file here. Open it in Qt Linguist.
  2. Pick the language you wish to translate to.
  3. Translate relevant strings.
  4. Try to resist the urge to include profanity.
  5. Save the file as Lector_<language> and send it to me, preferably as a pull request.

Please keep the translations short. There's only so much space for UI elements.

Screenshots

Main window

alt tag

Table view

alt tag

Book reading view

alt tag

Distraction free view

alt tag

Annotation support

alt tag

Comic reading view

alt tag

Bookmark support

alt tag

View profiles

alt tag

Metadata editor

alt tag

In program dictionary

alt tag

Settings window

alt tag

Attributions

License

Lector is released under the GNU General Public License v3.0 or any later version. See the LICENSE file for details.

Comments
  • Can't add new epub file

    Can't add new epub file

    Database returned no paths for settings...
    Available parsers: *.epub *.mobi *.azw *.azw3 *.azw4 *.prc *.cbz *.cbr
    Database returned nothing
    Exception in thread Thread-1:
    multiprocessing.pool.RemoteTraceback:
    """
    Traceback (most recent call last):
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
        result = (True, func(*args, **kwds))
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
        return list(map(*args))
      File "/home/delfino/python/Lector/sorter.py", line 165, in read_book
        book_ref.read_book()
      File "/home/delfino/python/Lector/parsers/epub.py", line 37, in read_book
        contents_found = self.book_ref.read_epub()
      File "/home/delfino/python/Lector/ePub/read_epub.py", line 38, in read_epub
        None, True)
      File "/home/delfino/python/Lector/ePub/read_epub.py", line 74, in get_file_path
        xml = self.parse_xml(container_location, 'xml')
      File "/home/delfino/python/Lector/ePub/read_epub.py", line 63, in parse_xml
        root = BeautifulSoup(this_xml, parser)
      File "/home/delfino/.local/share/virtualenvs/Lector-qOw1XMLY/lib/python3.6/site-packages/bs4/__init__.py", line 165, in __init__
        % ",".join(features))
    bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
    """
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
        self.run()
      File "/usr/lib/python3.6/threading.py", line 864, in run
        self._target(*self._args, **self._kwargs)
      File "/home/delfino/python/Lector/sorter.py", line 253, in pool_creator
        self.read_book, self.file_list)
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 266, in map
        return self._map_async(func, iterable, mapstar, chunksize).get()
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get
        raise self._value
    bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
    
    Finished processing in 0.01865553855895996
    Saving settings...
    
    opened by delfino-nunez 15
  • TypeError: 'NoneType' object is not iterable

    TypeError: 'NoneType' object is not iterable

    On arch I get the following errors after installing through AUR:

    $ lector                                                                                                                                                   
    Locale: en_DK (No translations found)
    Database returned no paths for settings...
    Available parsers: *.pdf *.epub *.mobi *.azw *.azw3 *.azw4 *.prc *.cbz *.cbr
    Database returned nothing
    Traceback (most recent call last):
      File "/usr/bin/lector", line 11, in <module>
        load_entry_point('lector==0.3.0', 'gui_scripts', 'lector')()
      File "/usr/lib/python3.6/site-packages/lector/__main__.py", line 1260, in main
        form = MainUI()
      File "/usr/lib/python3.6/site-packages/lector/__main__.py", line 226, in __init__
        self.lib_ref.generate_library_tags()
      File "/usr/lib/python3.6/site-packages/lector/library.py", line 259, in generate_library_tags
        i[0]: (None, None) for i in db_library_directories}
    TypeError: 'NoneType' object is not iterable
    
    opened by jnor 9
  • Pyqt5 error

    Pyqt5 error

    I installed the application from the aur into my desktop. When I launch it gives me this error: pkg_resources.DistributionNotFound:The 'PyQt5>=5.10.1' distribution was not found and is required by lector However, I have this package installed already: sudo pacman -Ss pyqt5 extra/pyqt5-common 5.10.1-1 [installed] Common PyQt files shared between python-pyqt5 and python2-pyqt5 extra/python-pyqt5 5.10.1-1 [installed] A set of Python 3.x bindings for the Qt5 toolkit

    opened by DukeValentine 9
  • Build for Windows?

    Build for Windows?

    As one of the computer illiterates I'm lost here,I dont really know how to run it but I like it very much compared let's say sumatra.So it would be great to be able to run it on Windows

    opened by GoHoo 7
  • Can't add books to library

    Can't add books to library

    When trying to add a book to my library, I get the following error:

    Database returned no paths for settings...
    Available parsers: *.pdf *.epub *.mobi *.azw *.azw3 *.azw4 *.prc *.cbz *.cbr
    Database returned nothing
    Finished processing in 0.17900586128234863
    Traceback (most recent call last):
      File "/usr/lib/python3.6/site-packages/lector/models.py", line 91, in headerData
        return self.header_data[column]
    IndexError: list index out of range
    zsh: abort (core dumped)  lector
    
    

    This seems to happen most of the time. There have been a couple of times that I managed to actually add books, but they didn't appear even though the library didn't throw an error. Happy to try and debug it.

    opened by ConorIA 7
  • Can't open .epub files

    Can't open .epub files

    Linux br0nde 4.19.24-1-MANJARO #1 SMP PREEMPT Wed Feb 20 22:59:23 UTC 2019 x86_64 GNU/Linux Python 3.7.2 Lector A Qt Based ebook reader v0.5.1

    Lector was installed from AUR

    When i trying to open epub book nothing happens

    Log 2019/03/11 00:23:07,125 lector.sorter ERROR Content generation error: /home/br0nde/books/richard_k_morgan-vidoizmenennij_uglerod-1518106530.epub AttributeError Arguments: ("'NoneType' object has no attribute 'lower'",) Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/lector/sorter.py", line 262, in read_book book_breakdown = book_ref.generate_content() File "/usr/lib/python3.7/site-packages/lector/parsers/epub.py", line 47, in generate_content self.book.generate_content() File "/usr/lib/python3.7/site-packages/lector/readers/read_epub.py", line 351, in generate_content self.cover_image_name.lower() + '.jpg' in self.content[0][2].lower(), AttributeError: 'NoneType' object has no attribute 'lower' 2019/03/11 00:23:07,218 lector.main ERROR No parseable files found

    opened by br0nde 6
  • Exception trhown at the end of scan library

    Exception trhown at the end of scan library

    I'm getting an exception thrown at the end of scan library. Here is the stacktrace:

    Available parsers: *.pdf *.epub *.mobi *.azw *.azw3 *.azw4 *.prc *.cbz *.cbr
    Database returned nothing
    357 books found
    No cover found for: /home/ryogi/drive/Books/Literature/Cassandra Clare/The Infernal Devices/Book 1 - Clockwork Angel by Cassandra Clare.epub
    "Error: Non conformant codestream TPsot==TNsot.<0a>"
    "Error: Non conformant codestream TPsot==TNsot.<0a>"
    Corrupt JPEG data: 310222 extraneous bytes before marker 0xd9
    Exception in thread Thread-10:
    multiprocessing.pool.RemoteTraceback: 
    """
    Traceback (most recent call last):
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
        result = (True, func(*args, **kwds))
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
        return list(map(*args))
      File "/usr/lib/python3.6/site-packages/lector/sorter.py", line 168, in read_book
        book_ref.read_book()
      File "/usr/lib/python3.6/site-packages/parsers/epub.py", line 36, in read_book
        contents_found = self.book_ref.read_epub()
      File "/usr/lib/python3.6/site-packages/ePub/read_epub.py", line 38, in read_epub
        None, True)
      File "/usr/lib/python3.6/site-packages/ePub/read_epub.py", line 79, in get_file_path
        return root_item.get('full-path')
    AttributeError: 'NoneType' object has no attribute 'get'
    """
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
        self.run()
      File "/usr/lib/python3.6/threading.py", line 864, in run
        self._target(*self._args, **self._kwargs)
      File "/usr/lib/python3.6/site-packages/lector/sorter.py", line 259, in pool_creator
        self.read_book, self.file_list)
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 266, in map
        return self._map_async(func, iterable, mapstar, chunksize).get()
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get
        raise self._value
    AttributeError: 'NoneType' object has no attribute 'get'
    
    Finished processing in 35.2248158454895
    
    

    I'm not sure exactly what book caused the issue, Is there an option to increase the ammount of verbosity?

    Regards.

    opened by ZeroRyogi 6
  • [Feature Request]Want a TreeView for bookmarks

    [Feature Request]Want a TreeView for bookmarks

    Now Lector shows bookmarks in a ComboBox on the toolbar. I think it would be more convenient if a TreeView containing bookmarks was placed on the left side of book texts.


    toolbar


    |Cover    | |Copyright  | |Contents   | |-Chapter1  | | 1.1 ...    |           book texts | 1.2 ...    | |+Chapter2  | |+Chapter3   | |...       |

    opened by yinkaisheng 5
  • Lector doesn't show books after adding books on Windows

    Lector doesn't show books after adding books on Windows

    Hi I added two books. Lector showed the progress of adding books at the bottom of UI. But Lector didn't show the books after the progress reached 100% and disappeared. I opened Lector.db. The books existed in the db. My OS is Windows 7 sp1 x64. The same issue occured on Ubuntu 16.04 too with an exception. default

    ` [email protected]:/mnt/hgfs/Python/LectorReader/lector# python3.6 main.py python-poppler-qt5 is not installed. Pdf files will not work. QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' Locale: en_US (No translations found) Available parsers: *.epub *.mobi *.azw *.azw3 *.azw4 *.prc *.cbz *.cbr Database returned nothing Exception in thread Thread-1: multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker result = (True, func(*args, **kwds)) File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar return list(map(*args)) File "/mnt/hgfs/Python/LectorReader/lector/sorter.py", line 185, in read_book book_ref.read_book() File "/mnt/hgfs/Python/LectorReader/lector/parsers/epub.py", line 36, in read_book contents_found = self.book_ref.read_epub() File "/mnt/hgfs/Python/LectorReader/lector/ePub/read_epub.py", line 38, in read_epub None, True) File "/mnt/hgfs/Python/LectorReader/lector/ePub/read_epub.py", line 75, in get_file_path xml = self.parse_xml(container_location, 'xml') File "/mnt/hgfs/Python/LectorReader/lector/ePub/read_epub.py", line 64, in parse_xml root = BeautifulSoup(this_xml, parser) File "/usr/local/lib/python3.6/dist-packages/bs4/init.py", line 165, in init % ",".join(features)) bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library? """

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner self.run() File "/usr/lib/python3.6/threading.py", line 864, in run self._target(*self._args, **self._kwargs) File "/mnt/hgfs/Python/LectorReader/lector/sorter.py", line 277, in pool_creator self.read_book, self.file_list) File "/usr/lib/python3.6/multiprocessing/pool.py", line 266, in map return self._map_async(func, iterable, mapstar, chunksize).get() File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get raise self._value bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?

    Finished processing in 0.08451461791992188 `

    opened by yinkaisheng 5
  • RecursionError: maximum recursion depth exceeded

    RecursionError: maximum recursion depth exceeded

    Hi,

    I am trying to build an RPM package. But when building the package, I got this message:

    [    9s]   File "/home/abuild/rpmbuild/BUILD/Lector-0.3.1/lector/KindleUnpack/kindleunpack.py", line 183, in <module>
    [    9s]     from .unpack_structure import fileNames
    [    9s]   File "/home/abuild/rpmbuild/BUILD/Lector-0.3.1/lector/KindleUnpack/unpack_structure.py", line 23, in <module>
    [    9s]     from .mobi_utils import mangle_fonts
    [    9s]   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
    [    9s]   File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
    [    9s]   File "<frozen importlib._bootstrap>", line 894, in _find_spec
    [    9s]   File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
    [    9s]   File "<frozen importlib._bootstrap_external>", line 1129, in _get_spec
    [    9s]   File "<frozen importlib._bootstrap_external>", line 1273, in find_spec
    [    9s]   File "<frozen importlib._bootstrap_external>", line 1231, in _get_spec
    [    9s]   File "<frozen importlib._bootstrap_external>", line 556, in spec_from_file_location
    [    9s] RecursionError: maximum recursion depth exceeded
    [   10s] error: Bad exit status from /var/tmp/rpm-tmp.hWB5yf (%check)
    

    Is here anything wrong with my configuration or I need to modify the code?

    opened by guoyunhe 5
  • Can't open book

    Can't open book

    There's a book that I've added to my library that lector is not able to open. It gives this error:

    Traceback (most recent call last):
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
        result = (True, func(*args, **kwds))
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
        return list(map(*args))
      File "/usr/lib/python3.6/site-packages/lector/sorter.py", line 210, in read_book
        all_content = book_ref.get_contents()
      File "/usr/lib/python3.6/site-packages/parsers/epub.py", line 63, in get_contents
        self.book_ref.parse_chapters(temp_dir=self.extract_path)
      File "/usr/lib/python3.6/site-packages/ePub/read_epub.py", line 246, in parse_chapters
        chapter_data, self.book['split_chapters'][i])
      File "/usr/lib/python3.6/site-packages/ePub/read_epub.py", line 317, in get_split_content
        xml_string = this_split[1]
    IndexError: list index out of range
    """
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
        self.run()
      File "/usr/lib/python3.6/threading.py", line 864, in run
        self._target(*self._args, **self._kwargs)
      File "/usr/lib/python3.6/site-packages/lector/sorter.py", line 268, in pool_creator
        self.read_book, self.file_list)
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 266, in map
        return self._map_async(func, iterable, mapstar, chunksize).get()
      File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get
        raise self._value
    IndexError: list index out of range
    
    opened by DukeValentine 5
  • Error in sizeHint, bad arguments

    Error in sizeHint, bad arguments

    https://github.com/BasioMeusPuga/Lector/blob/1b1d87739a8c14e0e22009435350b155fc3e3b77/lector/toolbars.py#L514

    Traceback (most recent call last):
      File "/usr/lib/python3.10/site-packages/lector/toolbars.py", line 514, in sizeHint
        return QtCore.QSize(self.adjusted_size, 22)
    TypeError: arguments did not match any overloaded call:
      QSize(): too many arguments
      QSize(int, int): argument 1 has unexpected type 'float'
      QSize(QSize): argument 1 has unexpected type 'float'
    fish: Job 1, 'lector' terminated by signal SIGABRT (Abort)
    

    I'm using lector-0.5.1-1 with Arch Linux.

    opened by J053Fabi0 2
  • Bump lxml from 4.6.5 to 4.9.1

    Bump lxml from 4.6.5 to 4.9.1

    Bumps lxml from 4.6.5 to 4.9.1.

    Changelog

    Sourced from lxml's changelog.

    4.9.1 (2022-07-01)

    Bugs fixed

    • A crash was resolved when using iterwalk() (or canonicalize()) after parsing certain incorrect input. Note that iterwalk() can crash on valid input parsed with the same parser after failing to parse the incorrect input.

    4.9.0 (2022-06-01)

    Bugs fixed

    • GH#341: The mixin inheritance order in lxml.html was corrected. Patch by xmo-odoo.

    Other changes

    • Built with Cython 0.29.30 to adapt to changes in Python 3.11 and 3.12.

    • Wheels include zlib 1.2.12, libxml2 2.9.14 and libxslt 1.1.35 (libxml2 2.9.12+ and libxslt 1.1.34 on Windows).

    • GH#343: Windows-AArch64 build support in Visual Studio. Patch by Steve Dower.

    4.8.0 (2022-02-17)

    Features added

    • GH#337: Path-like objects are now supported throughout the API instead of just strings. Patch by Henning Janssen.

    • The ElementMaker now supports QName values as tags, which always override the default namespace of the factory.

    Bugs fixed

    • GH#338: In lxml.objectify, the XSI float annotation "nan" and "inf" were spelled in lower case, whereas XML Schema datatypes define them as "NaN" and "INF" respectively.

    ... (truncated)

    Commits
    • d01872c Prevent parse failure in new test from leaking into later test runs.
    • d65e632 Prepare release of lxml 4.9.1.
    • 86368e9 Fix a crash when incorrect parser input occurs together with usages of iterwa...
    • 50c2764 Delete unused Travis CI config and reference in docs (GH-345)
    • 8f0bf2d Try to speed up the musllinux AArch64 build by splitting the different CPytho...
    • b9f7074 Remove debug print from test.
    • b224e0f Try to install 'xz' in wheel builds, if available, since it's now needed to e...
    • 897ebfa Update macOS deployment target version from 10.14 to 10.15 since 10.14 starts...
    • 853c9e9 Prepare release of 4.9.0.
    • d3f77e6 Add a test for https://bugs.launchpad.net/lxml/+bug/1965070 leaving out the a...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Flash back occurs when reading PDF

    Flash back occurs when reading PDF

    If you click to go to full-screen mode or open the Reading Settings bar while reading a PDF, the BookToolBar returns with a button that doesn't exist, and when you click it, the BookToolBar automatically flashes back with an error. image

    opened by PaperPlane7 0
  • /usr/lib/python3.8/site-packages/fitz/_fitz.cpython-38-x86_64-linux-gnu.so: undefined symbol: jbig2_page_out

    /usr/lib/python3.8/site-packages/fitz/_fitz.cpython-38-x86_64-linux-gnu.so: undefined symbol: jbig2_page_out

    It appear this error when i run

    Traceback (most recent call last): File "/usr/bin/lector", line 33, in sys.exit(load_entry_point('lector==0.5.1', 'gui_scripts', 'lector')()) File "/usr/bin/lector", line 25, in importlib_load_entry_point return next(matches).load() File "/usr/lib/python3.8/importlib/metadata.py", line 77, in load module = import_module(match.group('module')) File "/usr/lib/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 783, in exec_module File "", line 219, in _call_with_frames_removed File "/usr/lib/python3.8/site-packages/lector/main.py", line 42, in from lector import sorter File "/usr/lib/python3.8/site-packages/lector/sorter.py", line 58, in from lector.parsers.pdf import ParsePDF File "/usr/lib/python3.8/site-packages/lector/parsers/pdf.py", line 20, in import fitz File "/usr/lib/python3.8/site-packages/fitz/init.py", line 3, in from fitz.fitz import * File "/usr/lib/python3.8/site-packages/fitz/fitz.py", line 18, in from . import _fitz ImportError: /usr/lib/python3.8/site-packages/fitz/_fitz.cpython-38-x86_64-linux-gnu.so: undefined symbol: jbig2_page_out

    opened by Ripo-za 1
Releases(0.5.1)
  • 0.5.1(Mar 9, 2019)

  • 0.5(Mar 2, 2019)

    I have no idea how to write email subjects. Apart from "Sexy shingles in your area". That one was classic.

    • fb2 support
    • Comicbooks / PDFs: Double page mode, Manga mode, Image color inversion
    • Search functionality
    • Way better sidedock
    • Seriously overhauled ToC generation for all filetypes. Now with more tree view
    • Error logging - Error notifications
    • Much better error handling
    • UI improvements
    • Bugfixes

    Contribute: Paypal: https://www.paypal.me/supportlector Bitcoin: 17jaxj26vFJNqQ2hEVerbBV5fpTusfqFro

    Source code(tar.gz)
    Source code(zip)
  • 0.4(May 13, 2018)

    Haircuts are just karma normalization events.

    • Text annotations
    • Drag and drop support
    • Better spacebar navigation
    • More granular progress measurement
    • Remove dependency on requests
    • Redesign settings dialog
    • In-built internet searching
    • Miscellaneous UI Improvements
    • Bugfixes
    • Chinese (simplified) translation by jaccsr
    Source code(tar.gz)
    Source code(zip)
  • 0.3.1(Mar 22, 2018)

    I'm a nihilist. That means I'm pathologically lazy but still morally defensible.

    • Application icon and .desktop file
    • Distraction free mode
    • Internationalization support
    • Context menus for reading views
    • UI Improvements
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 0.2(Mar 16, 2018)

    Everything I fix today is to fix everything I fixed yesterday.

    • Preliminary pdf support
    • Ludicrous speed™ caching of image files in comics
    • Included icon theme
    • GUI improvements
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 0.1(Mar 10, 2018)

    There's still plenty in the TODO (not to mention the TODOs I've left scattered in the code), but I believe it's about time for a first release.

    Source code(tar.gz)
    Source code(zip)
Script For Importing Image sequences into scrap mechanic via blueprints

To use dowload and extract "video makes.zip" Python has to be installed https://www.python.org/ (may not work on version lower than 3.9) Has to be run

2 Oct 30, 2021
A utility for quickly cropping large collections of images.

Crop Tool A utility for quickly cropping large collections of images. Inspired by Derrick Schultz's dataset-tools. Setup It's suggested that you use A

dusk (they/them) 6 Nov 14, 2021
Magic-Square - Creates a magic square by randomly generating a list until the list happens to be a magic square

Magic-Square Creates a magic square by randomly generating a list until the list happens to be a magic square. Done as simply as possible... Frequentl

Nick 2 Jan 01, 2022
python binding for libvips using cffi

README PyPI package: https://pypi.python.org/pypi/pyvips conda package: https://anaconda.org/conda-forge/pyvips We have formatted docs online here: ht

libvips 467 Dec 30, 2022
This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specialized data structure called VP-Tree which makes searching an image on a dataset of 100Ks almost instantanious

Offline Reverse Image Search Overview This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specia

53 Nov 15, 2022
MyPaint is a simple drawing and painting program that works well with Wacom-style graphics tablets.

MyPaint A fast and dead-simple painting app for artists Features Infinite canvas Extremely configurable brushes Distraction-free fullscreen mode Exten

MyPaint 2.3k Jan 01, 2023
Tool that takes your photo and generates a pixelated color by number photo.

Color by number Tool that takes your photo and generates a pixelated color by number photo. Requirements You need to have python installed on your com

1 Dec 18, 2021
A simple python script to reveal the contents of a proof of vaccination QR code.

vaxidecoder A simple python script to reveal the contents of a proof of vaccination QR code. It takes a QR code image as input, and returns JSon data.

Hafidh 2 Feb 28, 2022
Django helper application to easily and non-destructively crop arbitrarily large images in admin and frontend.

django-image-cropping django-image-cropping is an app for cropping uploaded images via Django's admin backend using Jcrop. Screenshot: django-image-cr

Jonas und der Wolf GmbH 546 Jan 03, 2023
ModernGL is a python wrapper over OpenGL 3.3+ core

ModernGL is a python wrapper over OpenGL 3.3+ core that simplifies the creation of simple graphics applications like scientific simulations, games or user interface

ModernGL 1.4k Jan 01, 2023
Python framework for creating and scaling up production of vector graphics assets.

Board Game Factory Contributors are welcome here! See the end of readme. This is a vector-graphics framework intended for creating and scaling up prod

Adam Volný 5 Jul 13, 2022
image-processing exercises.

image_processing Assignment 21 Checkered Board Create a chess table using numpy and opencv. view: Color Correction Reverse black and white colors with

Benyamin Zojaji 25 Dec 15, 2022
SimpleITK is an image analysis toolkit with a large number of components supporting general filtering operations, image segmentation and registration

SimpleITK is an image analysis toolkit with a large number of components supporting general filtering operations, image segmentation and registration

672 Jan 05, 2023
Python library for ascii graphics

Python library for ascii graphics

Anton 6 Oct 20, 2021
Image comparison slider component for Streamlit

Streamlit Image Comparison Component A simple Streamlit Component to compare images with a slider in Streamlit apps using Knightlab's JuxtaposeJS. It

fatih 109 Dec 23, 2022
A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos.

font2png A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos. To use from command line it expects python3 to be at /

Rich Elmes 3 Dec 22, 2021
Convert any binary data to a PNG image file and vice versa.

What is PngBin? The name PngBin comes from an image format file extension PNG (Portable Network Graphics) and the word Binary. An image produced by Pn

Nathan Young 87 Dec 22, 2022
Program for analyzing shadows from Cassini images

Moons: An Analysis Module for Vicar Files General This packages/program was created for my bachelor's thesis for the Astronomy department at Universit

Joni 1 Jul 16, 2021
A Toolbox for Image Feature Matching and Evaluations

This is a toolbox repository to help evaluate various methods that perform image matching from a pair of images.

Qunjie Zhou 342 Dec 29, 2022
Bot by image recognition simulating (random) human clicks

bbbot22 bot por reconhecimento de imagem simulando cliques humanos (aleatórios) inb4: sim, esse é basicamente o mesmo bot de 2021 porque a Globo não t

Yuri 2 Apr 05, 2022