Feed Aggregator/Converter

Created a server-side feed aggregator for a client. It accumulates content of multiple feeds and puts them into designated “data containers”, while simultaneously reordering feed items according to a given set of rules. The solution is developed for Joomla CMS and supports two types of feeds: photo- and article feeds. Article feeds can have images attached (as enclosures), and may as well contain references to videos kept in BrightCove video cloud. In the current version of the program the “data containers” are categories created in K2 Joomla component, and each feed item is stored as a K2 content item. The client uses FileMobile storage to keep the images.

As it’s not a front-end component, I have no nice screenshots to illustrate its greateness, so I will limit myself to what, in my opinion, are the top features:

1. Each content item created is illustrated with an image (if provided), and if there’s no image attached, the accompanying image is created out of the video content (if present) using BrightCove+FileMobile combination of APIs.

2. Each image being stored to FileMobile is accompanied with detailed metadata information about its geolocation, authorship and content-related tags.

The API-talking “guts” is the same setup I used in the FileMobile module, except that now the factory serves two APIs.

Another feature of the Feed Aggregator was that it was an installable script to be used on different projects of the client. Since I periodically modified the database scheme along the way, the script installer/updater had to take this into account and update the database scheme accordingly. For example, there was a database table called ‘hashes‘ and to check if its structure has to be modified, I created a MySQL stored procedure which would add 3 columns if they did not exist:


CREATE PROCEDURE AlterHashesTable()
BEGIN
DECLARE _count INT;
SET _count = ( SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'hashes' AND
COLUMN_NAME = 'temp_videoid');
IF _count = 0 THEN
ALTER TABLE `hashes`
ADD COLUMN `temp_videoid` varchar(50) default NULL,
ADD COLUMN `temp_credits` varchar(150) default NULL,
ADD COLUMN `temp_caption` text;
END IF;
END

And next query would just execute the procedure:

CALL AlterHashesTable()

Product Details
Name: Feeds-to-K2 Converter
Programming languages used: PHP
Framework/Platform: Joomla CMS 2.5.xx/3.xx
Budget: 30 hours
Release: May 2013.

Discuss