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)
Gaphor is the simple modeling tool

Gaphor Gaphor is a UML and SysML modeling application written in Python. It is designed to be easy to use, while still being powerful. Gaphor implemen

Gaphor 1.3k Dec 31, 2022
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
将位图转为彩色矢量 svg 图片

一个将位图描摹为彩色矢量 svg 图片的程序,是一个命令行工具,使用 Python 脚本实现,运行环境 Python3.8+。 ✨ 效果 以一个字帖图片为例,这是 png 格式的位图(370KB): 这是颜

Haujet Zhao 104 Dec 30, 2022
DP2 graph edit codes.

必要なソフト・パッケージ Python3 Numpy JSON Matplotlib 動作確認環境 MacBook Air M1 Python 3.8.2 (arm64) Numpy 1.22.0 Matplotlib 3.5.1 JSON 2.0.9 使い方 draw_time_histgram(

1 Feb 19, 2022
An async Python library to automate solving ReCAPTCHA v2 by audio using Playwright.

Playwright nonoCAPTCHA An async Python library to automate solving ReCAPTCHA v2 by audio using Playwright. Disclaimer This project is for educational

Michael Mooney 69 Dec 28, 2022
Fixes 500+ mislabeled MURA images

In this repository, new csv files are provided that fixes 500+ mislabeled MURA x-rays for all categories. The mislabeled x-rays mainly had hardware in them. This project only fixes the false negative

Pieter Zeilstra 4 May 18, 2022
Extract the temperature data of each wire from the thermal imager raw data.

Wire-Tempurature-Detection Extract the temperature data of each wire from the thermal imager raw data. The motivation of this computer vision project

JohanAckerman 1 Nov 03, 2021
Short piece of code to create a rainbow gif of gradual contours from two shapefiles

rainbow-elevation-gif Short piece of code to create a rainbow gif of gradual con

Jess Roberts 6 Jan 17, 2022
Image Processing - Make noise images clean

影像處理-影像降躁化(去躁化) (Image Processing - Make Noise Images Clean) 得力於電腦效能的大幅提升以及GPU的平行運算架構,讓我們能夠更快速且有效地訓練AI,並將AI技術應用於不同領域。本篇將帶給大家的是 「將深度學習應用於影像處理中的影像降躁化 」,

2 Aug 04, 2022
Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures.

WADs Out For [The] Ladies Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures. Development mostly focused on L

5 Apr 09, 2022
Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in Python

AICSImageIO Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in Pure Python Features Supports reading metadata and imaging

Allen Institute for Cell Science - Modeling 137 Dec 14, 2022
NFT collection generator. Generates layered images

NFT collection generator Generates layered images, whole collections. Provides additional functionality. Repository includes three scripts generate.py

Gleb Gonchar 10 Nov 15, 2022
Deep Illuminator is a data augmentation tool designed for image relighting.

Deep Illuminator Deep Illuminator is a data augmentation tool designed for image relighting. It can be used to easily and efficiently genera

George Chogovadze 52 Nov 29, 2022
Generate meme GIFs in which an image you choose can be viewed by the user only after they wait a whole hour.

Generate meme GIFs in which an image you choose can be viewed by the user only after they wait a whole hour.

Feliks Maak 1 Jan 31, 2022
LSB Image Steganography Using Python

Steganography is the science that involves communicating secret data in an appropriate multimedia carrier, e.g., image, audio, and video files

Mahmut Can Gönül 2 Nov 04, 2021
Avatar Generator Python

This is a simple avatar generator project which uses your webcam to take pictures and saves five different types of your images into your device including the original image.

Faisal Ahmed 3 Jan 23, 2022
Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

1 Jan 16, 2022
FrostedGlass is a translucent frosted glass effect widget, that creates a context with the background behind it.

FrostedGlass FrostedGlass is a translucent frosted glass effect widget, that creates a context with the background behind it. The effect is drawn on t

Kivy Garden 24 Dec 10, 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 to create a Phunk image with a custom background

Create Phunk image Tool to create a Phunk image with a custom background Installation Clone the repo git clone https://github.com/albanow/etherscan_sa

Albano Pena Torres 6 Mar 31, 2022