OnlineVideos.Sites.JSurf.ConnectorImplementations.AmazonPrime.Connectors.AmazonBrowserSession.GetInputStreamProperties C# (CSharp) Method

GetInputStreamProperties() public method

public GetInputStreamProperties ( string asin, string &streamUrl, string &licUrl, string>.Dictionary &additionalTags ) : bool
asin string
streamUrl string
licUrl string
additionalTags string>.Dictionary
return bool
        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;
        }

Usage Example

Exemplo n.º 1
0
        public bool GetInputStreamProperties(VideoInfo video, out string streamUrl, out string licenseUrl, out Dictionary <string, string> additionalTags)
        {
            DoLogin();
            ExtendedProperties trackingInfo = video.Other as ExtendedProperties;
            string             asin         = trackingInfo != null ? trackingInfo.Other :  video.Other as string ?? video.VideoUrl;

            return(_browserSession.GetInputStreamProperties(asin, out streamUrl, out licenseUrl, out additionalTags));
        }