As I am trying to follow how my screencasts are doing on YouTube I keep visiting the web site checking out the number of subscribers and the number of views of the videos. It's getting a bit boring so I thought I should automate it.

YouTube provides an API for a lot of things. I wanted to be able to fetch the statistics of my account.

I started by installing the Padre on Strawberry Perl for Windows package but it would work on any other distribution of Perl, and on any other operating system.

Then I went to Meta CPAN to search for something related to Youtube and settled with WebService::GData. I went to the CPAN shell in the Strawberry -> Tools submenu and typed in

cpan> install WebService::GData

After brief reading of the docs, and some copy-pasting I got this script:

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

use WebService::GData::YouTube;
my $yt = WebService::GData::YouTube->new();

my $p = $yt->get_user_profile('gabor529');
say $p->about_me;
my $s = $p->statistics;
say $s->view_count;
say $s->subscriber_count;
#say $s->video_watch_count;
say $s->total_upload_views;

This would fetch my user profile - without even logging in to YouTube - and print out the statistics. I have 105 subscribers, when I prepared the screencast in June 2011. There are 551 in July 2014.

Then I wanted to send the resulting data to myself via Gmail. Another short search on Meta CPAN for Gmail and I found Email::Send::SMTP::Gmail. Some more copy pasting and here is the script that would send an e-mail using my gmail-account to myself. I guess I could use the same code to send to anyone else as well.

use Email::Send::SMTP::Gmail;

my $mail=Email::Send::SMTP::Gmail->new( -smtp=>'gmail.com',
                                        -login=>'gabor529@gmail.com',
                                        -pass=>'google and me');

my $text = '';
$text .= "view count " . $s->view_count . "\n";
$text .= "subscribers " . $s->subscriber_count . "\n";
$text .= "total views"   . $s->total_upload_views . "\n";

$mail->send(-to=>'gabor529@gmail.com',
          -subject=>'youtube update',
          -verbose=>'1',
          -body=> $text,
#         -attachments=>'full_path_to_file'
);

$mail->bye;

That was all of it. It took me almost 15 minutes to write this! (And 3 more hours to prepare the screencast.

ps. That is not really my e-mail address. I was just using it for this demo.