Log:Selective Selective logging to the console
This module is a logger with adjustable verbosity for commandline programs. Different verbosity levels can have different colors and styles applied and specific functions or methods can get extra verbosity. Message colors and styles are fully user-definable.
Additional functions are provided for displaying summaries of all warnings or errors encountered. Stack traces can been shown on demand or whenever there are warnings or errors.
Geo::Index Geographic indexer
Geo::Index is a module for creating in-memory geographic point indices. Once indexed, fast searches can be run. The module supports search by radius, by bounding box and by proximity.
This will be my first CPAN release so I welcome any feedback you might have. The module has full documentation and test cases. Have I missed anything?
As of v0.0.4 XS is being used directly instead of via Inline::C. Can anyone comment on whether the way I wrote the XS support code is correct for use in a module?
The following was in regards to v0.0.3:
One specific thing that I'd value feedback on is my use of Inline::C. My code does have automatic fallbacks in place for when C isn't available and includes instructions for using it (the C code) in a server environment. Is there anything else I should be aware of when using it in a module?
File::TVShow::Info Extract meta data in TV Show File name
This is a TV Show only module which is aimed at giving extended support compared to Video::Filename.
I have looked around and not found a module similar. I currently use Video::Filename for File::TVShow::Organize
This module would be able support naming in for the forms of:
It would also able to extract some of the other details in the file name.
One limit is that EpName MUST be directly after episode number
I have made my GitHub Repo public. Please review the development branch if you are interested.
Dist-Zilla-Plugin-ReleaseToDarkpan Dist::Zilla plugin to release to a local "darkpan"
Sometimes we create a Perl module for our private use that we are not ready or not able to release to CPAN. The utility cpan-mirror-tiny lets us create a private CPAN repositoy on our local filesystem to store such packages we can then use in our own projects.
This plugin gives you the ability to automate this task when you run "dzil release". Use this plugin instead of UploadToCPAN.
App::PhotoDB App to manage a collection of film cameras & lenses
PhotoDB is an attempt to create a database for film photography that can be used to track cameras, lenses, accessories, films, negatives and prints, to fully catalogue a collection of photographic equipment as well as the pictures that are made with them. Read the CONCEPTS document for full details on the capabilities of PhotoDB.
PhotoDB can also write EXIF tags to scanned images taken with film cameras, so they appear in your digital photo library with the correct metadata (time, date, focal length, geotag, etc). At the moment, the PhotoDB project is unfinished and the code continues to change unpredictably. Look for a tagged release in the future!
The heart of PhotoDB is the MySQL/MariaDB backend database schema. This is the most complete part of the project and describes all the data that is recorded. The application is an interactive command-line tool to make it easier to add and edit data in the database. It is not a graphical interface or web application (but someone with the right enthusiasm and skills could use the logic I've already written to make a basic graphical interface quite quickly).
PhotoDB runs only on Linux systems and there are installation instructions for Fedora and Ubuntu Linux. However it should be able to run on pretty much any Linux distribution and MacOS as the Perl dependencies are portable. Soon there will be Docker support which will simplify installation and allow PhotoDB to run anywhere, including on Windows. The application is not quite feature-complete, so for now you may also need to edit parts of the database directly in some circumstances. You can access the raw database using the MySQL command line, by using an application such as MySQL Workbench or phpMyAdmin to obtain a GUI for manipulating the tables.
Device::Yeelight Controller for Yeelight smart devices
Recently I discovered some smart light bulbs from Yeelight which have pretty well documented API, unfortunately there is no Perl module to control them (similar, however not compatible, module is Device::Hue).
This Perl module implements local device discovery via Yeeling specific SSDP protocol and sending commands via control protocol in the JSON format.
on::demand Postpone loading a module until it's actually used
Deferred loading of modules with large dependency footprint may improve test script and/or command-line tools load times.
Autoload is used. No performance penalty is imposed, aside from loading the module on the first call to it.
Of course, the drawback is that compile time errors (if any) are delayed until unexpected. Better check that the modules in question actually exist and load correctly.
File-TVShow-Organize Video file migration module to handle TV Shows.
I wrote this module in order for me automate my personal Video library rip and import work flow.
The idea being that dvds would be ripped into a staging folder. The files would be named according to Season and Episode format. The resulting file would then be moved into the correct show/season folder automatically. This is done as a cron job.
The module's role is to allow someone to create their own programs to to carry out these actions. Taking care of details such as matching show name to destination folder, create the required season folder if it does not exist and calling rsync to migrate the video file to its new home.
This module has been renamed and method names have been changed to snake_case
PostScript::PSjoin wrapper around the psjoin.pl script for concatenating postscript documents
This module is a wrapper around the standalone Perl script "psjoin.pl" by Tom Sato. All I did was the minimal set of changes to allow Tom's script to work as a Perl subroutine.
I just realized that the synopsis and description don't explain the handful of options; I'll add those.