Name | Modified | Size | Downloads / Week |
---|---|---|---|
npdb_p-1-4-1.tgz | 2025-02-09 | 50.1 MB | |
Readme.md | 2024-11-25 | 10.0 kB | |
ReadmeWin.md | 2024-11-24 | 4.2 kB | |
npdb_p-1-3-17.tgz | 2024-11-21 | 53.1 MB | |
ReadmeGo.md | 2024-11-21 | 1.2 kB | |
NPDb-Intro.pdf | 2024-08-10 | 132.9 kB | |
Readme-marketing.md | 2023-11-28 | 2.6 kB | |
Update-note.txt | 2023-07-04 | 1.1 kB | |
Totals: 8 Items | 103.3 MB | 0 |
NPDB
NPDB stands for the Nostalgic Photo DataBase (platform). It has nothing in common with The National Practitioner Data Bank (also NPDB). The system was developed in Linux, tested on Ubuntu 18.04, 20.04, 22.04 and 24.04. NPDB may be installed on MS Windows through WSL (Windows Subsystem for Linux) and on Chrome OS using "Linux development environment" option.
What is NPDB
Almost everyone has a vast archive of old and not very old photos in albums or simply in piles. Not to mention numerous folders of digital photos (in files). And everyone knows that it is almost impossible to find something you are looking for, in those myriads of pictures spread over your home, your computer and cloud storage. So if you want to make it possible to find necessary picture in a couple of clicks - this platform may suit you.
However - the platform is very personal. Only you may identify people, shown on that old photo and only you probably know when and where and in which circumstances it was taken. As for the new pictures (starting from around 2012), although they have date and location - still not all that can interest you in those pictures can be automatically identified. The platform provides you with rather simple tools to create the archive repository of photos with tags suitable only for your personal needs. Also exists a tool for immediate access to the photos in a couple of mouse clicks.
Apparently the creation of the pictures' repository demands quite a bit of work from the user. But once it is done - you will forever enjoy its searching abilities adding new pictures once they appear in your life.
Thus every person that is interested in creating (and maintaining) the illustration of his (her) life story in easily accessed photos and not fearing a certain creative time investment - may become the user of NPDB platform.
Main advantages:
- Suits for any age of original images (including digitized by scanners)
- Introduces an absolutely arbitrary system of tags. The images may be identified on the basis of more than 3 tag types as provided usually (time, location, person). Additional tags may include (for example) events, surnames, scenery types, objects of nature, objects of culture, etc.
- The tags are totally customizable. In fact, users may implement (by means of NPDB tools) their personal systems of tags.
- It is possible to search images also according to a free text (since the user is provided with the ability to insert the comment/description into the image's metadata).
- Quick search. Due to the usage of SQL database, the searching query finishes pretty quickly. The user receives results almost immediately.
Main limitations:
- NPDB is a kind of legacy platform. It has no AI features such as face recognition. However the majority of your memories may not be expressed by means of AI.
- Populating the system with the images is time-consuming, since the process of defining tags for the image takes some time. I estimate it as 3-5 minutes per one image. However, there exists the possibility (implemented as a specific feature) to radically reduce this time (up to less than 1 minute) at the expense of some reduction in accuracy.
Note on what NPDB is NOT
NPDB is not a platform for image editing. The user may apply his (her) favorite editor in the course of choosing/copying the picture into NPDB. But the ultimate goal and character of NPDB is its searching power with maximal abilities for personal customization of the searches.
NPDB components
- 2-level directories tree for storing image files "participating" in the system.
- SQL database that enables quick and rich-content searches of images.
- GUI and command line based programs for the tagging/describing of images and their registration in the database.
- GUI and command line based programs for searching and visualizing the images.
- Bash shell script (run_np.sh) performs the role of launcher (or aggregator). It invokes all basic operations of the NPDB system.
- Stories and Collections tool provides the ability to store the results of the personal searches for later access. The user may create the "collection" of stories of individuals, events, trips, meetings, etc. All may be viewed any time later without the necessity to define and run new queries.
- Utilities that provide various maintenance tools.
Reference implementation
The distribution contains a so-called "reference implementation". The tarball distro contains 3 directories:
- src - all necessary source files.
- libs - contains the image metadata library libexiv2.a - to be linked with c++ code of NPDB. Is being built from https://exiv2.org.
- PhotoRoot - a tree of jpeg files prepared for the demonstration/testing purposes.
Note that the library might be incompatible with your linux platform, thus it is recommended to build it by yourself.
Important: the reference implementation's goal is to show how the NPDB platform is built and to provide a way of testing the main features of it. After that the user may design their private tag types, vocabularies, images file organization, etc. The platform supports practically arbitrary customization of data. The customization process is described in the document "Customization.txt".
Other software prerequisites
- Curl command line tool for transferring data with URLs: https://curl.se
- At least one Linux image viewer (for jpeg files). I use "eom", "eog" and "gthumb"
- SQLite graphical browser (like https://sqlitebrowser.org)
- If you'd like to use the GUI utility for querying photo images DB, then you'll need the Python tools that include:
- Python environment (actually python3), usually comes preinstalled in OS;
- tkinter (tk) tool of Python (https://wiki.python.org/moin/TkInter)
- FreeSimpleGUI package (https://github.com/spyoungtech/FreeSimpleGUI)
Installation
Preliminary steps
- Untar the tarball in a chosen place. Let's denote the root of the result as $root. It contains 3 directories: src, libs and PhotoRoot. Default root is: /home/npdb/npdb_p
- Edit (if necessary) one line in file src/csv_ref/SysMisc.txt:
1,DATAROOT,$root/PhotoRoot,0
where $root should be explicitly inserted (e.g. /home/npdb/npdb_p/PhotoRoot). Edit other lines of SysMisc.txt (only if you need). - If you still need to install system components (Curl, FreeSimpleGUI and others) - you may try to run script comp_install.sh:
cd $root; . comp_install.sh
Main step
Run bash script that performs the system build:
cd $root; . build.sh
Alternatively if you have an older Linux distro (like Ubuntu 18.04 or earlier) the command is:
cd $root; export UB=1; . build.sh
This option is however available only in releases of NPDB prior to 1.4.0!
Post build steps
- Define environment variables:
- export DBPATH=$root/db
- export EXEDIR=$root/bin
- Don't forget to install (if yet not installed) previously mentioned "curl" and python tools.
- On this stage you may "play" with the reference database ($root/db/np.db) and image files tree ($root/PhotoRoot) using NPDB "launcher" script: $EXEDIR/run_np.sh.
- Start to populate image files tree ($root/PhotoRoot) with your directories and jpeg files. Now you may use NPDB system according to the documentation provided in the directory: $root/src/docs
Reference implementation directories locations
- NPDB working root directory - $root (e.g. /home/npdb/npdb_p)
- bin - $root/bin ($EXEDIR) - all executable files (including bash shell and python scripts)
- libs - $root/libs - all static libraries
- db - $root/db ($DBPATH) - SQLite database file and related scripts and data
- all source files - $root/src
- C++ related subsystem - $root/src/cpp
- Vocabularies (for reference) - $root/src/csv_ref
- Documentation - $root/src/docs
- Scripts - $root/src/scripts
- Bash shell - $root/src/scripts/bash
- Python - $root/src/scripts/py
- SQL - $root/src/scripts/sql
- Image files repository (for reference): $root/PhotoRoot (DATAROOT)
Remote access
The possibility to remotely access the querying (searching) abilities of NPDB was successfully tested using the software of Parsec (www.parsec.app). You need to install the "parsec" host on your "server" with the NPDB system. The hosting computer is required to run Windows 10 or 11. The remote client connects to the host also via the installed "parsec" application. The user on the client's side will be able to remotely (including over internet) access NPDB's searching utilities.
NPDB Users' Roles
We may distinguish between 3 major users' roles in NPDB.
Administrator
- is a person that actually creates and maintains the platform. This person:
- develops the vocabularies (content),
- creates the 2-level directories tree (for the photo images),
- creates and populates the database with all vocabularies and other stuff,
- applies various helper routines for the maintenance and sanity checks,
- performs backups of the system
Active user
- is a person that actually defines the contents of the system:
- populates 2-level tree with the pictures,
- defines (performs tagging and registration) all chosen pictures in the database,
- periodically validates the query utilities (making sure of the results' correctness).
Passive user
- is the end-user of the system.
She/he performs the requests to the database using query utilities and enjoying the results.
Why NPDB is a platform?
The system is built in such a way that provides the possibility of further developments on top of the basic software provided to the developer. The openness of the architecture and the variety of provided utilities constitute convenient building blocks for the advanced developments. More sophisticated and better organized front end and cloud based applications are the apparent examples.