content top

Quick fun with AIR & Dailymugshot.com

Quick fun with AIR & Dailymugshot.com

So i’ve been playing with DailyMugShot.com for the past couple of months. DailyMugShot is just that – you take 1 picture every day of your mug. Well I wanted all my mugshots and there wasn’t a direct way of downloading them from the site. They have an RSS feed for your shots, but it only shows the current picture.

They do have a little flash based badge that you can post to your site.

So with some hunting around in the firebug output I found where the little flash piece calls a service for the sequence of images. The dataservice is simple XML (Yay!), and I like ActionScript 3 and XML. So, I wrote an AIR app that downloads all my mugshot images. It is really basic and urls and final file locations are all hard-coded, but it was a fun 45 minutes and worked like a charm and I have all my past mug shots.

Here are a few of my favorites:
02-03-200902-18-200902-24-200903-14-200903-17-200904-06-2009

Update: If you’d like to play with dailymugshot.com I’ve compiled an AIR Application that will download all the images for a given user ID (you can get the userID from the slide show page URL)

http://www.thekuroko.com/wp-content/plugins/downloads-manager/img/icons/setup.gif download: \"DailyMugGetter\" AIR Application (980.95KB)
added: 15/03/2010
clicks: 38
description: Allows you to download all images for a UserID from http://www.dailymugshot.com

Read More

Adobe AIR – Issues with Command Line Arguments

After working on a little automation tool for video encoding process we ran into an interesting issue with AIR applications and command line arguments. Here is the scenario:

  1. Encoding process ends.
  2. The encoding process passes a file path to the waiting AIR application via command line.
  3. If the AIR app is not running, it starts up.
  4. The AIR application then checks some data in a database updates some tracking info and possibly grabs the duration out of the file.
  5. The AIR app waits for some more input.

Here is the issue – when the application starts up via the command line call, subsequent calls fail to the AIR application. Our solution, the AIR app has to be running when the OS starts up – that way the initial command line call to start the application doesn’t hold the process.

The command line looks something like in Windows:

C:/Program Files/ServerApplication/ServerApplication.exe "D:/my/storagedir/vidfile.f4v"

The command line looks something like on a Mac:

/Applications/ServerApplication.app/Contents/MacOS/ServerApplication "D:/my/storagedir/vidfile.f4v"

There has to be some way to start the application via the command line without holding everything up right? What am I missing?

Here is what I’m missing:
The new command line looks something like in Windows (added the /b option):

C:/Program Files/ServerApplication/ServerApplication.exe /b "D:/my/storagedir/vidfile.f4v"

The new command line looks something like on a Mac (added the ‘&’ at the end):

/Applications/ServerApplication.app/Contents/MacOS/ServerApplication "D:/my/storagedir/vidfile.f4v" &

Now our little automation AIR tool doesn’t need to be running when the first call happens – it will actually start up – and it can stay open and successfully receive new command line arguments.

Read More

Yammer and SVN post-commit hooks

If you don’t know what Yammer is, it is a twitter like communication tool for your company:

Yammer is a tool for making companies and organizations more productive through the exchange of short frequent answers to one simple question: “What are you working on?”

Whats nice about Yammer is it is an internal tool that you can quickly communicate with everyone, well anyone listening, in your company. Answers to questions come quickly and from the appropriate party without much effort on either end and notifications to everyone are a snap.

The notifications is what got me thinking about Subversion and post-commit hooks. Subversion provides hooks that allow you to trigger scripts based on a repository event. So, I set up a script that retrieves information about the latest commit to the repository formats an email which is sent to Yammer and published. Now, when someone commits to the repository, everyone is automatically notified without the developer having to write an email and send it to everyone that needs to know about it.

Another unforeseen benefit of this system is that everyone has gotten much better at their SVN comments for their commit. I would imagine this is because they get instant feedback about inadequate comments when everyone see it in Yammer.

On to the resources – SVN hooks are pretty easy to implement and provided by default. They reside in each repository you create in a ‘hooks’ directory {SVN_ROOT}/{REPOSITORY}/hooks. There is a provided template for each type of hook that SVN supports. The script can be any type of script (shell scripts, Python scripts etc), it just needs to have the same name as the supplied template file. For our Yammer script I dusted off the .bat script skills to retrieve the commit and send an email. To send the email I downloaded blat to handle sending the email to Yammer. Finally we create an email for out SVN user and a yammer account using the svn user email.

