#!/usr/bin/perl -w # Viddler upload example 0.1 # Christopher Masto use strict; use URI; use LWP::UserAgent; use HTTP::Request::Common; use XML::Simple; my $viddler_user = "USERNAME"; my $viddler_password = "PASSWORD"; my $api_key = "APIKEY"; my $api_url = "http://api.viddler.com/rest/v1/"; my $sessionid; sub user_authenticate { my ($user, $pass) = @_; my $ua = LWP::UserAgent->new; my $auth_url = URI->new($api_url); $auth_url->query_form(api_key => $api_key, method => "user.authenticate", user => $user, password => $pass); my $response = $ua->get($auth_url); unless ($response->is_success) { die "Request failed: " . $response->status_line; } my $xml = XMLin($response->content, KeepRoot => 1); $sessionid = $xml->{sessionid}; # XXX - handle errors unless (defined $sessionid) { my $error = $xml->{error}; die "Authentication failed: $error"; # 101: Username not found. # 102: This account has been suspended. # 103: Incorrect password. } return $sessionid; } sub video_upload { my ($filename, %params) = @_; die "Must authenticate before uploading" unless defined $sessionid; my $request = POST $api_url, Content_Type => "form-data", Content => [ api_key => $api_key, method => "video.upload", sessionid => $sessionid, file => [$filename], %params ]; my $ua = LWP::UserAgent->new; my $response = $ua->request($request); print $response->content, "\n"; } ### Example: user_authenticate($viddler_user, $viddler_password); video_upload("Twirling Twirling.mov", title => "foo", tags => "tag1,tag2", description => "description here", category => "cat");