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)
Generate different types of random avatars.

avatar-generator Generate different types of random avatars. Requirements Python3 pytorch=1.6 cv2=3.4 tqdm 1. Github-like avatars python generate_gi

Ming 11 Apr 02, 2022
reversable image censoring tool

StupidCensor a REVERSABLE image censoring tool to reversably mosiac censor jpeg files to temporarily remove image details not allowed on most websites

2 Jan 28, 2022
Fast Image Retrieval (FIRe) is an open source image retrieval project

Fast Image Retrieval (FIRe) is an open source image retrieval project release by Center of Image and Signal Processing Lab (CISiP Lab), Universiti Malaya. This project implements most of the major bi

CISiP Lab 39 Nov 25, 2022
A python program to generate ANSI art from images and videos

ANSI Art Generator A python program that creates ASCII art (with true color support if enabled) from images and videos Dependencies The program runs u

Pratyush Kumar 12 Nov 08, 2022
Glyphtracer is an app for converting images of letters to a font

Glyphtracer takes an image that contains pictures of several letters. It recognizes all them and lets the user tag each letter to a Unicode code point. It then converts the images to vector form and

Jussi Pakkanen 38 Dec 24, 2022
A tool for hiding data inside of images

Stegenography-tool a tool for hiding data inside of images Quick test: do python steg-encode.py test/message.txt test/covid19.png to generate the test

luke 2 Nov 02, 2021
Graphical tool to make photo collage posters

PhotoCollage Graphical tool to make photo collage posters PhotoCollage allows you to create photo collage posters. It assembles the input photographs

Adrien Vergé 350 Jan 02, 2023
PSD (Photoshop, Krita, Gimp...) -> Godot.

limage v0.2.2 Features Getting Started Tags Settings Todo Customizer Changes Solutions WARNING: Requires Python to be installed PSD (Photoshop, Krita,

21 Nov 10, 2022
A Python Script to convert Normal PNG Image to Apple iDOT PNG Image.

idot-png-encoder A Python Script to convert Normal PNG Image to Apple iDOT PNG Image (Multi-threaded Decoding PNG). Usage idotpngencoder.py -i inputf

Lrdcq 2 Feb 17, 2022
Find target hash collisions for Apple's NeuralHash perceptual hash function.💣

neural-hash-collider Find target hash collisions for Apple's NeuralHash perceptual hash function. For example, starting from a picture of this cat, we

Anish Athalye 630 Jan 01, 2023
🎶😤 Generate an image indicating what you are listening to 😳

I'm Listening to This (song that I've sent you an image about detailing its metadata in a nifty way) Few lines describing your project. 📝 Table of Co

Connor B - Viibrant 4 Nov 03, 2021
Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom

Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom. Also, rasterize shapefile vectors as corresponding label image.

Gounari Olympia 2 Nov 22, 2021
Herramienta Para Snipear Nitros Y Participar En Sorteos Automaticamente

Crips Nitro Sniper Discord Nitro Sniper Y Auto Participar En Sorteos ⚠️ Es Bastante Rapido Y Efectivo Hecho En Python Como Usar ( Python ) : python -m

1 Oct 27, 2021
This is an app that allows users to upload photos and display and store the photos in a file until the user deletes them.

Qt Photo App This is an app that allows users to upload photos and display and store the photos in a file until the user deletes them. Setup python3 -

Kathy Yang 5 Jan 22, 2022
EmbedToolV2 - 2.0 Version of DraKenCodeZ/ImageEmbedTool

EmbedToolV2 - 2.0 Version of DraKenCodeZ/ImageEmbedTool

DraKenCodeZ 1 Dec 07, 2021
Python class that generates pixel art from images

Python class that generates pixel art from images

Richard Nagyfi 1.4k Dec 29, 2022
Hello, this project is an example of how to generate a QR Code using python 😁

Hello, this project is an example of how to generate a QR Code using python 😁

Davi Antonaji 2 Oct 12, 2021
A 3D structural engineering finite element library for Python.

An easy to use elastic 3D structural engineering finite element analysis library for Python.

Craig 220 Dec 27, 2022
Tools for making image cutouts from sets of TESS full frame images

Cutout tools for astronomical images Astrocut provides tools for making cutouts from sets of astronomical images with shared footprints. It is under a

Space Telescope Science Institute 20 Dec 16, 2022
Next-generation of the non-destructive, node-based 2D image graphics editor

Non-destructive, node-based 2D image graphics editor written in Python, focused on simplicity, speed, elegance, and usability

Gimel Studio 238 Dec 30, 2022