Compare commits
8 Commits
images_in_
...
legacy
| Author | SHA1 | Date | |
|---|---|---|---|
| e3febf46eb | |||
| 93b98bbe2b | |||
| 422fdf0d58 | |||
| 9799e4b75f | |||
| 38cf76ee26 | |||
| 6507aa4774 | |||
| 5c1ea2e590 | |||
| 1424ce9c86 |
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
include setup.py
|
|
||||||
include pavement.py
|
|
||||||
include paver-minilib.zip
|
|
||||||
include pygtktalog/locale/*/*/*.mo
|
|
||||||
182
README
@@ -1,182 +0,0 @@
|
|||||||
pyGTKtalog
|
|
||||||
==========
|
|
||||||
|
|
||||||
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 menat to be replacement (in some way) for gtktalog,
|
|
||||||
which seems to be dead project for years.
|
|
||||||
|
|
||||||
Current version is 1.9.
|
|
||||||
|
|
||||||
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 requires python and following libraries:
|
|
||||||
|
|
||||||
* `python 2.6 <http://www.python.org/>`_
|
|
||||||
* `pygtk 2.16 <http://www.pygtk.org>`_
|
|
||||||
* `pygtkmvc 1.99 <http://sourceforge.net/apps/trac/pygtkmvc/wiki>`_
|
|
||||||
* `sqlalchemy 0.6 <http://www.sqlalchemy.org>`_
|
|
||||||
|
|
||||||
It may work on other (lower) version of libraries, and it should work with
|
|
||||||
higher versions of libraries.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Although pygtkmvc is `listed on pypi
|
|
||||||
<http://pypi.python.org/pypi/python-gtkmvc/>`_ it may happen that you
|
|
||||||
have to download it directly from
|
|
||||||
`sourceforge <http://sourceforge.net/apps/trac/pygtkmvc/wiki>`_ page and
|
|
||||||
install manually. I don't know about pygtk (I've installed it by my
|
|
||||||
system package manager), but all the others python libraries (sqlalchemy,
|
|
||||||
paver, nose, coverage) should be installable via `pip
|
|
||||||
<http://pypi.python.org/pypi/pip>`_
|
|
||||||
|
|
||||||
Optional modules
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
* `PIL <http://www.pythonware.com/products/pil/index.htm>`_ for image manipulation
|
|
||||||
|
|
||||||
Additional pyGTKtalog uses EXIF module by Gene Cash (slightly updatetd to EXIF
|
|
||||||
2.2 by me) which is 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).
|
|
||||||
|
|
||||||
Programs that are used:
|
|
||||||
* mencoder (provided by mplayer package)
|
|
||||||
* montage, convert from ImageMagick
|
|
||||||
|
|
||||||
For development process following programs are used:
|
|
||||||
|
|
||||||
* `gettext <http://www.gnu.org/software/gettext/gettext.html>`_
|
|
||||||
* `intltool <http://www.gnome.org/>`_
|
|
||||||
* `nose <http://code.google.com/p/python-nose/>`_
|
|
||||||
* `coverage <http://nedbatchelder.com/code/coverage/>`_
|
|
||||||
* `paver <http://code.google.com/p/paver/>`__
|
|
||||||
|
|
||||||
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::
|
|
||||||
|
|
||||||
$ 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
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
DEVELOPMENT
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Several tools has been used to develop pyGTKtalog.
|
|
||||||
|
|
||||||
Paver
|
|
||||||
^^^^^
|
|
||||||
|
|
||||||
I've choose `Paver <http://www.blueskyonmars.com/projects/paver/>`_ as make
|
|
||||||
equivalent. Inside main project directory there is pavement.py script, which
|
|
||||||
provides several tasks, that can be helpfull in a work with sources. Paver is
|
|
||||||
also used to generate standard setup.py.
|
|
||||||
|
|
||||||
Nose
|
|
||||||
^^^^
|
|
||||||
|
|
||||||
BUGS
|
|
||||||
----
|
|
||||||
|
|
||||||
All bugs please report to Roman 'gryf' Dobosz <gryf73@gmail.com>.
|
|
||||||
|
|
||||||
180
README.rst
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
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
|
||||||
5
cleanup.sh
Executable 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 '{}' ';'
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
"""
|
|
||||||
Project: pyGTKtalog
|
|
||||||
Description: convert db created with v.1.x into v.2.x
|
|
||||||
Type: tool
|
|
||||||
Author: Roman 'gryf' Dobosz, gryf73@gmail.com
|
|
||||||
Created: 2009-08-14
|
|
||||||
"""
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import bz2
|
|
||||||
import shutil
|
|
||||||
from tempfile import mkstemp
|
|
||||||
from sqlite3 import dbapi2 as sqlite
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
# import db objects just to create schema
|
|
||||||
from pygtktalog.dbobjects import File, Exif, Group, Gthumb
|
|
||||||
from pygtktalog.dbobjects import Image, Tag, Thumbnail
|
|
||||||
from pygtktalog.dbcommon import connect
|
|
||||||
|
|
||||||
|
|
||||||
def create_schema(cur):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def create_temporary_db_file():
|
|
||||||
"""create temporary db file"""
|
|
||||||
fd, fname = mkstemp()
|
|
||||||
os.close(fd)
|
|
||||||
return fname
|
|
||||||
|
|
||||||
|
|
||||||
def connect_to_db(filename):
|
|
||||||
"""initialize db connection and store it in class attributes"""
|
|
||||||
db_connection = sqlite.connect(filename, \
|
|
||||||
detect_types=sqlite.PARSE_DECLTYPES | sqlite.PARSE_COLNAMES)
|
|
||||||
db_cursor = db_connection.cursor()
|
|
||||||
return db_connection, db_cursor
|
|
||||||
|
|
||||||
|
|
||||||
def opendb(filename=None):
|
|
||||||
"""try to open db file"""
|
|
||||||
db_tmp_path = create_temporary_db_file()
|
|
||||||
|
|
||||||
try:
|
|
||||||
test_file = open(filename).read(15)
|
|
||||||
except IOError:
|
|
||||||
os.unlink(db_tmp_path)
|
|
||||||
return False
|
|
||||||
|
|
||||||
if test_file == "SQLite format 3":
|
|
||||||
db_tmp = open(db_tmp_path, "wb")
|
|
||||||
db_tmp.write(open(filename).read())
|
|
||||||
db_tmp.close()
|
|
||||||
elif test_file[0:10] == "BZh91AY&SY":
|
|
||||||
open_file = bz2.BZ2File(filename)
|
|
||||||
try:
|
|
||||||
curdb = open(db_tmp_path, "w")
|
|
||||||
curdb.write(open_file.read())
|
|
||||||
curdb.close()
|
|
||||||
open_file.close()
|
|
||||||
except IOError:
|
|
||||||
# file is not bz2
|
|
||||||
os.unlink(db_tmp_path)
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
os.unlink(db_tmp_path)
|
|
||||||
return False
|
|
||||||
|
|
||||||
return connect_to_db(db_tmp_path), db_tmp_path
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
if len(sys.argv) != 3:
|
|
||||||
print "usage: %s src_base dst_base" % sys.argv[0]
|
|
||||||
exit()
|
|
||||||
|
|
||||||
result = opendb(sys.argv[1])
|
|
||||||
if not result:
|
|
||||||
print "unable to open src db file"
|
|
||||||
exit()
|
|
||||||
|
|
||||||
(src_con, src_c), src_tmpf = result
|
|
||||||
|
|
||||||
shutil.copy(src_tmpf, sys.argv[2])
|
|
||||||
|
|
||||||
# close src db.
|
|
||||||
src_c.close()
|
|
||||||
src_con.close()
|
|
||||||
os.unlink(src_tmpf)
|
|
||||||
|
|
||||||
# create or update shema
|
|
||||||
connect(sys.argv[2])
|
|
||||||
|
|
||||||
dst_con = sqlite.connect(sys.argv[2])
|
|
||||||
dst_c = dst_con.cursor()
|
|
||||||
|
|
||||||
sql = "select id, date from files"
|
|
||||||
|
|
||||||
for id, date in dst_c.execute(sql).fetchall():
|
|
||||||
sql = "update files set date=? where id=?"
|
|
||||||
if date and int(date) > 0:
|
|
||||||
dst_c.execute(sql, (datetime.fromtimestamp(int(date)), id))
|
|
||||||
else:
|
|
||||||
dst_c.execute(sql, (None, id))
|
|
||||||
|
|
||||||
sql = "select id, date from gthumb"
|
|
||||||
|
|
||||||
for id, date in dst_c.execute(sql).fetchall():
|
|
||||||
sql = "update gthumb set date=? where id=?"
|
|
||||||
try:
|
|
||||||
if int(date) > 0:
|
|
||||||
dst_c.execute(sql, (datetime.fromtimestamp(int(date)), id))
|
|
||||||
else:
|
|
||||||
dst_c.execute(sql, (None, id))
|
|
||||||
except:
|
|
||||||
print id, date
|
|
||||||
|
|
||||||
dst_con.commit()
|
|
||||||
dst_c.close()
|
|
||||||
dst_con.close()
|
|
||||||
9
example/README.rst
Normal 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
BIN
example/example_images/10/15/cb/65.jpg
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
example/example_images/10/15/cb/65_t.jpg
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
example/example_images/11/83/55/ee.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
example/example_images/11/83/55/ee_t.jpg
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
example/example_images/1d/17/2f/8e.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
example/example_images/1d/17/2f/8e_t.jpg
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
example/example_images/24/76/c1/ad.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
example/example_images/24/76/c1/ad_t.jpg
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
example/example_images/2a/3f/80/11.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
example/example_images/2a/3f/80/11_t.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
example/example_images/30/8b/27/75.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
example/example_images/30/8b/27/75_t.jpg
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
example/example_images/33/dc/55/b7.jpg
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
example/example_images/33/dc/55/b7_t.jpg
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
example/example_images/38/a8/5e/64.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
example/example_images/38/a8/5e/64_t.jpg
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
example/example_images/3b/07/eb/2c.jpg
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
example/example_images/3b/07/eb/2c_t.jpg
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
example/example_images/3d/37/88/ab.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
example/example_images/3d/37/88/ab_t.jpg
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
example/example_images/41/09/36/49.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
example/example_images/41/09/36/49_t.jpg
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
example/example_images/43/44/c4/2f.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
example/example_images/43/44/c4/2f_t.jpg
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
example/example_images/45/41/22/02.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
example/example_images/45/41/22/02_t.jpg
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
example/example_images/46/a3/45/a1.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
example/example_images/46/a3/45/a1_t.jpg
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
example/example_images/47/20/4e/d4.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
example/example_images/47/20/4e/d4_t.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
example/example_images/4d/11/26/f1.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
example/example_images/4d/11/26/f1_t.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
example/example_images/50/a0/c1/82.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
example/example_images/50/a0/c1/82_t.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
example/example_images/51/a1/3d/14.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
example/example_images/51/a1/3d/14_t.jpg
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
example/example_images/51/b7/65/89.jpg
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
example/example_images/51/b7/65/89_t.jpg
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
example/example_images/59/64/26/ff.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
example/example_images/59/64/26/ff_t.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
example/example_images/5a/2a/35/a6.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
example/example_images/5a/2a/35/a6_t.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
example/example_images/5a/8f/66/ac.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
example/example_images/5a/8f/66/ac_t.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
example/example_images/5b/86/29/ad.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
example/example_images/5b/86/29/ad_t.jpg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
example/example_images/5c/88/57/67.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
example/example_images/5c/88/57/67_t.jpg
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
example/example_images/5c/91/ad/2c.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
example/example_images/5c/91/ad/2c_t.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
example/example_images/5f/39/fd/07.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
example/example_images/5f/39/fd/07_t.jpg
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
example/example_images/61/b0/39/6a.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
example/example_images/61/b0/39/6a_t.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
example/example_images/62/b2/9c/f8.jpg
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
example/example_images/62/b2/9c/f8_t.jpg
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
example/example_images/68/06/53/02.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
example/example_images/68/06/53/02_t.jpg
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
example/example_images/69/fc/27/0f.jpg
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
example/example_images/69/fc/27/0f_t.jpg
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
example/example_images/6c/58/39/24.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
example/example_images/6c/58/39/24_t.jpg
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
example/example_images/70/7b/00/68.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
example/example_images/70/7b/00/68_t.jpg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
example/example_images/70/df/8f/28.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
example/example_images/70/df/8f/28_t.jpg
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
example/example_images/72/2e/7f/bf.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
example/example_images/72/2e/7f/bf_t.jpg
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
example/example_images/72/72/f6/04.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
example/example_images/72/72/f6/04_t.jpg
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
example/example_images/74/0e/f9/48.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
example/example_images/74/0e/f9/48_t.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
example/example_images/77/53/b3/0a.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
example/example_images/77/53/b3/0a_t.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
example/example_images/79/a7/bb/c7.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
example/example_images/79/a7/bb/c7_t.jpg
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
example/example_images/7c/23/92.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
example/example_images/7c/23/92_t.jpg
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
example/example_images/85/5c/6d/0f.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
example/example_images/85/5c/6d/0f_t.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
example/example_images/86/36/98/a3.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
example/example_images/86/36/98/a3_t.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
example/example_images/89/fb/7e/ba.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
example/example_images/89/fb/7e/ba_t.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
example/example_images/8d/46/2b/3b.jpg
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
example/example_images/8d/46/2b/3b_t.jpg
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
example/example_images/93/46/88/93.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
example/example_images/93/46/88/93_t.jpg
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
example/example_images/95/40/33/b7.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
example/example_images/95/40/33/b7_t.jpg
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
example/example_images/9c/98/c5/11.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
example/example_images/9c/98/c5/11_t.jpg
Normal file
|
After Width: | Height: | Size: 3.2 KiB |