Hoooray! (I think.) 
Here is the preliminary fix to address the latest YouTube change. This code is meant to be a drop-in replacement for the DecryptYouTubeCypher() method (located in either YouTubeToMp3Converter.class.php or VideoConverter.class.php), and it is intended for both the free and paid-for versions of my software:
Please let me know if this new code works for you. Thanks for your patience.

Here is the preliminary fix to address the latest YouTube change. This code is meant to be a drop-in replacement for the DecryptYouTubeCypher() method (located in either YouTubeToMp3Converter.class.php or VideoConverter.class.php), and it is intended for both the free and paid-for versions of my software:
PHP Code:
private function DecryptYouTubeCypher($signature)
{
$s = $signature;
$sigLength = strlen($s);
switch ($sigLength)
{
case 88:
$s = substr($s, 48, 1) . strrev(substr($s, 68, 14)) . substr($s, 82, 1) . strrev(substr($s, 63, 4)) . substr($s, 85, 1) . strrev(substr($s, 49, 13)) . substr($s, 67, 1) . strrev(substr($s, 13, 35)) . substr($s, 3, 1) . strrev(substr($s, 4, 8)) . substr($s, 2, 1) . substr($s, 12, 1);
break;
case 87:
$s = substr($s, 62, 1) . strrev(substr($s, 63, 20)) . substr($s, 83, 1) . strrev(substr($s, 53, 9)) . substr($s, 0, 1) . strrev(substr($s, 3, 49));
break;
case 86:
$s = substr($s, 2, 61) . substr($s, 82, 1) . substr($s, 64, 18) . substr($s, 63, 1);
break;
case 85:
$s = substr($s, 76, 1) . strrev(substr($s, 77, 6)) . substr($s, 83, 1) . strrev(substr($s, 61, 15)) . substr($s, 0, 1) . strrev(substr($s, 51, 9)) . substr($s, 1, 1) . strrev(substr($s, 3, 47));
break;
case 84:
$s = strrev(substr($s, 37, 47)) . substr($s, 2, 1) . strrev(substr($s, 27, 9)) . substr($s, 3, 1) . strrev(substr($s, 4, 22)) . substr($s, 26, 1);
break;
case 83:
$s = substr($s, 52, 1) . strrev(substr($s, 56, 26)) . substr($s, 2, 1) . strrev(substr($s, 53, 2)) . substr($s, 82, 1) . strrev(substr($s, 37, 15)) . substr($s, 55, 1) . strrev(substr($s, 3, 33)) . substr($s, 36, 1);
break;
case 82:
$s = substr($s, 36, 1) . strrev(substr($s, 68, 12)) . substr($s, 81, 1) . strrev(substr($s, 41, 26)) . substr($s, 33, 1) . strrev(substr($s, 37, 3)) . substr($s, 40, 1) . substr($s, 35, 1) . substr($s, 0, 1) . substr($s, 67, 1) . strrev(substr($s, 1, 32)) . substr($s, 34, 1);
break;
default:
$s = $signature;
}
return $s;
}
Comment