Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e6ed92c53 | |||
| 56c77ae9a4 | |||
| c46d29a5bb | |||
| 5e8c33f05a | |||
| fb920f58bc | |||
| 292d290723 | |||
| 0adcdaba8d |
2
.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
__pycache__/
|
|
||||||
*.py[cod]
|
|
||||||
164
README
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
pyGTKtalog 1.0
|
||||||
|
==============
|
||||||
|
|
||||||
|
pyGTKtalog is Linux/FreeBSD program for indexing CD/DVD or directories on
|
||||||
|
filesystem. It is similar to gtktalog <http://www.nongnu.org/gtktalog/> or
|
||||||
|
gwhere <http://www.gwhere.org/home.php3>. There is no coincidence in name of
|
||||||
|
application, because it's ment to be replacement (in some way) for gtktalog,
|
||||||
|
which seems to be dead project for years.
|
||||||
|
|
||||||
|
FEATURES
|
||||||
|
========
|
||||||
|
|
||||||
|
- scan for files in selected media
|
||||||
|
- get/generate thumbnails from exif and other images
|
||||||
|
- most important exif tags
|
||||||
|
- add/edit description and notes
|
||||||
|
- fetch comments for images made in gThumb <http://gthumb.sourceforge.net>
|
||||||
|
- add/remove unlimited images to any file or directory
|
||||||
|
- tagging files <http://en.wikipedia.org/wiki/Tag_%28metadata%29>
|
||||||
|
- and more :)
|
||||||
|
|
||||||
|
REQUIREMENTS
|
||||||
|
============
|
||||||
|
|
||||||
|
pyGTKtalog is written in python with following dependencies:
|
||||||
|
|
||||||
|
- python 2.5 or higher
|
||||||
|
- pygtk 2.12 or higher <http://www.pygtk.org>
|
||||||
|
|
||||||
|
Optional modules:
|
||||||
|
|
||||||
|
- PIL <http://www.pythonware.com/products/pil/index.htm> for image manipulation
|
||||||
|
|
||||||
|
Additional pyGTKtalog uses pygtkmvc <http://pygtkmvc.sourceforge.net> by Roberto
|
||||||
|
Cavada and EXIF module by Gene Cash (slightly updatetd to EXIF 2.2 by me) which
|
||||||
|
are included in sources.
|
||||||
|
|
||||||
|
pyGTKtalog extensivly uses external programs in unix spirit, however there is
|
||||||
|
small possibility of using it Windows (probably with limitations) and quite big
|
||||||
|
possiblity to run it on other sofisticated unix-like systems (i.e.
|
||||||
|
BeOS/ZETA/Haiku, QNX or MacOSX).
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
./pyGTKtalog
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Then, just run pyGTKtalog script.
|
||||||
|
|
||||||
|
TODO
|
||||||
|
====
|
||||||
|
|
||||||
|
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 definied group of tags (represented by color in cloud tag)
|
||||||
|
- hiding specified files - configurable, like dot prefixed, cfg and manualy
|
||||||
|
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 ~/.pygtktalog/images directory. 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
|
||||||
|
~/.pygtktalog/images). Functionality for exporting images and corresponding db
|
||||||
|
file is planned.
|
||||||
|
|
||||||
|
UPDATE
|
||||||
|
------
|
||||||
|
There can be added images for virtually any item in catalog. Therefore there is
|
||||||
|
some hazard with image filenames.
|
||||||
|
After long consideration and experiments I've decided, that images for every
|
||||||
|
item will have file name as follows:
|
||||||
|
|
||||||
|
sha512("filename" + "file size" + "file modification date").hexdigest()
|
||||||
|
|
||||||
|
for thumbnails:
|
||||||
|
sha512("filename" + "file size" + "file modification date").hexdigest() + "_t"
|
||||||
|
|
||||||
|
Why that way? There is plenty ways to achive goal to keep thumbnails/data with
|
||||||
|
applications, however I wanted to keep all things in one place, just to prevent
|
||||||
|
mixing this up with existing, system specific (Gnome, KDE, maybe MacOS, or any
|
||||||
|
other which is capable to run this application) own solution. Another reason
|
||||||
|
lays on catalogs update mechanizm. Imagine, that you have large collection of
|
||||||
|
movie clips and want to frequently add and/or delete somethong from that.
|
||||||
|
Changing file names of virtually all files is rather rare case. However moving
|
||||||
|
them between directories will be much more frequent scenario. And now, if you
|
||||||
|
want to update things in catalog, program will just check if there is such
|
||||||
|
generated image from movie filename, size and dates, and then it will just
|
||||||
|
assign that image to file in catalog. No need to wase time again for generating
|
||||||
|
movie shots all over again.
|
||||||
|
|
||||||
|
Of course there are some limits for such approach. There is relatively small
|
||||||
|
possibility to generate two filenames that are the same in two cases:
|
||||||
|
|
||||||
|
1. There are two different files (movies or images) with the same name, same
|
||||||
|
size and same timestamp in different directories. This could happen in case of
|
||||||
|
images that have fixed size (like BMP) and then due to image/thumbnail creating
|
||||||
|
policy only the first one will be placed in images directory.
|
||||||
|
|
||||||
|
2. Another possibility........ fuck.
|
||||||
|
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
====
|
||||||
|
|
||||||
|
All bugs please report to Roman 'gryf' Dobosz <roman.dobosz@gmail.com>
|
||||||
|
|
||||||
180
README.rst
@@ -1,180 +0,0 @@
|
|||||||
pyGTKtalog 1.0
|
|
||||||
==============
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
.. image:: /example/main.png
|
|
||||||
:alt: pyGTKtalog main screen
|
|
||||||
|
|
||||||
WARNING!
|
|
||||||
========
|
|
||||||
|
|
||||||
**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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
You have been warned.
|
|
||||||
|
|
||||||
The rest of the README file:
|
|
||||||
|
|
||||||
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).
|
|
||||||
|
|
||||||
INSTALLATION
|
|
||||||
============
|
|
||||||
|
|
||||||
You don't have to install it if you don't want to. You can just change current
|
|
||||||
directory to pyGTKtalog and simply run:
|
|
||||||
|
|
||||||
./pyGTKtalog
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
Then, just run pyGTKtalog script.
|
|
||||||
|
|
||||||
TODO
|
|
||||||
====
|
|
||||||
|
|
||||||
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
|
|
||||||
=======
|
|
||||||
|
|
||||||
This work is licensed under the terms of the GNU GPL, version 3. See the LICENCE
|
|
||||||
file in top-level directory.
|
|
||||||
|
|
||||||
.. _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
|
|
||||||
@@ -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 |