sábado, 17 de septiembre de 2011

YouTube Searcher: Busca Videoclips de Música

Descripción:

Este script lista los videos de artistas (música) que están alojados en YouTube.

El listado de videos contempla el ID, nombre y duración de dichos videos.

Este script se puede complementar con otro script llamado "YouTube Downloader", el cual requiere del ID del video para descargarlo.

Enjoy!

#!/usr/bin/perl
use strict;
use HTTP::Lite;
use HTML::Entities;

#####################################################
#
# Desarrollado por: Zort
# Fecha: 16 de Septiembre de 2011
#
# Descripcion:
#   Este script lista los videos de artistas (musica) que
# estan alojados en YouTube.
#   El listado de videos contempla el ID, nombre y duracion
# de dichos videos.
#   Este script se puede complementar con otro script llamado
# "YouTube Downloader", el cual requiere del ID del video
# para descargarlo.
#
# Anexo:
#   Se omitieron todos los acentos en el codigo, para que no se
# vean caracteres erroneos en el caso de que el equipo donde
# se corra este codigo permita ver solo caracteres gringos.
#
#####################################################

my $artist = $ARGV[0];
$artist =~ s/^ +//;
$artist =~ s/ +$//;
$artist =~ s/ /_/g;

die "Usage: $0 artist\n\n" if ($artist eq '');

my $http = HTTP::Lite->new;
$http->http11_mode(1);

my $req = $http->request('http://www.youtube.com/artist/' . $artist);

if ($http->status() != 200) {
    print "No se pudo traer la pagina\n";
    exit;
}

# Getting the body page
my @body = split(/\n/, $http->body());

my $videos        = '';
my $artist_name   = '';
my $searching     = 0;
my $song_id       = 0;
my $song_duration = 0;
my $song_name     = 0;
foreach my $line (@body) {

    if ($line =~ /<h1>YouTube Mix for ([^<]*)</) {
        $artist_name = $1;
    }
    elsif ($line =~ /<h1>(Released in [0-9]+)/) {
        $videos .= "$1\n";
    }
    elsif ($line =~ / id="artist-videos" /) {
        $searching = 1;
    }
    elsif ($searching) {
        if ($line =~ /<li id="album-track-([^"]*)"/) {
            $song_id = $1;
        }
        elsif ($line =~ /<span class="album-track-duration">([^<]*)</) {
            $song_duration = $1;
        }
        elsif ($line =~ /<span class="description album-track-name">([^<]*)</) {
            $song_name = $1;
            $videos .= "  $song_id - " . decode_entities($song_name) . " ($song_duration)\n";
        }
    }
}

print "\n";
print 'Videos de "' . decode_entities($artist_name) . '":';
print "\n\n";
print $videos;

exit;

No hay comentarios: