This patch addresses a problem first reported here: http://lists.infradead.org/pipermail/get_iplayer/2011-October/002075.html
This patch has been incorporated into the get_iplayer Git repo. Instructions for updating are here: https://github.com/dinkypumpkin/get_iplayer/wiki/instructions Commit message and patch follow. In Windows, command line parameters for external applications are processed according to Microsoft C/C++ parameter parsing rules. This means that parameter values with embedded double quotes must be enclosed in double quotes and the embedded double quotes must be escaped. This patch implements the necessary escaping for AtomicParsley and id3v2 parameters. It should not be necessary for other external applications (e.g., RTMPDump) since they will never receive parameter values with embedded double quotes. --- get_iplayer | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/get_iplayer b/get_iplayer index 640c66b..f726ca0 100755 --- a/get_iplayer +++ b/get_iplayer @@ -9483,6 +9483,20 @@ sub tags_from_metadata { return $tags; } +# escape/enclose embedded quotes in command line parameters +sub tags_escape_quotes { + my ($tags) = @_; + # only necessary for Windows + if ( $^O =~ /^MSWin32$/ ) { + while ( my ($key, $val) = each %$tags ) { + if ($val =~ /"/) { + $val =~ s/"/\\"/g; + $tags->{$key} = '"'.$val.'"'; + } + } + } +} + # add metadata tag to file sub tag_file { my ($self, $meta) = @_; @@ -9587,6 +9601,8 @@ sub tag_file_id3_basic { # make safe lyrics text as well # can't use $tags->{lyrics} because of colons in links $tags->{longDescription} =~ s/:/_/g; + # handle embedded quotes + tags_escape_quotes($tags); # encode for id3v2 while ( my ($key, $val) = each %{$tags} ) { $tags->{$key} = encode("iso-8859-1", $val); @@ -9629,6 +9645,8 @@ sub tag_file_mp4 { main::logger "INFO: MP4 tagging \U$meta->{ext}\E file\n"; # pretty copyright for MP4 $tags->{copyright} = "\xA9 $tags->{copyright}" if $tags->{copyright}; + # handle embedded quotes + tags_escape_quotes($tags); # encode metadata for atomicparsley my $encoding = $opt->{tag_utf8} ? "utf8" : "iso-8859-1"; while ( my ($key, $val) = each %$tags ) { -- 1.7.7 _______________________________________________ get_iplayer mailing list [email protected] http://lists.infradead.org/mailman/listinfo/get_iplayer

