Beispiel #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);
            }
        }
Beispiel #2
0
        private void btnDownload_Click(object sender, EventArgs e)
        {
            List<DataGridViewRow> selectedRows = grdBroadcast.SelectedRows.Cast<DataGridViewRow>().ToList();
            if (!selectedRows.Any()) return;
            var selectedBroadcasts = selectedRows.Select(r => new Broadcast
            {
                username = r.Cells[0].Value.ToString(),
                id = r.Cells[1].Value.ToString()
            }).ToList();

            PDownload pDownload = new PDownload
            {
                User = selectedBroadcasts.First().username,
                SelectedBroadcasts = selectedBroadcasts.Select(b => b.id).ToList()
            };
            using (VideoDownloader videoDownloader = new VideoDownloader())
            {
                videoDownloader.DownloadAllVideos(pDownload);
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            if(args.Length < 1) return;
            string user = args[0];
            string broadcast = "";
            List<int> selectedVideos = new List<int>();
            bool downloadReplayOnly = false;
            bool isReverseOrder = false;

            var p = new OptionSet
            {
                {"b|broadcast=", "the name of broadcast.", v => broadcast = v},
                {"ds|downloadselected=", "only selected videos downloaded, seperate with comma (e.g. 1,2,7), start index is 0", v => selectedVideos = v.Split(',').Select(int.Parse).ToList()},
                {"ro|replayonly", "download only replay videos", v => downloadReplayOnly = v != null},
                {"r|reverse", "download reverse order", v => isReverseOrder = v != null}
            };

            p.Parse(args);
            if(string.IsNullOrEmpty(user)) return;
            bool downloadSingle = !string.IsNullOrEmpty(broadcast);
            bool downloadSelectedVideos = selectedVideos.Any();
            if(downloadSelectedVideos && downloadSingle) return;

            PDownload pDownload = new PDownload
            {
                User = user,
                Broadcast = broadcast,
                SelectedVideos = selectedVideos,
                DownloadLiveStream = !downloadReplayOnly,
                IsReverseOrder = isReverseOrder
            };
            using (VideoDownloader videoDownloader = new VideoDownloader())
            {
                if (downloadSingle)
                    videoDownloader.DownloadVideos(pDownload);
                else
                    videoDownloader.DownloadAllVideos(pDownload);
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var periscopeApi = new PeriscopeApi();

            var loginTwitterRequest = new loginTwitterRequest
            {
            };
            var loginTwitter = periscopeApi.LoginTwitter(loginTwitterRequest);

            var userSearchRequest = new userSearchRequest
            {
                cookie = loginTwitter.cookie,
                search = args[0]
            };
            var userSearch = periscopeApi.UserSearch(userSearchRequest);

            var userBroadcastsRequest1 = new userBroadcastsRequest
            {
                cookie = loginTwitter.cookie,
                all = true,
                user_id = userSearch.First().id
            };
            var userBroadcasts = periscopeApi.UserBroadcasts(userBroadcastsRequest1);

            using (VideoDownloader videoDownloader = new VideoDownloader())
            {
                foreach (var userBroadcast in userBroadcasts)
                {
                    PDownload pDownload = new PDownload
                    {
                        User = userBroadcast.username,
                        Broadcast = userBroadcast.id,
                        DownloadLiveStream = true
                    };
                    videoDownloader.DownloadVideos(pDownload);
                }
            }
        }
Beispiel #5
0
 public void DownloadVideos(PDownload pDownload)
 {
     DownloadVideos(GetBroadcastInfo(pDownload.User, pDownload.Broadcast), pDownload.DownloadLiveStream);
 }
Beispiel #6
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);
        }