Example #1
0
        public Vine RetrieveVine(string permalink, string submitter = null)
        {
            Vine vine = new Vine()
            {
                Permalink = permalink,
                Submitter = submitter
            };

            // Get the vine code
            int startIndex = vine.Permalink.IndexOf("v/") + 2;
            int endIndex   = vine.Permalink.Length;

            for (int i = startIndex; i < vine.Permalink.Length; i++)
            {
                char character = vine.Permalink[i];
                if (!Char.IsLetterOrDigit(character))
                {
                    endIndex = i;
                    break;
                }
            }
            string videoCode = vine.Permalink.Substring(startIndex, endIndex - startIndex);

            ScrapingBrowser browser      = new ScrapingBrowser();
            WebResource     jsonResource = null;
            var             task         = Task.Run(() =>
            {
                jsonResource =
                    browser.DownloadWebResource(new Uri("https://archive.vine.co/posts/" + videoCode + ".json"));
            });

            bool isSuccess;

            try
            {
                isSuccess = task.Wait(TimeSpan.FromMilliseconds(2000));
            }
            catch (Exception e)
            {
                return(vine);
            }

            if (isSuccess)
            {
                JArray objects = JArray.Parse("[" + jsonResource.GetTextContent() + "]");
                vine.Description  = objects.First["description"].ToString();
                vine.VideoUrl     = objects.First["videoUrl"].ToString();
                vine.ThumbnailUrl = objects.First["thumbnailUrl"].ToString();
                vine.Created      = DateTime.Parse(objects.First["created"].ToString());
                vine.Loops        = FormatNumber(Int32.Parse(objects.First["loops"].ToString()));
                vine.Likes        = FormatNumber(Int32.Parse(objects.First["likes"].ToString()));
                vine.Username     = objects.First["username"].ToString();
                vine.Rating       = 0;
            }

            return(vine);
        }