media mover

Non-local Files on Drupal 6

Drupal 6 does not handle non-local files well. That means if you want to use something like Amazon's S3 file service you are pretty much out of luck. Media Mover got around this by overriding some templates but the implementation did not work well for extensibility and left most use cases in the dark.

Media Mover 2: Now With 72% More Objects!

Ok so I totally missed my deadline of January 1 for Media Mover 2. Fine.

The alpha is actually nearing- this time I mean it. The selecting files from views works, auto generating images for imagecache (multiples all at once), full Drush support, unlimited actions per step, FTP module has been completely rewritten and does a better job of auto linking FTP content (by users, by directory, by token) then it did previously, the number of modules has been reduced to make configuration building easier, configurations in code, the API is new and simplified (and easy to upgrade to!) and so on. Hey, the interface even got an overhaul which makes it feel more like Views, and so on. Yes there are probably lots of bugs still. There is no upgrade path from Media Mover 1 and won't be until the bugs are not serious.

So here is some of the pudding. This is the new admin landing page which lists all of the configurations. Here you see three different types of configurations- disabled, overriden from code, and normal- built from the admin interface. What is no longer here is the notion of child configurations- with configurations now having unlimited steps it seems unnecessary to add the complexity of having the child configurations. Selecting files from an existing configuration is still possible so I'm going to argue that Media Mover 2 offers more possibilities for building configurations despite lacking this feature.

Hooks and Queues - Media Mover 2 Improvements

As Media Mover 2 finally moves toward alpha, I've taken the risk of doing some significant refactoring- or at least improvements- to make the transition to Drupal 7 easier as well as to provide a much more robust platform people to start leveraging.

Similar to Drupal 7's hook_file_load, Media Mover now offers hook_media_mover_file_load() and hook_media_mover_file_save(). This allows for easy altering of files as they pass through the system. These are both cache aware so you can still benefit from caching while having the ability to avoid modifying a cached file if your modifications are not dynamic (cached Media Mover files have $file->cached set). Steps and configurations are also alterable on load and save.

Media Mover 2 and Drupal Queue

With folks using Media Mover to transcode larger and larger video files, cron time outs have become somewhat of a problem as Drupal waits for FFmpeg to complete its processing. With Media Mover one, configurations are run from cron by default (not required, but out of the box) which means that cron runs as long as the Media Mover configuration takes. While it is possible to limit cron runs, the reality of transcoding a gigabyte file is that it takes time regardless of how much horsepower you can throw at it. Media Mover one was setup to be friendly to multi-machine systems, but the system left some things to be desired.

Media Mover S3 CDN Improvements

The S3 module for Media Mover just got updated to make the CDN integration easier. As files come through the system, files which already reside on S3 will have $file->s3_uri set which allows theming functions to display the local URI if it is present or the S3 URI if the file is already on S3.

Make that $file->s3_data which is a serialized array of data from the S3 file. This allows for the generation of private urls.

Fun Tricks with Media Mover 2.x

Media Mover 2.x has been slowly creeping along for the last bunch of months and is starting to approach an alpha state. One of the cool things about Media Mover 2 is that the architecture has been rewritten from the ground up. Now there are three main concepts - files that Media Move knows about, configurations which are a collection of steps, and steps which are settings for some kind of action or process that is done to a file. However, they all have lives of their own which means you can do some neat things with them.

Let's imagine that you have a module that needs to do some kind of file processing that Media Mover already supports. You can define a step- that is, a set of settings - much like a view - in code in your module. You can then invoke it simply:

Media Mover Mail Recipe

beksau posted a really helpful tutorial on how to integrate mobile technology (eg: mobile phones) with Media Mover to create an automatic transcoding system for posted content. Beksau's process uses mailhandler as a standalone rather than integrating directly with Media Mover, but from my perspective, it just showcases the fact that you can make very creative systems for handling content- Media Mover is flexible enough to plug in to what you are already using.

6.2.x Doxygen

As I've been working on getting the 6.2x branch of Media Mover up and running, I've started going through the old code and cleaning up the Doxygen documentation so that my own documentation effort is a bit cleaner. I'm now generating daily snapshots of all three branches here: doxy documentation

Pages