public bool GetInputStreamProperties(string asin, out string streamUrl, out string licUrl, out Dictionary<string, string> additionalTags)
{
//var content = GetATVDataJSON("GetASINDetails", "ASINList=" + asin);
//if (content == null)
//{
// streamUrl = licUrl = null;
// return false;
//}
string vMT = "Feature";
Dictionary<string, string> values = GetFlashVars(asin);
var urldata = GetUrldata("catalog/GetPlaybackResources", values, extra: true, vMT: vMT, opt: "&titleDecorationScheme=primary-content");
JObject playbackData = JObject.Parse(urldata.Data);
streamUrl = playbackData.SelectToken("audioVideoUrls.avCdnUrlSets[0].avUrlInfoList[0].url").Value<string>(); // Cloudfront
// Fix for missing DD+ audio streams, remove DeviceTypeID(?) part in url
Regex reCleanUrl = new Regex("(/d.*/).*/(video)");
streamUrl = reCleanUrl.Replace(streamUrl, "$1$2");
additionalTags = new Dictionary<string, string>();
for (int s = 0; ; s++)
{
//{"displayName":"German (Germany)","format":"DFXP","index":"0","languageCode":"de-DE","subtype":"dialog","type":"subtitle","url":"http://....dfxp","videoMaterialType":"Feature"},
var subtitleNode = playbackData.SelectToken("subtitleUrls[" + s + "]");
if (subtitleNode == null)
break;
string subtitlePath;
string lang = subtitleNode.SelectToken("languageCode").Value<string>();
string displayName = subtitleNode.SelectToken("displayName").Value<string>();
string value = subtitleNode.SelectToken("url").Value<string>();
string fakeFilename;
if (DownloadAndConvertSubtitle(asin, displayName, value, out fakeFilename, out subtitlePath))
{
additionalTags["subtitle_" + lang] = subtitlePath;
additionalTags["fakefilename"] = fakeFilename;
}
}
licUrl = GetUrldata("catalog/GetPlaybackResources", values, extra: true, vMT: vMT, dRes: "Widevine2License", retURL: true).Url;
return streamUrl != null && licUrl != null;
}