{ "info": { "author": "Marcin Kasperski", "author_email": "Marcin.Kasperski@mekk.waw.pl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Utilities" ], "description": ".. -*- mode: rst; compile-command: \"rst2html README.txt README.html\" -*-\n\n===============================================================\nmekk.calibre\n===============================================================\n\nThis is a set of standalone scripts which I wrote to help\nmanaging my Calibre_ ebook-library.\n\n.. contents::\n :local:\n :depth: 2\n\n\nScript list\n===================================================\n\nThe following scripts are available:\n\n``calibre_guess_and_add_isbn``\n\n Checks books without ISBN (set in metadata) for ISBN-like string\n present in leading pages. If found, add it to the metadata (what\n makes it possible to download full metadata, covers, etc).\n\n``calibre_convert_docs_to_rtf``\n\n Convert any .doc to .rtf (unless already present) - using\n openoffice.\n\n``calibre_add_if_missing``\n\n Checks given directory tree for books not yet present in calibre,\n add them if found. Uses binary file comparison to check whether\n the file is identical (file name and metadata are not used, on\n purpose).\n\n``calibre_find_books_missing_in_database``\n\n Checks whether Calibre database directory contains some\n unregistered files and report them if found.\n\n``calibre_report_duplicates``\n\n Report duplicates, adding information of which of them are surely\n safe to merge (because duplicated books are identical or because\n formats do not overlap), and which require careful examination\n (because different files in the same format exist).\n\nScript details\n===================================================\n\ncalibre_guess_and_add_isbn\n--------------------------\n\nQueries Calibre for all books without ISBN, then tries to locate ISBN\ninside (via scanning a few leading pages) and updates Calibre book\nmetadata if ISBN is found.\n\nRun it without parameters::\n\n calibre_guess_and_add_isbn\n\nAny ISBN numbers found will be added to the book metadata (and the\nscript will report them). Books are scanned from the newest, so you\ncan abort (Ctrl-C) script once it handled new books.\n\nLater on ISBN can be used to grab the book metatada and/or book cover\ninside Calibre GUI. Just spawn Calibre and look for books with ISBN\nset and missing metadata, for example using query like::\n\n isbn:~[0-9] not publisher:~[a-z]\n\n(above means: isbn contains some digit, publisher does not contain any\nletter). Depending on your workflow, you can then either \n\n- grab metadata automaticaly (mark all those books, right click,\n pick Edit Metadata Information/Download Metadata)\n\n- review each book individually (mark those books, right click,\n pick Edit Metadata Information/Edit Metadata Individually, then\n click Fetch Metadata on every book successively and review whether\n it fits).\n\ncalibre_convert_docs_to_rtf\n----------------------------------\n\nQueries Calibre for all books which have only .doc format, then uses\nOpenOffice to convert them to .rtf and add this format as an\nalternative.\n\nOpenOffice (and pyuno libraries provided by it) are used in the\nprocess.\n\nRun it without parameters::\n\n calibre_convert_docs_to_rtf\n\nNote: from time to time the script happens to crash on the end of the\njob (while finishing). I haven't diagnosed the reasons (most likely\nthe problem is in the libraries I use), but the crash is harmless and\ndoes not influence the actual conversion process.\n\n\ncalibre_find_books_missing_in_database\n--------------------------------------\n\nReports the files present inside Calibre library directory but not\npresent in the database (and therefore not visible in the Calibre\ninterface).\n\nThe files are reported to standard output. To add them\nall to calibre, pipe output. For example::\n\n calibre_find_books_missing_in_database | xargs -d \"\\n\" calibredb add\n\n(but, better, review everything beforehand)\n\n.. note::\n\n The problematic scenario may happen for example if Calibre is used\n from two or more machines over synchronized or networked directory\n and, by mistake, two copies are run simultaneously. Or in case\n of some crashes.\n\n\ncalibre_add_if_missing\n-----------------------------------\n\nScans given directory and/or specified files, adds to calibre all\nbooks which are not yet present there.\n\nDuplicate checking is done solely according to the file content. The\nfile is skipped if identical file is already present in Calibre.\n \nI initially wrote this script to handle *I want to ensure everything\nis already imported and can be deleted* scenario, but over years I tend\nto use it for most batch ebook imports.\n\nExample::\n\n calibre_add_if_missing /home/jan/OldBooks\n\n(import any books below ``OldBooks`` which are not yet present, don't\ntouch this directory - which probably can be removed afterwards).\n\nOr maybe::\n\n calibre_add_if_missing --tag=\"programming,web-development\" \\\n --move=$HOME/ebooks-done ./freshly-bought/*.epub\n\n(add all ``.epub`` files from ``./freshly-bought``, tag them with\n``programming`` and ``web-development``, move all succesfully imported\nfiles to ``~/ebooks-done/``).\n\nFor all options, run::\n\n calibre_add_if_missing --help\n\n\ncalibre_report_duplicates\n-------------------------\n\nAnalyzes calibre database looking for likely duplicates, and reports\nthem, adding info of which of those are surely identical, and which\nrequire examination.\n\nDo *not* perform any changes, just prints report (as text, or html, or\njavascript-enabled html from which reviewed items can be removed by\nclicking).\n\nExample::\n\n calibre_report_duplicates -f txt\n\n(text output to the console)::\n\n calibre_report_duplicates -f html -o /tmp/report.html\n\n(HTML output redirected to file)::\n\n calibre_report_duplicates -f js -o /tmp/report.html\n\n(also HTML, but with buttons to hide rows, handy for review).\n\nSee also::\n\n calibre_report_duplicates --help\n\n\nInstallation and configuration\n===============================\n\nPrerequisities\n--------------\n\nCalibre must be installed, properly configured and has some database\n(otherwise it does not make sense to run those scripts). The::\n\n calibredb\n\ncommand must be in ``PATH`` (or ``calibredb`` variable inside ``.ini``\nfile must be properly set, see below).\n\nTools providing commands::\n\n pdftotext\n catdoc \n djvutxt\n archmage\n\nshould be installed and present in ``PATH`` (or properly configured in\n``.ini``, or disabled in ``.ini``, see below). On Ubuntu Linux or\nDebian Linux those can be installed from standard repositories, just\ninstall the following packages::\n\n poppler-utils \n catdoc\n djvulibre-bin\n archmage\n\nPython 2.6 or 2.7 is required (scripts are using some features\nintroduced in 2.6 - in particular tempfile extensions, subprocess and\nnamedtuple). Also, lxml library must be installed. On Debian or\nUbuntu just install the following packages::\n\n python2.7\n python-lxml\n\nFor ``calibre_convert_docs_to_rtf`` to work, ootools_ library must be\ninstalled. Simplest method to install it::\n\n easy_install ootools\n\n(on Ubuntu `sudo easy_install ootools`).\n\nI develop and use those scripts on Ubuntu Linux. They should work on\nWindows or Mac if necessary tools are installed, but I've never tried\nit.\n\nActual installation\n--------------------\n\nSimple::\n\n sudo pip install mekk.calibre\n\nor::\n\n pip install --user mekk.calibre\n\nshould do (the latter requires adding ``~/.local/bin`` to\n``PATH``). In case you don't want to mess with your system\nor user directories, consider `using virtualenv`_.\n\n.. _using virtualenv: http://blog.mekk.waw.pl/archives/6-Python-VirtualEnv.html\n\nConfiguration\n--------------\n\nThe ``~/.calibre-utils`` file can be used to configure some program\nsettings. The file is created, if missing, whenever any of the\nscripts is run, and can be customized.\n\nHere is the default content::\n\n [commands]\n catdoc = catdoc\n archmage = archmage\n djvutxt = djvutxt\n calibredb = calibredb\n pdftotext = pdftotext\n \n [isbn-search]\n guess_lead_lines = 10000\n guess_lead_pages = 10\n\nThe commands section defines location of the external tools being\nused. In case the commands are present in ``PATH``, bare names can be\nused. Otherwise full path can be specified. Finally, if some tool is\nmissing, it can be defined as empty string.\n\nThe isbn-search section specifies how many leading pages (in\npage-based document formats like PDF or DJVU) or lines (in the free\nformats like TXT or CHM) are scanned looking for ISBN-like strings.\n\nFor example, the file can be changed so::\n\n [commands]\n catdoc = /usr/local/bin/catdoc\n archmage = \n djvutxt = \n calibredb = /opt/calibre/calibredb\n pdftotext = pdftotext\n \n [isbn-search]\n guess_lead_lines = 12000\n guess_lead_pages = 15\n\nIn such a case ``catdoc`` will be used from ``/usr/local/bin``,\ncalibredb will be expected in ``/opt/calibre``, ``pdftotext`` will be\nsought in ``PATH``, and ``archmage`` and ``djvutxt`` will be treat as\nmissing (so the isbn guessing script won't be able to scan CHM and\nDJVU files for ISBN and will ignore them).\n\nHistory\n====================\n\n(only major changes described)\n\n1.4.1\n-----------\n\n``calibre_add_if_missing``: added ``--force-language`` (to set book\nlanguage attribute).\n\n``calibre_add_if_missing`` crashed in case it was to move the file out\n(``--move`` option was used), but identically named file already\nexisted in the target directory. After the fix, file is moved to some\nsubdirectory of target instead.\n\n\n1.4.0\n-----------\n\n``calibre_report_duplicates`` enhancements:\n\n- output format is chosen by ``--format=txt`` or ``--format=html`` (instead\n of ``--html``)\n\n- added javascript-enabled output (``--format=js``) which supports clicking-out\n report items\n\n- using SimHash instead of difflib to look for similar titles. MUCH faster,\n provides a bit different but sensible results\n\n- reporting similar authors\n\n- new option ``--cache`` (use cached manifest to speed up reruns on large libraries)\n\n- new option ``--output`` (name output file)\n\n\n1.3.2\n------------\n\nFixed errors:\n\n- ``calibre_guess_and_add_isbn`` crashed with Unicode decode error\n while saving isbn to book with non-ascii character in title (wrong\n diagnostic print),\n\n- as since calibre 1.0 ``calibredb catalog --sort-by=id`` crashes\n (and, therefore scripts internally using this command crash too), we\n use sort by timestamp instead.\n\n1.3.1\n------\n\n``calibre_add_if_missing`` fixes:\n\n- even runs executed without ``--cache`` preserve cached metadata for\n possible next run,\n\n- runs with ``--cache`` ignore cached data if they are more than 24 hours old,\n\n- in case file found in calibre catalog does not exist (what can happen if\n it was renamed or deleted while we run, or if cache is in use and some\n books were removed since it was created), ``calibre_add_if_missing`` just warns,\n but continues it's work (instead of exiting with an error).\n\n1.3.0\n---------------\n\nPython3 compatibility work, scripts should be runnable under Python3\n(note: daily I still use them under 2.7, so 3 is less tested).\n\n``calibre_add_if_missing`` performs some comparison of epub internals\nin case possible duplicate of similar size exists. In particular, \nit is able to ignore ``calibre_bookmarks`` (so duplicate epub is not\nadded due to this file being added or modified by viewer).\n\n``calibre_add_if_missing`` has ``--cache`` option (reuse cached\ncatalog from previous run to speed up processing on large libraries).\n\n``calibre_add_if_missing`` has ``--dry-run`` option.\n\n1.2.4\n-----------------\n\n``calibre_add_if_missing`` has ``--move`` option (move succesfully\nadded files to another directory - likely something trash-like).\n\n``calibre_add_if_missing`` has ``--title-from-name`` option (force\nusing filename as title instead of processing metadata).\n\n``calibre_add_if_missing`` has ``--tag`` and ``--author`` options (force\ngiven tags and/or author instead of processing metadata).\n\n``calibre_add_if_missing`` copies filename as title for ``.doc``,\n``.docx``, ``.rtf`` and ``.txt`` files. Those extremely rarely have\nsensible metadata.\n\n1.2.3\n----------------\n\n``calibre_find_books_missing_in_database`` no longer reports book\nsubdirectories and such (reasoning: I use book subfolders to store\nthings like source code added to the book or book sources, at the same\ntime it is not the place where calibre would put the book by itself).\n\nFixed two more \"UnicodeEncodeError\" bugs (reported for books without\nfiles and with unicode character in names)\n\n1.2.2\n----------------\n\n``calibre_guess_and_add_isbn`` catches various errors, reports them, and continues \nto work. For any errors information mentions problematic book name.\n\nCtrl-C aborts ISBN guessing and properly cleans up.\n\n#5 - fix for ISBN's containing X letter. \n\n1.2.0\n-----------------\n\n``calibre_add_if_missing`` disables Calibre own duplicate checking\n(which is title based, so too simplistic, and occasionally rejects\nfine books) and prints detailed info about found actual duplicates (if\npresent).\n\nSome ``calibre_report_duplicates`` improvements:\n\n- pruning some redundant matches (if a is similar to b, a is similar\n to c, and b is similar to c, we don't report the latter),\n\n- books which have same/similar author and title are not reported as\n duplicates if they have the same series and different series\n index (so different volumes of the same book are no longer\n reported as possible duplicates).\n\n``calibre_guess_and_add_isbn`` fixes:\n\n- #3 - avoiding crash on latin-1 encoded chm files (during ISBN detection)\n\n- handling some Unicode charactes in ISBN text (hard space, long dash, \u2026)\n\n- verifying ISBN checksum before using it.\n\n1.1.1\n-----------------\n\nAdded ``calibre_report_duplicates``.\n\n``calibre_add_if_missing`` can be given individual files (initially\nonly complete directories could be processed).\n\n\n1.0.4\n------------------\n\nFirst serious release. Working\n``calibre_find_books_missing_in_database``,\n``calibre_guess_and_add_isbn``, ``calibre_convert_docs_to_rtf``,\n``calibre_add_if_missing``.\n\n\nSources, bug reports\n====================\n\nThe project is `hosted here`_.\n\n.. _hosted here: http://bitbucket.org/Mekk/calibre_utils\n.. _Calibre: http://calibre-ebook.com/\n.. _ootools: http://pypi.python.org/pypi/ootools/0.1dev\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://mekk.waw.pl/", "keywords": "org", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "mekk.calibre", "package_url": "https://pypi.org/project/mekk.calibre/", "platform": "", "project_url": "https://pypi.org/project/mekk.calibre/", "project_urls": { "Homepage": "http://mekk.waw.pl/" }, "release_url": "https://pypi.org/project/mekk.calibre/1.5.0/", "requires_dist": null, "requires_python": "", "summary": "Calibre helper scripts (ISBN guessing, RTF to DOC conversion,hanging books detection, ...).", "version": "1.5.0" }, "last_serial": 2950323, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "a048a6b8d18b32a41b617a4b8ca7b191", "sha256": "665e4abf0421a2af01e659f12bd9a109465ce9c849cf4446085de14872f8fe92" }, "downloads": -1, "filename": "mekk.calibre-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a048a6b8d18b32a41b617a4b8ca7b191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13873, "upload_time": "2010-06-08T00:13:55", "url": "https://files.pythonhosted.org/packages/30/c9/d00f2c826aa9fd2914937575ca9197f1763244ad8120666e21902ec14821/mekk.calibre-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6fe6fa8fa72e6a32c3dd59bb90090a23", "sha256": "72188747c8601deac8393522bcfa8910274927a2e875414361b7bae75b5a283e" }, "downloads": -1, "filename": "mekk.calibre-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6fe6fa8fa72e6a32c3dd59bb90090a23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13872, "upload_time": "2010-06-08T00:26:17", "url": "https://files.pythonhosted.org/packages/30/59/3fddb10a35abb688a22556556cfcc3f1f7d56c5843a562f303ddcd60c0a2/mekk.calibre-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "35a1bb57d0e046cea3d19a70e1e72909", "sha256": "09918f13ccd7a3e54631685c3b89b5e349e0833f3866b035f4ac853f58dff335" }, "downloads": -1, "filename": "mekk.calibre-1.0.2.tar.gz", "has_sig": false, "md5_digest": "35a1bb57d0e046cea3d19a70e1e72909", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13773, "upload_time": "2010-06-08T01:33:44", "url": "https://files.pythonhosted.org/packages/85/66/60fb8a648bbd2404412f0e3d57a6e6785f80b60aa9ac1e878bf21a299aee/mekk.calibre-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "4077431734d25b7e73480627b172da90", "sha256": "852d5e3bd75d18521446c128665cbbf9c20f5f5e0f262795ab461264126d4fcc" }, "downloads": -1, "filename": "mekk.calibre-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4077431734d25b7e73480627b172da90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14046, "upload_time": "2010-06-08T01:53:31", "url": "https://files.pythonhosted.org/packages/ce/f5/81a5d35b70efcca8fd40162d0f707114f694f3eaac3f5f33e434a36c9c8a/mekk.calibre-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "f78086e5d9c4b5ee373dac6c89699a21", "sha256": "13518b2b548bb1b82ecb5efc3f5cf6d19a4a81d5059514cead9babf26e300ee3" }, "downloads": -1, "filename": "mekk.calibre-1.0.4.tar.gz", "has_sig": false, "md5_digest": "f78086e5d9c4b5ee373dac6c89699a21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14048, "upload_time": "2010-06-08T02:27:56", "url": "https://files.pythonhosted.org/packages/b4/90/db1c5a15a74e229d5f250bf5d0c3b6faa8d3a83f27e12d73608a80e594bc/mekk.calibre-1.0.4.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1b319b819d2de20543d936300c5f99a5", "sha256": "5f9e2f451f40eea70eb3dec6618142b9b42fc2e1767761cb476c2fc3148fc4e9" }, "downloads": -1, "filename": "mekk.calibre-1.1.0.tar.gz", "has_sig": false, "md5_digest": "1b319b819d2de20543d936300c5f99a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18826, "upload_time": "2010-07-02T01:52:37", "url": "https://files.pythonhosted.org/packages/2f/5b/b179de99d5dc29d15fa33f2094721cf62d714f2db2efbd9994bfe137b891/mekk.calibre-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "b272e3b7faaa04b849be820b1cf44da4", "sha256": "8a2beeea12b361be42963473504c7c26f78935b677b6410b8d2fd8d8e19644f9" }, "downloads": -1, "filename": "mekk.calibre-1.1.1.tar.gz", "has_sig": false, "md5_digest": "b272e3b7faaa04b849be820b1cf44da4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16028, "upload_time": "2010-07-02T10:15:49", "url": "https://files.pythonhosted.org/packages/53/d4/92b6769815bf5e6a3d8326d4e66e51064b1a077ed00771f690dc18c5a5c9/mekk.calibre-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "b5e14631f0916265a1a526ad11cab398", "sha256": "f4494e2f4872aa49ded4a3a492e49629481246199aba1bce011b51a09c37c126" }, "downloads": -1, "filename": "mekk.calibre-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b5e14631f0916265a1a526ad11cab398", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22778, "upload_time": "2010-10-28T21:00:38", "url": "https://files.pythonhosted.org/packages/f1/18/bb960e696eb6b30511caf1c39033968ddfc468c37c06f980318d21241ee0/mekk.calibre-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "15d82e816c36ffd7262e4ee5aa21018c", "sha256": "e14f96a6faa9c5915f4d56a2f953f6e215b80324092f52548798cdf05735e879" }, "downloads": -1, "filename": "mekk.calibre-1.2.1.tar.gz", "has_sig": false, "md5_digest": "15d82e816c36ffd7262e4ee5aa21018c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19253, "upload_time": "2011-01-15T12:35:45", "url": "https://files.pythonhosted.org/packages/ae/a7/25c9bb5b324e6070e3ba712ae8f195a68b0dcd2a99a113a13950d134e3f1/mekk.calibre-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "5a1eb3bdc8114c0635717b184c686037", "sha256": "32a29247f4984d6ebac21ff4e3d8aa9f4e0b577e460222d348ddf31888f2ba42" }, "downloads": -1, "filename": "mekk.calibre-1.2.2.tar.gz", "has_sig": false, "md5_digest": "5a1eb3bdc8114c0635717b184c686037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19442, "upload_time": "2011-01-15T21:55:32", "url": "https://files.pythonhosted.org/packages/7b/5d/b69c534bffa02b4c2351875ab08226272e90ff9af6c78cef54e70564bd0d/mekk.calibre-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "591ad0c0fc940759ea7483f6995ac955", "sha256": "b1ec399321bc144610037e93e9259014014ffd8778e694c3f980d5c7cbd5dce8" }, "downloads": -1, "filename": "mekk.calibre-1.2.3.tar.gz", "has_sig": false, "md5_digest": "591ad0c0fc940759ea7483f6995ac955", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22294, "upload_time": "2012-01-17T00:23:15", "url": "https://files.pythonhosted.org/packages/25/26/814a8fdd5111e3f3a82ba04aa9e5a8e8f144f7b814a8cd8d61e45980fb72/mekk.calibre-1.2.3.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "f1fe9825de1eba01ec30ce8854733299", "sha256": "7aea0fe3b4e0d7d29f369d3e1da7c9bccb9d20b30ebf9d72f934d8d86c78c544" }, "downloads": -1, "filename": "mekk.calibre-1.3.0.tar.gz", "has_sig": false, "md5_digest": "f1fe9825de1eba01ec30ce8854733299", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27828, "upload_time": "2014-01-09T14:12:22", "url": "https://files.pythonhosted.org/packages/15/eb/be8140cde2712f6471e31a1d6be161c6ef2b222028dc24d408c9fe3c34ed/mekk.calibre-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "ccdc6649bb0445b62a712e05e93a5c37", "sha256": "28a8784692ff2ca1756f6c837c5b2d26df087db47344cf7abe0a98dc8c606f6e" }, "downloads": -1, "filename": "mekk.calibre-1.3.1.tar.gz", "has_sig": false, "md5_digest": "ccdc6649bb0445b62a712e05e93a5c37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25231, "upload_time": "2014-01-25T00:05:01", "url": "https://files.pythonhosted.org/packages/59/a2/5d8778755b53019c15728554324bcf32ca3b561992124d833e13881b81fa/mekk.calibre-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "fdd4a72f2ba4c1df2d57f309437979cf", "sha256": "3f512e24321e84b74c8ee12f822396e1a2208c6d8cc6ad95c651b428484db744" }, "downloads": -1, "filename": "mekk.calibre-1.3.2.tar.gz", "has_sig": false, "md5_digest": "fdd4a72f2ba4c1df2d57f309437979cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28181, "upload_time": "2014-02-07T10:53:08", "url": "https://files.pythonhosted.org/packages/08/82/13ad016884335a12290b04f5b816ca0d250e45cf5511c2075bacd969333b/mekk.calibre-1.3.2.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "d18d364715d4318830af8072e8cfae73", "sha256": "38798db16d89bcec296cc5362239d486b2c46a91ded8f52fc8fd64aa6600edc7" }, "downloads": -1, "filename": "mekk.calibre-1.4.0.tar.gz", "has_sig": false, "md5_digest": "d18d364715d4318830af8072e8cfae73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26886, "upload_time": "2014-04-14T07:33:10", "url": "https://files.pythonhosted.org/packages/a8/dc/0b112402a359c776ca229eeb66d6fdf6d54b15bc284d286bd0c7f4f03c35/mekk.calibre-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "04219cfc92521dff0d566094b864ebcf", "sha256": "bee6a7198da7752eac560da594251f68d77ed63f711a4eab433c5185110e41d1" }, "downloads": -1, "filename": "mekk.calibre-1.4.1.tar.gz", "has_sig": false, "md5_digest": "04219cfc92521dff0d566094b864ebcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34422, "upload_time": "2016-03-29T22:35:11", "url": "https://files.pythonhosted.org/packages/bc/e0/e2a434299df5c7798cf79dd2287b615787807d3133472396cfbfd728c885/mekk.calibre-1.4.1.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "19a52ec721021ca3252be90fb19c0b38", "sha256": "24941efb964a791f13ce17b712d5fd866ffd641ce0be078b65e6a89fe26f127f" }, "downloads": -1, "filename": "mekk.calibre-1.5.0.tar.gz", "has_sig": false, "md5_digest": "19a52ec721021ca3252be90fb19c0b38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34815, "upload_time": "2017-06-14T18:38:48", "url": "https://files.pythonhosted.org/packages/40/13/16efebbec3efeadbd29f04dd54a9544d1b58508bd1611f5900e48c6b1cc8/mekk.calibre-1.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "19a52ec721021ca3252be90fb19c0b38", "sha256": "24941efb964a791f13ce17b712d5fd866ffd641ce0be078b65e6a89fe26f127f" }, "downloads": -1, "filename": "mekk.calibre-1.5.0.tar.gz", "has_sig": false, "md5_digest": "19a52ec721021ca3252be90fb19c0b38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34815, "upload_time": "2017-06-14T18:38:48", "url": "https://files.pythonhosted.org/packages/40/13/16efebbec3efeadbd29f04dd54a9544d1b58508bd1611f5900e48c6b1cc8/mekk.calibre-1.5.0.tar.gz" } ] }