Hi, General improvements of the tool, previous patch integrated upstream:
http://cpansearch.perl.org/src/XAICRON/WWW-YouTube-Download-0.56/Changes new patch for better signatures support. Index: Makefile =================================================================== RCS file: /cvs/ports/www/p5-WWW-YouTube-Download/Makefile,v retrieving revision 1.10 diff -u -r1.10 Makefile --- Makefile 27 Apr 2013 14:29:08 -0000 1.10 +++ Makefile 27 Sep 2013 04:04:23 -0000 @@ -3,7 +3,7 @@ COMMENT = simple YouTube interface for downloading videos MODULES = cpan -DISTNAME = WWW-YouTube-Download-0.50 +DISTNAME = WWW-YouTube-Download-0.56 CATEGORIES = www MAINTAINER = Mikolaj Kucharski <miko...@kucharski.name> Index: distinfo =================================================================== RCS file: /cvs/ports/www/p5-WWW-YouTube-Download/distinfo,v retrieving revision 1.8 diff -u -r1.8 distinfo --- distinfo 27 Apr 2013 14:29:08 -0000 1.8 +++ distinfo 27 Sep 2013 04:04:23 -0000 @@ -1,2 +1,2 @@ -SHA256 (WWW-YouTube-Download-0.50.tar.gz) = n1w2E5c7wSdkGv7eroQcctZCPpXTzS8F9g0wqqYu9yE= -SIZE (WWW-YouTube-Download-0.50.tar.gz) = 19826 +SHA256 (WWW-YouTube-Download-0.56.tar.gz) = C3/97l4cKrT9dY5cdi2q/hd9psBUocUr+sbaxpmAgso= +SIZE (WWW-YouTube-Download-0.56.tar.gz) = 23453 Index: patches/patch-lib_WWW_YouTube_Download_pm =================================================================== RCS file: /cvs/ports/www/p5-WWW-YouTube-Download/patches/patch-lib_WWW_YouTube_Download_pm,v retrieving revision 1.5 diff -u -r1.5 patch-lib_WWW_YouTube_Download_pm --- patches/patch-lib_WWW_YouTube_Download_pm 27 Apr 2013 14:29:09 -0000 1.5 +++ patches/patch-lib_WWW_YouTube_Download_pm 27 Sep 2013 04:04:23 -0000 @@ -1,15 +1,65 @@ -$OpenBSD: patch-lib_WWW_YouTube_Download_pm,v 1.5 2013/04/27 14:29:09 sthen Exp $ +$OpenBSD$ -- support one more url type +- sync with youtube-dl 2013.09.24.2 +- fix for signature 83 based on yt-dl's automatic signatures ---- lib/WWW/YouTube/Download.pm.orig Fri Apr 19 18:50:43 2013 -+++ lib/WWW/YouTube/Download.pm Sat Apr 27 12:33:16 2013 -@@ -271,7 +271,7 @@ sub _suffix { +--- lib/WWW/YouTube/Download.pm.orig Tue Jul 30 08:14:47 2013 ++++ lib/WWW/YouTube/Download.pm Fri Sep 27 04:58:40 2013 +@@ -248,37 +248,36 @@ sub _sigdecode { + my @s = @_; - sub _video_id { - my $stuff = shift; -- if ($stuff =~ m{/.*?[?&;!]v=([^&#?=/;]+)}) { -+ if ($stuff =~ m{/.*?[?&;!](?:v|video_id)=([^&#?=/;]+)}) { - return $1; + # based on youtube_dl/extractor/youtube.py from yt-dl.org +- if (@s == 92) { +- return ($s[25], @s[3..24], $s[0], @s[26..41], $s[79], @s[43..78], $s[91], @s[80..82]); ++ if (@s == 93) { ++ return (reverse(@s[30..86]), $s[88], reverse(@s[6..28])); ++ } elsif (@s == 92) { ++ return ($s[25], @s[3..24], $s[0], @s[26..41], $s[79], @s[43..78], $s[91], @s[80..82]); ++ } elsif (@s == 91) { ++ return (reverse(@s[28..84]), $s[86], reverse(@s[6..26])); + } elsif (@s == 90) { +- return ($s[25], @s[3..24], $s[2], @s[26..39], $s[77], @s[41..76], $s[89], @s[78..80]); ++ return ($s[25], @s[3..24], $s[2], @s[26..39], $s[77], @s[41..76], $s[89], @s[78..80]); ++ } elsif (@s == 89) { ++ return (reverse(@s[79..84]), $s[87], reverse(@s[61..77]), $s[0], reverse(@s[4..59])); + } elsif (@s == 88) { +- return ($s[48], reverse(@s[68..81]), $s[82], reverse(@s[63..66]), $s[85], +- reverse(@s[49..61]), $s[67], reverse(@s[13..47]), $s[3], +- reverse(@s[4..11]), $s[2], $s[12]); ++ return (@s[7..27], $s[87], @s[29..44], $s[55], @s[46..54], $s[2], @s[56..86], $s[28]); + } elsif (@s == 87) { +- return (@s[4..22], $s[86], @s[24..84]); ++ return (@s[6..26], $s[4], @s[28..38], $s[27], @s[40..58], $s[2], @s[60..86]); + } elsif (@s == 86) { +- return (@s[2..62], $s[82], @s[64..81], $s[63]); ++ return (reverse(@s[73..80]), $s[16], reverse(@s[40..71]), $s[72], reverse(@s[17..38]), $s[82], reverse(@s[0..15])); + } elsif (@s == 85) { +- return (@s[2..7], $s[0], @s[9..20], $s[65], @s[22..64], $s[84], @s[66..81], $s[21]); ++ return (@s[3..10], $s[0], @s[12..54], $s[84], @s[56..83]); + } elsif (@s == 84) { +- return (reverse(@s[37..83]), $s[2], reverse(@s[27..35]), $s[3], +- reverse(@s[4..25]), $s[26]); ++ return (reverse(@s[71..78]), $s[14], reverse(@s[38..69]), $s[70], reverse(@s[15..36]), $s[80], reverse(@s[0..13])); + } elsif (@s == 83) { +- return ($s[6], @s[3..5], $s[33], @s[7..23], $s[0], @s[25..32], $s[53], @s[34..52], $s[24], @s[54..82]); ++ return (reverse(@s[64..80]), $s[0], reverse(@s[1..62]), $s[63]); + } elsif (@s == 82) { +- return ($s[36], reverse(@s[68..79]), $s[81], reverse(@s[41..66]), $s[33], +- reverse(@s[37..39]), $s[40], $s[35], $s[0], $s[67], +- reverse(@s[1..32]), $s[34]); ++ return (reverse(@s[74..80]), $s[81], reverse(@s[55..72]), $s[2], reverse(@s[44..53]), $s[0], reverse(@s[3..42]), $s[43], $s[1], $s[54]); + } elsif (@s == 81) { +- return ($s[56], reverse(@s[57..79]), $s[41], reverse(@s[42..55]), $s[80], +- reverse(@s[35..40]), $s[0], reverse(@s[30..33]), $s[34], +- reverse(@s[10..28]), $s[29], reverse(@s[1..8]), $s[9]); ++ return ($s[56], reverse(@s[57..79]), $s[41], reverse(@s[42..55]), $s[80], reverse(@s[35..40]), $s[0], reverse(@s[30..33]), $s[34], reverse(@s[10..28]), $s[29], reverse(@s[1..8]), $s[9]); ++ } elsif (@s == 80) { ++ return (@s[1..18], $s[0], @s[20..67], $s[19], @s[69..79]); + } elsif (@s == 79) { +- return ($s[54], reverse(@s[55..77]), $s[39], reverse(@s[40..53]), $s[78], +- reverse(@s[35..38]), $s[0], reverse(@s[30..33]), $s[34], +- reverse(@s[10..28]), $s[29], reverse(@s[1..8]), $s[9]); ++ return ($s[54], reverse(@s[55..77]), $s[39], reverse(@s[40..53]), $s[78], reverse(@s[35..38]), $s[0], reverse(@s[30..33]), $s[34], reverse(@s[10..28]), $s[29], reverse(@s[1..8]), $s[9]); } - elsif ($stuff =~ m{/(?:e|v|embed)/([^&#?=/;]+)}) { + + return (); # fail -- best regards q#