I tried many ready solutions, but none of them appeared to be good enough for me to use. The biggest problem with them was the search – it was just damn too slow. And, it was so slow becauses they used plain text files, e.g., in XML format, to store the file structure information. It looked like they loaded those big text files, parsed them and then made the search. And they did that for each media. So eventually, I realized, that I had to implement my own solution.
I started with defining the requirements for the media cataloging tool:
In general, the idea was to implement a file-based media cataloging tool. This was inspired by the Unix style of storing state information (or by something like this – I don’t remember to be honest), where every separate bit of data had its own location and could be manipulated without affecting other bits of data.
The first version of the media cataloging tool, which got the name CD-Index, was implemented around 8 years ago. That version was for 32-bit Linux and supported additional data only for MP3 files (it also stored paths for symbolic links as additional data). The tool was also able to index many archive formats including (but not limited to) TAR, ISO, ZIP, RAR, DEB and RPM.
Recently, I finally got some free time to port the tool to 64-bit Linux and to implement support for additional data for images and videos, what I wanted to have for a long time already (since I moved to 64-bit system, at least). With the new features I needed to reindex almost all my media, so I got a chance to test it quite well and to fix many old and new issues. As a result now CD-Index works like a charm.
So, here is the full list of what the tool is currently able to do:
123.jpg
). To extract meta data and thumbnails from images the tool uses GraphicsMagick.123-2.jpg
). To extract the meta information CD-Index uses FFmpeg and to generate thumbnails – ffmpegthumbnailer.dpkg-deb
for DEB).cdbrowse
tool. Thus, to check the contents of a media (after properly configuring Midnight Commander, of course) the user can just press Enter on the media’s CDI file. And, to check the meta information of a file on the media the user can just press F3 (but, it can also be needed to press F8 to prevent MC from trying to read metadata from that file by itself). The meta information will also include paths to thumbnails, if they are available.cdbrowse
utility to process the CDI file). Of course this should be properly configured beforehand as well.cdfind
, which was designed to resemble the standard Unix tool find
. Thus, CD-Index’s cdfind
supports such find
‘s options as -name
, -iname
, -regex
, -iregex
, -type
, -size
, -mtime
, -atime
and -printf
. In this way, users familiar with the find
tool (i.e., most administrators) should be able to search files in the CD-Index database without learning syntax of cdfind
.cdindex
. This is the tool, that extracts meta information and thumbnails, indexes archives and so on. Depending on what it finds on the media, this tool creates CDI, CDL, CDA, CDP, CDV, CDVA files and the subdirectory with thumbnails.CD-Index was first written about 8 years ago. After that there was a huge 7-year-long (approximately) pause. Recently it was revived and got many new interesting features. There are also plans to implement more cool features (see issues and below), but, unfortunately, I can’t guarantee, that this won’t be after other 7 years. But, what I’m sure about is that the tool won’t be abandoned and I’ll continue to work on it, even if this will be in 7 years.
So, let me tell you, how do I see the future of this tool and what other features I’d like it to have:
cdfind
tool is to be extended to support meta data. For example, I want to be able to search for video files, which include an audio stream with Ukrainian translation (like cdfind -video-audio-translation ukr
).This is another report for one more failure year, but, I hope, for the last such one (as I’m doing very serious things to prevent this in future). In this year, I finally realized, that I got into a comfort zone (again), which did not allow me to move forward and which, eventually, appeared to be not really comfort. Now I understand, that this could be seen just by reading my previous reports (for 2015-2016), but I was too “blind” (that’s, actually, how the comfort zone works).
Anyway, this year became a breaking point and that’s, probably, an achievement.
Unfortunately, the failures are still there and they are almost the same as for the previous years:
I left Kayako one week less than two months ago. During this time I was trying to rest, to work on tools like CD-Index and to arrange my working environment (CD-Index is actually helping with this too).
During these (almost) two months I did not really look for a new job (yet). As there still too many things to complete at my home office (CD-Index and Orangutan are among them). Anyway, I plan to do this. I will be looking for a part-time remote job. I can do PHP, Ruby, C, Perl and many other things (check my profiles on LinkedIn and on Upwork). So, if you a looking for a developer like me, contact me (e.g., using the Hire button in the top right corner of this page). If you have some short-time project, like a Redmine plugin, I can do this too.
]]>