[libwww-youtube-download-perl] 01/05: Imported Upstream version 0.56
Angel Abad
angel at alioth.debian.org
Sun Aug 11 10:17:57 UTC 2013
This is an automated email from the git hooks/post-receive script.
angel pushed a commit to branch master
in repository libwww-youtube-download-perl.
commit d21e09f95cc9fd75eb9a27e5c79a2743a971f8f8
Author: Angel Abad <angelabad at gmail.com>
Date: Sun Aug 11 12:08:14 2013 +0200
Imported Upstream version 0.56
---
Changes | 228 +++++++++++++++++++++++--------------------
MANIFEST | 1 +
META.json | 12 ++-
META.yml | 12 ++-
lib/WWW/YouTube/Download.pm | 71 +++++++++-----
t/playlist_id.t | 10 ++
t/signatures.t | 78 +++++++++++++++
7 files changed, 275 insertions(+), 137 deletions(-)
diff --git a/Changes b/Changes
index fb75b80..adfb0d3 100644
--- a/Changes
+++ b/Changes
@@ -1,159 +1,177 @@
-Revision history for Perl extension WWW::YouTube::Download
+Revision history for Perl module WWW::YouTube::Download
+
+0.56 2013-07-30T07:14:40Z
+ - Fixed typo: $Carp::Intrenal -> $Carp::Internal (Syaltut++)
+ - Changes file reformatted as per CPAN::Changes::Spec (neilbowers++)
+
+0.55 2013-07-27T09:21:38Z
+ - Changed signature encoding (kucharskim++)
0.54 2013-07-05T18:29:31Z
- - If unavailable video, croak with an appropriate error message. (kucharskim++)
- - Support encrypted signature video. (kucharskim++)
+ - If unavailable video, croak with an appropriate error message.
+ (kucharskim++)
+ - Support encrypted signature video. (kucharskim++)
0.53 2013-06-05T16:05:56Z
- - Various improvements to youtube-playlists (kucharskim++)
+ - Various improvements to youtube-playlists (kucharskim++)
0.52 2013-05-05T16:18:54Z
- - Added playlist_id() and video_id() method (kucharskim++)
+ - Added playlist_id() and video_id() method (kucharskim++)
0.51 2013-05-03T07:49:29Z
- - Support new url (mikolaj++)
+ - Support new url (mikolaj++)
0.50 2013-04-19T17:50:39Z
- - repackaging
+ - repackaging
0.49 2013-04-09T21:13:56Z
- - repacking
+ - repacking
0.48 2013-04-09T21:09:55Z
- - Fixed parsing problem on youtube-playlists (mikolaj++)
+ - Fixed parsing problem on youtube-playlists (mikolaj++)
+
+0.47 2013-04-02 02:06:07
+ - Added some documentation and added eg/menu.pl (polettix++)
+
+0.46 2013-03-24 15:34:27
+ - YouTube's design was changed (vjp++, yusukebe++)
-0.47 Tue Apr 2 02:06:07 2013
- - Added some documentation and added eg/menu.pl (polettix++)
+0.45 2013-02-10 02:14:09
+ - New substitution variable {user} (isync++)
-0.46 Sun Mar 24 15:34:27 2013
- - YouTube's design was changed (vjp++, yusukebe++)
+0.44 2013-01-19 18:29:58
+ - added proxy support (isync++)
-0.45 Sun Feb 10 02:14:09 2013
- - New substitution variable {user} (isync++)
+0.43 2013-01-05 01:43:17
+ - fixed grammar (mokko++)
+ - using Module::Build
-0.44 Sat Jan 19 18:29:58 2013
- - added proxy support (isync++)
+0.42 2012-11-16 21:35:31
+ - fixed "failed to extract JSON data" (ks0608++)
+ - fixed RT: 81068 (panic83++)
-0.43 Sat Jan 5 01:43:17 2013
- - fixed grammar (mokko++)
- - using Module::Build
+0.41 2012-10-04 00:44:13
+ - follow the change of site (mikolaj++, yusukebe++)
+ - fixed color problems on scripts (mikolaj++)
+ - fixed RT 79931 (HMBRAND++)
-0.42 Fri Nov 16 21:35:31 2012
- - fixed "failed to extract JSON data" (ks0608++)
- - fixed RT: 81068 (panic83++)
+0.40 2012-01-22 16:54:53
+ - Fixed a problem that did not works, because YouTube's design was changed.
+ (ks0608++, zentooo++)
-0.41 Thu Oct 4 00:44:13 2012
- - follow the change of site (mikolaj++, yusukebe++)
- - fixed color problems on scripts (mikolaj++)
- - fixed RT 79931 (HMBRAND++)
+0.39 2012-01-18 01:28:00
+ - remove suffix from youtube-download.pl and youtube-playlists.pl
+ (mikolaj++)
-0.40 Sun Jan 22 16:54:53 2012
- - Fixed a problem that did not works, because YouTube's design was changed.
- (ks0608++, zentooo++)
+0.38 2011-12-08 00:44:52
+ - fix typo (mikolaj++)
+ - remove wrong code (mikolaj++)
-0.39 Wed Jan 18 01:28:00 2012
- - remove suffix from youtube-download.pl and youtube-playlists.pl (mikolaj++)
+0.37 2011-12-07 02:33:23
+ - fix wrong characters in filename in youtube-download.pl (mikolaj++)
+ - fix doc in youtube-download.pl (mikolaj++)
+ - file_name option is DEPRECATED
-0.38 Thu Dec 8 00:44:52 2011
- - fix typo (mikolaj++)
- - remove wrong code (mikolaj++)
+0.36 2011-10-31 02:45:48
+ - fix default filename problem in youtube-download.pl
-0.37 Wed Dec 7 02:33:23 2011
- - fix wrong characters in filename in youtube-download.pl (mikolaj++)
- - fix doc in youtube-download.pl (mikolaj++)
- - file_name option is DEPRECATED
+0.35 2011-10-18 00:28:58
+ - fix typo in youtube-playlists.pl (rt:71721)
-0.36 Mon Oct 31 02:45:48 2011
- - fix default filename problem in youtube-download.pl
+0.34 2011-10-15 16:14:57
+ - workaround for win32
+ - fix suffix problem
-0.35 Tue Oct 18 00:28:58 2011
- - fix typo in youtube-playlists.pl (rt:71721)
+0.33 2011-10-12 01:17:34
+ - added youtube-download.pl and youtube-playlist.pl (request by st3vil++)
+ - fix doc
-0.34 Sat Oct 15 16:14:57 2011
- - workaround for win32
- - fix suffix problem
+0.32 2011-08-23 01:52:20
+ - added LICENSE file (no code change)
-0.33 Wed Oct 12 01:17:34 2011
- - added youtube-download.pl and youtube-playlist.pl (request by st3vil++)
- - fix doc
+0.31 2011-08-23 00:25:02
+ - added fmt 38 to .mp4 (mikolaj++)
-0.32 Tue Aug 23 01:52:20 2011
- - added LICENSE file (no code change)
+0.30 2011-08-07 15:25:11
+ - cleanup (mikolaj++)
-0.31 Tue Aug 23 00:25:02 2011
- - added fmt 38 to .mp4 (mikolaj++)
+0.29 2011-08-05 01:29:27
+ - fixed a problem that did not works, becouse changed YouTube's design.
+ (katsuhito konishi++)
-0.30 Sun Aug 7 15:25:11 2011
- - cleanup (mikolaj++)
+0.28 2011-08-04 00:03:58
+ - fixed a problem that did not works, becouse changed YouTube's design.
+ (mikolaj++)
-0.29 Fri Aug 5 01:29:27 2011
- - fixed a problem that did not works, becouse changed YouTube's design. (katsuhito konishi++)
+0.27 2011-05-29 23:32:31
+ - fixed garbled (akiym++)
+ - fixed typo (akiym++)
-0.28 Thu Aug 4 00:03:58 2011
- - fixed a problem that did not works, becouse changed YouTube's design. (mikolaj++)
+0.26 2011-04-20 01:34:55
+ - fixed scrape problem (reported by Octavian++)
-0.27 Sun May 29 23:32:31 2011
- - fixed garbled (akiym++)
- - fixed typo (akiym++)
+0.25 2011-03-19 00:39:41
+ - added few more match URLs (mikolaj++)
-0.26 Wed Apr 20 01:34:55 2011
- - fixed scrape problem (reported by Octavian++)
+0.24 2011-03-04 01:45:20
+ - fixed could not fetch json data problem (akiym++)
-0.25 Sat Mar 19 00:39:41 2011
- - added few more match URLs (mikolaj++)
+0.23 2011-02-22 00:00:22
+ - supported any video urls (mikolaj++)
-0.24 Fri Mar 4 01:45:20 2011
- - fixed could not fetch json data problem (akiym++)
+0.22 2011-01-05 00:17:54
+ - Fixed a problem that can not download videos there.
+ (reported by Octavian)
-0.23 Tue Feb 22 00:00:22 2011
- - supported any video urls (mikolaj++)
+0.21 2010-12-30 15:28:51
+ - fixed bug for _video_id(). If already had $1 is defined,
+ was returned $1 without matches. (woremacx++)
-0.22 Wed Jan 5 00:17:54 2011
- - Fixed a problem that can not download videos there. (reported by Octavian)
+0.20 2010-12-15 00:57:43
+ - YouTube's API had change, maybe fixed it.
-0.21 Thu Dec 30 15:28:51 2010
- - fixed bug for _video_id(). If already had $1 is defined, was returned $1 without matches. (woremacx++)
+0.16 2010-10-17 18:17:57
+ - Required Text::More 0.96 later
+ - fixed POD spell miss
-0.20 Wed Dec 15 00:57:43 2010
- - YouTube's API had change, maybe fixed it.
+0.15 2010-08-11 00:14:53
+ - YouTube's API has changed so I fixed it. (reported by Bruce David)
-0.16 Sun Oct 17 18:17:57 2010
- - Required Text::More 0.96 later
- - fixed POD spell miss
+0.14 2010-05-07 02:50:42
+ - typo fix
+ - wrote pod
-0.15 Wed Aug 11 00:14:53 2010
- - YouTube's API has changed so I fixed it. (reported by Bruce David)
+0.13 2010-04-10 18:20:05
+ - Each instance to create a LWP::UserAgent. # thx kuniyoshi
-0.14 Fri May 7 02:50:42 2010
- - typo fix
- - wrote pod
+0.12 2010-04-03 16:06:33
+ - upload miss X(
-0.13 Sat Apr 10 18:20:05 2010
- - Each instance to create a LWP::UserAgent. # thx kuniyoshi
+0.11 2010-04-03 15:02:25
+ - added ua setter/getter.
+ using CGI.
-0.12 Sat Apr 3 16:06:33 2010
- - upload miss X(
+0.10 2010-04-03 02:56:18
+ - rewrite all
-0.11 Sat Apr 3 15:02:25 2010
- - added ua setter/getter.
- using CGI.
+0.07 2010-03-01 00:11:55
+ - supported FULL HD quality
-0.10 Sat Apr 3 02:56:18 2010
- - rewrite all
+0.06 2009-11-08 00:46:55
+ - Youtube respond to changes in
+
+0.05 2009-10-12 14:58:23
+ - Youtube respond to changes in
-0.07 Mon Mar 1 00:11:55 2010
- - supported FULL HD quality
+0.04 2011-08-14
+ - Changes unknown
-0.06 Sun Nov 8 00:46:55 2009
- - Youtube respond to changes in
-
-0.05 Mon Oct 12 14:58:23 2009
- - Youtube respond to changes in
+0.03 2011-08-12
+ - Changes unknown
-0.03 ~ 0.04 lost X(
+0.02 2009-06-06 21:04:17
+ - added 'fmt' field
-0.02 Sat Jun 6 21:04:17 2009
- - added 'fmt' field
+0.01 2009-04-04 16:26:29
+ - original version
-0.01 Sat Apr 4 16:26:29 2009
- - original version
diff --git a/MANIFEST b/MANIFEST
index a5de1b5..9c3dad8 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -13,6 +13,7 @@ lib/WWW/YouTube/Download.pm
minil.toml
t/00_compile.t
t/playlist_id.t
+t/signatures.t
t/user_id.t
t/video_id.t
t/video_user.t
diff --git a/META.json b/META.json
index 1123fd6..068604c 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
"xaicron <xaicron {@} cpan.org>"
],
"dynamic_config" : 0,
- "generated_by" : "Minilla/v0.5.5",
+ "generated_by" : "Minilla/v0.5.6",
"license" : "perl_5",
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
@@ -59,7 +59,7 @@
"provides" : {
"WWW::YouTube::Download" : {
"file" : "lib/WWW/YouTube/Download.pm",
- "version" : "0.54"
+ "version" : "0.56"
}
},
"release_status" : "stable",
@@ -69,11 +69,11 @@
},
"homepage" : "https://github.com/xaicron/p5-www-youtube-download",
"repository" : {
- "url" : "git://github.com/xaicron/p5-www-youtube-download",
+ "url" : "git://github.com/xaicron/p5-www-youtube-download.git",
"web" : "https://github.com/xaicron/p5-www-youtube-download"
}
},
- "version" : "0.54",
+ "version" : "0.56",
"x_contributors" : [
"akiym <akiyama at 8ant.org>",
"Maurice <mauricemengel at gmail.com>",
@@ -83,6 +83,8 @@
"Flavio Poletti <flavio at polettix.it>",
"TANIGUCHI Takaki <takaki at asis.media-as.org>",
"Mikolaj Kucharski <mikolaj at kucharski.name>",
- "xaicron <xaicron at gmail.com>"
+ "Neil Bowers <neil at bowers.com>",
+ "Ahmad Syaltut <Isyaltut at gmail.com>",
+ "Yuji Shimada <xaicron at gmail.com>"
]
}
diff --git a/META.yml b/META.yml
index 070b99d..0d99b94 100644
--- a/META.yml
+++ b/META.yml
@@ -9,7 +9,7 @@ configure_requires:
CPAN::Meta::Prereqs: 0
Module::Build: 0.38
dynamic_config: 0
-generated_by: 'Minilla/v0.5.5, CPAN::Meta::Converter version 2.130880'
+generated_by: 'Minilla/v0.5.6, CPAN::Meta::Converter version 2.131560'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -27,7 +27,7 @@ no_index:
provides:
WWW::YouTube::Download:
file: lib/WWW/YouTube/Download.pm
- version: 0.54
+ version: 0.56
requires:
HTML::Entities: 0
JSON: 0
@@ -40,8 +40,8 @@ requires:
resources:
bugtracker: https://github.com/xaicron/p5-www-youtube-download/issues
homepage: https://github.com/xaicron/p5-www-youtube-download
- repository: git://github.com/xaicron/p5-www-youtube-download
-version: 0.54
+ repository: git://github.com/xaicron/p5-www-youtube-download.git
+version: 0.56
x_contributors:
- 'akiym <akiyama at 8ant.org>'
- 'Maurice <mauricemengel at gmail.com>'
@@ -51,4 +51,6 @@ x_contributors:
- 'Flavio Poletti <flavio at polettix.it>'
- 'TANIGUCHI Takaki <takaki at asis.media-as.org>'
- 'Mikolaj Kucharski <mikolaj at kucharski.name>'
- - 'xaicron <xaicron at gmail.com>'
+ - 'Neil Bowers <neil at bowers.com>'
+ - 'Ahmad Syaltut <Isyaltut at gmail.com>'
+ - 'Yuji Shimada <xaicron at gmail.com>'
diff --git a/lib/WWW/YouTube/Download.pm b/lib/WWW/YouTube/Download.pm
index f1fd23e..8f77594 100644
--- a/lib/WWW/YouTube/Download.pm
+++ b/lib/WWW/YouTube/Download.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use 5.008001;
-our $VERSION = '0.54';
+our $VERSION = '0.56';
use Carp qw(croak);
use URI ();
@@ -13,7 +13,7 @@ use JSON;
use HTML::Entities qw/decode_entities/;
use HTTP::Request;
-$Carp::Intrenal{ (__PACKAGE__) }++;
+$Carp::Internal{ (__PACKAGE__) }++;
use constant DEFAULT_FMT => 18;
@@ -220,7 +220,7 @@ sub _get_args {
for my $line (split "\n", $content) {
next unless $line;
if ($line =~ /the uploader has not made this video available in your country/i) {
- Carp::croak 'Video not available in your country.';
+ croak 'Video not available in your country';
}
elsif ($line =~ /^.+ytplayer\.config\s*=\s*({.*})/) {
$data = JSON->new->utf8(1)->decode($1);
@@ -228,7 +228,7 @@ sub _get_args {
}
}
- croak 'failed to extract JSON data.' unless $data->{args};
+ croak 'failed to extract JSON data' unless $data->{args};
return $data->{args};
}
@@ -244,25 +244,52 @@ sub _parse_fmt_map {
return $fmt_map;
}
-sub _swapelement {
- my ($pos, @list) = @_;
- my $first = $list[0];
- my $other = $list[$pos % scalar(@list)];
- $list[0] = $other;
- $list[$pos] = $first;
- return @list;
+sub _sigdecode {
+ my @s = @_;
+
+ # 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]);
+ } elsif (@s == 90) {
+ return ($s[25], @s[3..24], $s[2], @s[26..39], $s[77], @s[41..76], $s[89], @s[78..80]);
+ } 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]);
+ } elsif (@s == 87) {
+ return (@s[4..22], $s[86], @s[24..84]);
+ } elsif (@s == 86) {
+ return (@s[2..62], $s[82], @s[64..81], $s[63]);
+ } elsif (@s == 85) {
+ return (@s[2..7], $s[0], @s[9..20], $s[65], @s[22..64], $s[84], @s[66..81], $s[21]);
+ } elsif (@s == 84) {
+ return (reverse(@s[37..83]), $s[2], reverse(@s[27..35]), $s[3],
+ reverse(@s[4..25]), $s[26]);
+ } 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]);
+ } 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]);
+ } 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]);
+ } 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 (); # fail
}
-# taken from https://gist.github.com/anonymous/e40cb4a1ba3c71f16c05
-sub _sigdecode {
+sub _getsig {
my $sig = shift;
- Carp::croak 'Unable to find signature.' unless $sig;
- my @sig = split(//, $sig);
- @sig = reverse(_swapelement(52, @sig));
- @sig = @sig[3..$#sig];
- @sig = reverse(_swapelement(21, @sig));
- @sig = @sig[3..$#sig];
- return join('', reverse(@sig));
+ croak 'Unable to find signature' unless $sig;
+ my @sig = _sigdecode(split(//, $sig));
+ croak "Unable to decode signature $sig of length " . length($sig) unless @sig;
+ return join('', @sig);
}
sub _parse_stream_map {
@@ -272,7 +299,7 @@ sub _parse_stream_map {
my $uri = URI->new;
$uri->query($stuff);
my $query = +{ $uri->query_form };
- my $sig = $query->{sig} || _sigdecode($query->{s});
+ my $sig = $query->{sig} || _getsig($query->{s});
my $url = $query->{url};
$fmt_url_map->{$query->{itag}} = $url.'&signature='.$sig;
}
@@ -319,7 +346,7 @@ sub video_id {
sub playlist_id {
my ($self, $stuff) = @_;
return unless $stuff;
- if ($stuff =~ m{/.*?[?&;!]list=([FP]L[^&#?=/;]+)}) {
+ if ($stuff =~ m{/.*?[?&;!]list=([^&#?=/;]+)}) {
return $1;
}
elsif ($stuff =~ m{^\s*([FP]L[\w\-]+)\s*$}) {
diff --git a/t/playlist_id.t b/t/playlist_id.t
index 183fdea..eccd424 100644
--- a/t/playlist_id.t
+++ b/t/playlist_id.t
@@ -19,6 +19,11 @@ test_playlist_id(
);
test_playlist_id(
+ 'http://www.youtube.com/watch?v=9VV8sgVSZNQ&list=ALHTd1VmZQRNpEtPhKH9FrcB_S6domiCtv',
+ 'ALHTd1VmZQRNpEtPhKH9FrcB_S6domiCtv'
+);
+
+test_playlist_id(
'http://www.youtube.com/playlist?list=PLUyiyCkoNwG8C_4ljTZWYYxmw7emk0W-f',
'PLUyiyCkoNwG8C_4ljTZWYYxmw7emk0W-f'
);
@@ -29,6 +34,11 @@ test_playlist_id(
);
test_playlist_id(
+ 'ALHTd1VmZQRNpEtPhKH9FrcB_S6domiCtv',
+ 'ALHTd1VmZQRNpEtPhKH9FrcB_S6domiCtv'
+);
+
+test_playlist_id(
'PLu-EVkxXzIVQp07QyLO0qFNQjBHkHwPf2',
'PLu-EVkxXzIVQp07QyLO0qFNQjBHkHwPf2'
);
diff --git a/t/signatures.t b/t/signatures.t
new file mode 100644
index 0000000..2ad4d8f
--- /dev/null
+++ b/t/signatures.t
@@ -0,0 +1,78 @@
+use strict;
+use warnings;
+use Test::More;
+use WWW::YouTube::Download;
+
+sub test_signature_decode {
+ my ($content, $expects) = @_;
+ my $sig = WWW::YouTube::Download::_getsig($content);
+ is $sig, $expects;
+}
+
+# 92
+test_signature_decode(
+ 'F9F9B6E6FD47029957AB911A964CC20D95A181A5D37A2DBEFD67D403DB0E8BE4F4910053E4E8A79.0B70B.0B80B8',
+ '69B6E6FD47029957AB911A9F4CC20D95A181A5D3.A2DBEFD67D403DB0E8BE4F4910053E4E8A7980B7',
+);
+
+# 90
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<"`',
+ 'mrtyuioplkjhgfdsazxcvbne1234567890QWER[YUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={`]}|',
+);
+
+# 88
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<',
+ 'J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej',
+);
+
+# 87
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$^&*()_-+={[]}|:;?/>.<',
+ 'tyuioplkjhgfdsazxcv<nm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$^&*()_-+={[]}|:;?/>',
+);
+
+# 86
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[|};?/>.<',
+ 'ertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!/#$%^&*()_-+={[|};?@',
+);
+
+# 85
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[};?/>.<',
+ 'ertyuiqplkjhgfdsazx$vbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#<%^&*()_-+={[};?/c',
+);
+
+# 84
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[};?>.<',
+ '<.>?;}[{=+-_)(*&^%$#@!MNBVCXZASDFGHJKLPOIUYTREWe098765432rmnbvcxzasdfghjklpoiuyt1',
+);
+
+# 83
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!#$%^&*()_+={[};?/>.<',
+ 'urty8ioplkjhgfdsazxcvbqm1234567S90QWERTYUIOPLKJHGFDnAZXCVBNM!#$%^&*()_+={[};?/>.<',
+);
+
+# 82
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.<',
+ 'Q>/?;}[{=+-(*<^%$#@!MNBVCXZASDFGHKLPOIUY8REWT0q&7654321mnbvcxzasdfghjklpoiuytrew9',
+);
+
+# 81
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.',
+ 'C>/?;}[{=+-(*&^%$#@!MNBVYXZASDFGHKLPOIU.TREWQ0q87659321mnbvcxzasdfghjkl4oiuytrewp',
+);
+
+# 79
+test_signature_decode(
+ 'qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/',
+ 'Z?;}[{=+-(*&^%$#@!MNBVCXRASDFGHKLPOIUYT/EWQ0q87659321mnbvcxzasdfghjkl4oiuytrewp',
+);
+
+done_testing;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libwww-youtube-download-perl.git
More information about the Pkg-perl-cvs-commits
mailing list