1
0
mirror of https://github.com/gryf/pygtktalog.git synced 2026-03-26 13:53:30 +01:00

8 Commits

219 changed files with 15774 additions and 2308 deletions

6
.gitignore vendored
View File

@@ -1,8 +1,2 @@
__pycache__/
*.py[cod]
.coverage
.tox
tags
MANIFEST
.cache
pycatalog.egg-info

View File

@@ -1,74 +1,168 @@
pycatalog
==========
pyGTKtalog 1.0
==============
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.
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.
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.
.. image:: /example/main.png
:alt: pyGTKtalog main screen
Current version is 3.0.
WARNING!
========
Features
--------
**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.
* 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 :)
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.
Requirements
------------
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.
pycatalog requires python and following libraries:
You have been warned.
* `python 3.10`_ and up
* `sqlalchemy 1.4`_
* `exifread`_ for parse EXIF information
The rest of the README file:
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.
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.
BeOS/ZETA/Haiku, QNX or MacOSX).
Programs that are used:
* ``midentify`` (provided by `mplayer`_ package)
For development process following programs are used:
* `nose`_
* `coverage`_
* `tox`_
Instalation
-----------
INSTALLATION
============
You don't have to install it if you don't want to. You can just change current
directory to pycatalog and simply run::
directory to pyGTKtalog and simply run:
$ paver run
./pyGTKtalog
That's it. Alternatively, if you like to put it in more system wide place, all
you have to do is:
#. put pycatalog directory into your destination of choice (/usr/local/share,
/opt or ~/ is typical bet)
* 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
#. copy pycatalog shell script to /usr/bin, /usr/local/bin or in
other place, where PATH variable is pointing or you feel like.
Then, just run pyGTKtalog script.
#. then modify pycatalog line 6 to match right ``pycatalog.py`` directory
TODO
====
Then, just run pycatalog script.
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.
LICENSE
=======
@@ -76,15 +170,11 @@ 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
.. _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
.. _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

5
cleanup.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
# remove ~, pyc, pyo files from current directory
find . -name \*~ -exec rm '{}' ';'
find . -name \*pyc -exec rm '{}' ';'
find . -name \*pyo -exec rm '{}' ';'

9
example/README.rst Normal file
View File

@@ -0,0 +1,9 @@
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.

BIN
example/example.sqlite Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Some files were not shown because too many files have changed in this diff Show More