Esempio n. 1
0
        public void DownloadAllVideos(PDownload pDownload)
        {
            Broadcasts broadcasts = GetBroadcasts(pDownload.User);
            broadcasts.broadcasts = broadcasts.broadcasts.Where(b => b.available_for_replay || b.state == "RUNNING").ToList();
            if (pDownload.IsReverseOrder) broadcasts.broadcasts.Reverse();

            #region Selected Videos
            List<int> selectedVideos = pDownload.SelectedVideos;
            if (selectedVideos.Any())
            {
                List<Broadcast> selectedBroadcasts = new List<Broadcast>();
                selectedBroadcasts.AddRange(selectedVideos.Select(selectedVideo => broadcasts.broadcasts[selectedVideo]));
                broadcasts.broadcasts = selectedBroadcasts.ToList();
            }
            #endregion

            #region Selected Broadcasts
            List<string> selectedBroadcastsText = pDownload.SelectedBroadcasts;
            if (selectedBroadcastsText.Any())
            {
                broadcasts.broadcasts =
                    selectedBroadcastsText.Select(
                        selectedBroadcast => broadcasts.broadcasts.First(b => b.id == selectedBroadcast)).ToList();
            }
            #endregion

            Console.WriteLine(broadcasts.broadcasts.Count + " broadcasts found.");
            foreach (var broadcast in broadcasts.broadcasts)
            {
                DownloadVideos(broadcast, pDownload.DownloadLiveStream);
            }
        }
Esempio n. 2
0
        private void DownloadLiveStream(Broadcast broadcast, AccessPublic accessPublic)
        {
            List<string> chunklist = new List<string>();
            Uri httpsHlsUrl = new Uri(accessPublic.https_hls_url);
            string baseUrl = httpsHlsUrl.Scheme + "://" + httpsHlsUrl.DnsSafeHost + httpsHlsUrl.Segments[0] + httpsHlsUrl.Segments[1] + httpsHlsUrl.Segments[2] + httpsHlsUrl.Segments[3];
            bool liveStream = true;
            while (liveStream)
            {
                UpdateChunklist(broadcast, baseUrl, ref chunklist, ref liveStream);

                foreach (var chunk in chunklist.ToList())
                {
                    string message;
                    chunklist.Remove(chunk);
                    DownloadChunk(broadcast, baseUrl, chunk, out message);
                    Console.WriteLine(message);
                }
            }

            var pDownload = new PDownload
            {
                User = broadcast.username,
                Broadcast = broadcast.id,
                DownloadLiveStream = false
            };
            DownloadVideos(pDownload);
        }