Compare commits
100 Commits
legacy
...
85ab034a36
| Author | SHA1 | Date | |
|---|---|---|---|
| 85ab034a36 | |||
| 4b02641481 | |||
| 51e3bfa441 | |||
| c74174fc8f | |||
| 54c24b18b1 | |||
| 7281f9bbbb | |||
| 002ff724ea | |||
| cd1482e4a1 | |||
| 028571e9c1 | |||
| b284f328b3 | |||
| 01fd964e0d | |||
| c257d6ceeb | |||
| 28499868d2 | |||
| 5f13fd7d7a | |||
| a1a17158bb | |||
| 10e7e87031 | |||
| 3141add678 | |||
| dadeebe8a1 | |||
| 6c6f01781a | |||
| 07690f9c94 | |||
| 28a99b0470 | |||
| 25740ea1dc | |||
| 33a8f99d48 | |||
| a87da6b27c | |||
| 577b93b534 | |||
| f611dce4e1 | |||
| d003cecc9c | |||
| fe0b66f1ef | |||
| 5d9c90e4ad | |||
| b22fbd5864 | |||
| 22d7e62357 | |||
| bb5928a9f6 | |||
| 35f01b1e9f | |||
| efab8b4152 | |||
| 287dcb3dc6 | |||
| 50a6847762 | |||
| 95ea6b023c | |||
| 8e08319775 | |||
| 63f2d6fc11 | |||
| 4eac6820c5 | |||
| 9cc2408868 | |||
| 15e3aaeabf | |||
| 43a40014c1 | |||
| ad1703cd90 | |||
| 3e2634bc57 | |||
| 3c6c9a552a | |||
| 54b6a377bf | |||
| 22c24fbaf7 | |||
| 62ab67ecc5 | |||
| 7417b9e98e | |||
| 1cf1390567 | |||
| 5db02183a5 | |||
| 3590f90751 | |||
| 2b5b53ada1 | |||
| 7536e2c60a | |||
| 3b0cb80407 | |||
| 9769dfdb76 | |||
| dbb01acd3f | |||
| 9b7f15122d | |||
| 1cd6ad5b84 | |||
| 58c0c1ecdc | |||
| 20501fcf54 | |||
| 5e83363fe7 | |||
| 313db80101 | |||
| 3f797b0bf8 | |||
| 8d6cb75b8e | |||
| 71162da225 | |||
| 6b1fdb90e9 | |||
| c1dd854f62 | |||
| 2b47d9b869 | |||
| 53c3a444e0 | |||
| b54aa1849b | |||
| 37f06726b4 | |||
| e93b7291b8 | |||
| ca7fdf15e8 | |||
| 7b5c76f1d9 | |||
| f0f8d27d19 | |||
| b493b66ea8 | |||
| 83b9d944cf | |||
| 5ccdd8ee6f | |||
| 8013eec7d2 | |||
| 14f654251d | |||
| 8a24e30bde | |||
| bcacb75229 | |||
| d04a84c72d | |||
| e69e2300e8 | |||
| 08c38bf63d | |||
| 52b293c459 | |||
| bdf059d11f | |||
| ccec14f3ea | |||
| 36c4e7e4f2 | |||
| b0964ca031 | |||
| efaccd8902 | |||
| 434df58b16 | |||
| 56c77ae9a4 | |||
| c46d29a5bb | |||
| 5e8c33f05a | |||
| fb920f58bc | |||
| 292d290723 | |||
| 0adcdaba8d |
6
.gitignore
vendored
@@ -1,2 +1,8 @@
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.coverage
|
||||
.tox
|
||||
tags
|
||||
MANIFEST
|
||||
.cache
|
||||
pycatalog.egg-info
|
||||
|
||||
212
README.rst
@@ -1,168 +1,75 @@
|
||||
pyGTKtalog 1.0
|
||||
==============
|
||||
pycatalog
|
||||
==========
|
||||
|
||||
pyGTKtalog is Linux/FreeBSD program for indexing CD/DVD or directories on
|
||||
filesystem. It is similar to `gtktalog`_ or `gwhere`_ . There is no coincidence
|
||||
in name of application, because it's meant to be replacement (in some way) for
|
||||
gtktalog, which seems to be dead project for years.
|
||||
Pycatalog is a commandline Linux/FreeBSD program for indexing CD, DVD, BR or
|
||||
directories on filesystem. It is similar to `gtktalog`_ or `gwhere`_. There is
|
||||
no coincidence in name of application, because it's meant to be replacement
|
||||
(in some way) for gtktalog, which seems to be dead project for years.
|
||||
|
||||
.. image:: /example/main.png
|
||||
:alt: pyGTKtalog main screen
|
||||
Note, that even if it share same code base with pyGTKtalog, which was meant to
|
||||
be desktop application, now pycatalog is pure console app, just for use with
|
||||
commandline. You can find last version of pyGTKtalog under ``pyGTKtalog``
|
||||
branch, although bear in mind, that it was written with `python 2.7`_ and
|
||||
pyGTK_, which both are dead now.
|
||||
|
||||
WARNING!
|
||||
========
|
||||
Current version is 3.0.
|
||||
|
||||
**This version is mostly outdated, full of bugs, and may eat your data!** First
|
||||
usable version (this is what you are looking at right now) was completed around
|
||||
2009 year, but implementation was done much earlier. During that time GTK2 was
|
||||
changed significantly several times, because of that couple of pyGTKtalog
|
||||
functionalities goes bad.
|
||||
Features
|
||||
--------
|
||||
|
||||
The reason for keeping this branch is for history and for GUI to the new engine
|
||||
which was rewritten couple of years ago and have only cli tool to manipulate
|
||||
DBs.
|
||||
* Scan for files in selected media
|
||||
* Support for grouping files depending on file name (expected patterns in file
|
||||
names)
|
||||
* Store selected EXIF tags
|
||||
* Add/edit description and notes
|
||||
* Fetch comments for images made in `gThumb`_
|
||||
* `Tagging files`_
|
||||
* And more :)
|
||||
|
||||
In other words - pyGTKtalog version on this branch is safe for **view only**
|
||||
your catalog database, while it may corrupt database or other files while trying
|
||||
to create/update your databases in any way.
|
||||
Requirements
|
||||
------------
|
||||
|
||||
You have been warned.
|
||||
pycatalog requires python and following libraries:
|
||||
|
||||
The rest of the README file:
|
||||
* `python 3.10`_ and up
|
||||
* `sqlalchemy 1.4`_
|
||||
* `exifread`_ for parse EXIF information
|
||||
* `mutagen`_ for extracting tags from audio files
|
||||
|
||||
FEATURES
|
||||
========
|
||||
|
||||
* scan for files in selected media
|
||||
* get/generate thumbnails from EXIF and other images
|
||||
* stores selected EXIF tags
|
||||
* add/edit description and notes
|
||||
* fetch comments for images made in `gThumb`_
|
||||
* add/remove unlimited images to any file or directory
|
||||
* `tagging files`_
|
||||
* and more :)
|
||||
|
||||
Couple of screens showing how it looks like:
|
||||
|
||||
.. image:: /example/tags_images.png
|
||||
:alt: Other tabs - tags and images
|
||||
|
||||
.. image:: /example/tags_selected.png
|
||||
:alt: Narrow down the files by tags
|
||||
|
||||
.. image:: /example/search.png
|
||||
:alt: Search window and image view
|
||||
|
||||
Also, in ``example`` directory you'll find a database ``example.sqlite`` to play
|
||||
with.
|
||||
|
||||
REQUIREMENTS
|
||||
============
|
||||
|
||||
pyGTKtalog is written in python with following dependencies:
|
||||
|
||||
* python 2.4 or higher
|
||||
* `pygtk 2.10`_ or higher
|
||||
* `pysqlite2`_ (unnecessary, if python 2.5 is used)
|
||||
|
||||
Optional modules:
|
||||
|
||||
* `PIL`_ for image manipulation
|
||||
|
||||
Additional pyGTKtalog uses `pygtkmvc`_ by Roberto Cavada and EXIF module by Gene
|
||||
Cash (slightly updatetd to EXIF 2.2 by me) which are included in sources.
|
||||
|
||||
pyGTKtalog extensively uses external programs in unix spirit, however there is
|
||||
small possibility of using it Windows (probably with limitations) and quite
|
||||
big possibility to run it on other sophisticated unix-like systems (i.e.
|
||||
Pycatalog extensively uses external programs in unix spirit, however there is
|
||||
small possibility of using it Windows (probably with limitations) and quite big
|
||||
possibility to run it on other sophisticated unix-like systems (i.e.
|
||||
BeOS/ZETA/Haiku, QNX or MacOSX).
|
||||
|
||||
INSTALLATION
|
||||
============
|
||||
Programs that are used:
|
||||
* ``midentify`` (provided by `mplayer`_ package)
|
||||
|
||||
For development process following programs are used:
|
||||
|
||||
* `nose`_
|
||||
* `coverage`_
|
||||
* `tox`_
|
||||
|
||||
Instalation
|
||||
-----------
|
||||
|
||||
You don't have to install it if you don't want to. You can just change current
|
||||
directory to pyGTKtalog and simply run:
|
||||
directory to pycatalog and simply run::
|
||||
|
||||
./pyGTKtalog
|
||||
$ paver run
|
||||
|
||||
That's it. Alternatively, if you like to put it in more system wide place, all
|
||||
you have to do is:
|
||||
|
||||
* put pyGTKtalog directory into your destination of choice (/usr/local/share,
|
||||
/opt or ~/ is typical bet)
|
||||
* copy pyGTKtalog shell script to /usr/bin, /usr/local/bin or in
|
||||
other place, where PATH variable is pointing or you feel like.
|
||||
* then modify pyGTKtalog line 6 to match right ``pygtktalog.py`` directory
|
||||
#. put pycatalog directory into your destination of choice (/usr/local/share,
|
||||
/opt or ~/ is typical bet)
|
||||
|
||||
Then, just run pyGTKtalog script.
|
||||
#. copy pycatalog shell script to /usr/bin, /usr/local/bin or in
|
||||
other place, where PATH variable is pointing or you feel like.
|
||||
|
||||
TODO
|
||||
====
|
||||
#. then modify pycatalog line 6 to match right ``pycatalog.py`` directory
|
||||
|
||||
PyGTKtalog is still under heavy development, however there is small chance to
|
||||
change structure of catalogs (and if it'll change, there will be transparent
|
||||
function to update DB schema).
|
||||
|
||||
For version 1.0 there are no features to be done, just bug fixes.
|
||||
|
||||
There are still minor aims for versions 1.x to be done:
|
||||
- consolidate popup-menus with edit menu
|
||||
- add popup menu for directly removing tag from tag cloud
|
||||
- implement advanced search
|
||||
|
||||
For version 2.0:
|
||||
- Export/Import
|
||||
- Icon grid in files view
|
||||
- command line support: query, adding media to collection etc
|
||||
- internationalization
|
||||
- export to XLS
|
||||
- user defined group of tags (represented by color in cloud tag)
|
||||
- hiding specified files - configurable, like dot prefixed, config files and
|
||||
manually selected
|
||||
- tests
|
||||
- warning about existing image in media directory
|
||||
|
||||
Removed:
|
||||
- filetypes handling (movies, images, archives, documents etc). Now it have
|
||||
common, unified external "plugin" system - simple text output from command
|
||||
line programs.
|
||||
- anime/movie
|
||||
- title
|
||||
- alt title
|
||||
- type (anime movie, movie, anime oav, anime tv series, tv series, etc)
|
||||
- cover/images
|
||||
- genre
|
||||
- lang
|
||||
- sub lang
|
||||
- release date (from - to)
|
||||
- anidb link/imdb link
|
||||
Maybe in future versions. Now text file descriptions/notes and tags have to
|
||||
be enough for good and fast information search.
|
||||
|
||||
NOTES
|
||||
=====
|
||||
|
||||
Catalog file is plain sqlite database (optionally compressed with bzip2). All
|
||||
images are stored in ``[CONFIG_PATH]/images`` directory, where ``[CONFIG_PATH]``
|
||||
is one of the following location:
|
||||
|
||||
- ``$XDG_CONFIG_HOME/pygtktalog``
|
||||
- ``$HOME/.pytgtktalog``
|
||||
|
||||
Names for images are generated sha512 hash from image file itself. There is
|
||||
small possibility for two identical hash for different image files. However, no
|
||||
images are overwritten. Thumbnail filename for each image is simply
|
||||
concatenation of image filename in images directory and ``_t`` string.
|
||||
|
||||
There is also converter from old database to new for internal use only. In
|
||||
public release there will be no other formats so it will be useless, and
|
||||
deleted. There are some issues with converting. All thumbnails will be lost. All
|
||||
images without big image will be lost. There are serious changes with
|
||||
application design, and I decided, that is better to keep media unpacked on
|
||||
disk, instead of pack it every time with save and unpack with open methods. New
|
||||
design prevent from deleting any file from media directory (placed in
|
||||
``[CONFIG_PATH]/images``). Functionality for exporting images and corresponding
|
||||
db file is planned.
|
||||
Then, just run pycatalog script.
|
||||
|
||||
LICENSE
|
||||
=======
|
||||
@@ -170,11 +77,16 @@ LICENSE
|
||||
This work is licensed under the terms of the GNU GPL, version 3. See the LICENCE
|
||||
file in top-level directory.
|
||||
|
||||
|
||||
.. _coverage: http://nedbatchelder.com/code/coverage/
|
||||
.. _exifread: https://github.com/ianare/exif-py
|
||||
.. _gthumb: http://gthumb.sourceforge.net
|
||||
.. _gtktalog: http://www.nongnu.org/gtktalog/
|
||||
.. _gwhere: http://www.gwhere.org/home.php3
|
||||
.. _PIL: http://www.pythonware.com/products/pil/index.htm
|
||||
.. _pygtk 2.10: http://www.pygtk.org
|
||||
.. _pysqlite2: http://pysqlite.org/
|
||||
.. _pygtkmvc: http://pygtkmvc.sourceforge.net
|
||||
.. _gThumb: http://gthumb.sourceforge.net
|
||||
.. _tagging files: http://en.wikipedia.org/wiki/Tag_%28metadata%29
|
||||
.. _mplayer: http://mplayerhq.hu
|
||||
.. _nose: http://code.google.com/p/python-nose/
|
||||
.. _python 3.10: http://www.python.org/
|
||||
.. _sqlalchemy 1.4: http://www.sqlalchemy.org
|
||||
.. _tagging files: http://en.wikipedia.org/wiki/tag_%28metadata%29
|
||||
.. _tox: https://testrun.org/tox
|
||||
.. _mutagen: https://github.com/quodlibet/mutagen
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
# remove ~, pyc, pyo files from current directory
|
||||
find . -name \*~ -exec rm '{}' ';'
|
||||
find . -name \*pyc -exec rm '{}' ';'
|
||||
find . -name \*pyo -exec rm '{}' ';'
|
||||
@@ -1,9 +0,0 @@
|
||||
Example
|
||||
=======
|
||||
|
||||
Here you can find example database and some screen shots made using this db.
|
||||
|
||||
All materials used to prepare sample database and the screen shots were
|
||||
downloaded from freely available resources from pages:
|
||||
http://www.hd-trailers.net/ and http://www.imdb.com - all rights goes to
|
||||
appropriate parties.
|
||||
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 43 KiB |