So here is the list of what we have so far:

  • SVN Repositoy and access to the hooks directory
  • Email address for the SVN user
  • Yammer account using the SVN user’s email address
  • Some way to send an email (Blat)
  • SVN post-commit hook script (post-commit.bat)

Now on to the contents of the script – The post commit hook receives 2 arguments, the name of the repository and the revision. The script uses svnlook, the repository name and revision to retrieve the details (message and author) of the commit. Then usign the commit details the script creates a text file that Blat uses as the email body and sends the email to Yammer.

Here is the actual script (names have been changed to protect the innocent):

@echo off

:::::::::::::::::::::::::::::::::::::::::::::::::::::
::: ARGUMENTS :::::::::::::::::::::::::::::::::::::::
SET REPOS=%1
SET REV=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::
::: GENERAL INFO ::::::::::::::::::::::::::::::::::::
SET DIR=%REPOS%/hooks
SET MESSAGE_FILE=%DIR%/message.txt

:::::::::::::::::::::::::::::::::::::::::::::::::::::
::: SVN INFO ::::::::::::::::::::::::::::::::::::::::
SET DIR=%REPOS%/hooks
SET REPO_PATH=file:///%REPOS%

::: Get the author ::::::::::::::::::::::::::::::::::
For /F "Tokens=*" %%I in ('svnlook author %REPOS% -r %REV%') Do Set author=%%I

::: Get the log messsage ::::::::::::::::::::::::::::::::::
For /F "Tokens=*" %%I in ('svnlook log %REPOS% -r %REV%') Do Set log=%%I

::: Set the message body ::::::::::::::::::::::::::::::::::
ECHO Commit - rev %REV% (#%author%): '%log%' - %REPOS% > %MESSAGE_FILE%

:::::::::::::::::::::::::::::::::::::::::::::::::::::
::: EMAIL INFO ::::::::::::::::::::::::::::::::::::::

set to=-to yammer@yammer.com

set subj=-s "SVN Commit (Revision %REV%)"

set server=-server mail.domain.com

set debug=-debug -log blat.log -timestamp

set auth=-u email@domain.com -pw yourpasswordhere

set from=-f email@domain.com

:::::::::::::::::::::::::::::::::::::::::::::::::::::
::: SEND THE EMAIL ::::::::::::::::::::::::::::::::::
C:/pathtoyourrepos/_tools/blat/blat %MESSAGE_FILE% %server% %to% %from% %subj% %auth% %debug%

Or you can download the script:

http://www.thekuroko.com/wp-content/plugins/downloads-manager/img/icons/default.gif download: post-commit.bat.zip (1.03KB)
added: 09/10/2008
clicks: 589
description: SVN post-commit hook .bat script to send an email to yammer.

Read More

Mozilla Ubiquity – Useful and fun

So i’ve been checking out Ubiquity and playing with it a bit. Even in its “early, rough” state, it is fun stuff to play with and definitely useful!

I even had the time (about 2 min cause I just copied one of their commands) to create a custom command for is.gd the shorter URL service.

CmdUtils.CreateCommand({
name: "isgd",
takes: {"url to shorten": noun_arb_text},
preview: "Replaces the selected URL with an is.gd URL.",
execute: function( url )
{
var baseUrl = "http://is.gd/api.php";
var params = {longurl: url.text};
jQuery.get( baseUrl, params, function( isgdUrl )
{
CmdUtils.setSelection( isgdUrl );
})
}
})

To add this command jsut open up Ubiquity (opt/ctrl+Space) and type command-editor, then hit enter. Add the code (it automatically saves as you type). Then your good to go.

To use the new command, have some text selected in a new email or blog post, open Ubiquity type isgd, then the url, hit enter and the text that was selected will be replaced with the shortened URL.

Shortening a URL with is.gd and Ubiquity

Shortening a URL with is.gd and Ubiquity

Of course there are plenty of other ways you can use/play with Ubiquity.

Ubiquity’s Intro: http://is.gd/1Wns

Custom Commands: http://is.gd/1Ydc

That’s right, I even used Ubiquity to create the links above.

Read More
content top