Пример #1
0
        public static async Task <JObject> GetVideoJson(long id)
        {
            List <string> args = new List <string>()
            {
                "-J", "https://www.twitch.tv/videos/" + id,
            };
            var data = await ExternalProgramExecution.RunProgram(@"yt-dlp", args.ToArray());

            return(JObject.Parse(data.StdOut));
        }
Пример #2
0
        public static async Task <(RetrieveVideoResult result, IVideoInfo info)> RetrieveVideo(string id, string usernameIfNotInJson, bool wantCookies)
        {
            List <string> args = new List <string>()
            {
                "-j", "https://www.youtube.com/watch?v=" + id,
            };

            if (wantCookies)
            {
                args.Add("--cookies");
                args.Add(@"d:\cookies.txt");
            }
            var data = await ExternalProgramExecution.RunProgram(@"yt-dlp", args.ToArray());

            var json   = JObject.Parse(data.StdOut);
            var parsed = ParseFromJson(json, false, usernameIfNotInJson);

            return(parsed.success ? RetrieveVideoResult.Success : RetrieveVideoResult.ParseFailure, parsed.info);
        }
Пример #3
0
        public static async Task <List <IVideoInfo> > RetrieveVideosFromParameterString(string parameter, bool flat, string usernameIfNotInJson)
        {
            string raw = "";

            try {
                List <string> args = new List <string>();
                if (flat)
                {
                    args.Add("--flat-playlist");
                }
                args.Add("--ignore-errors");
                args.Add("-J");
                args.Add(parameter);
                ExternalProgramExecution.RunProgramReturnValue data = await ExternalProgramExecution.RunProgram(@"yt-dlp", args.ToArray());

                raw = data.StdOut;
            } catch (ExternalProgramReturnNonzeroException ex) {
                // try anyway, this gets thrown when a video is unavailable for copyright reasons
                raw = ex.StdOut;
            }
            var json               = JObject.Parse(raw);
            var entries            = json["entries"];
            List <IVideoInfo> list = new List <IVideoInfo>();

            foreach (var entry in entries)
            {
                try {
                    var d = ParseFromJson(entry, flat, usernameIfNotInJson);
                    if (d.success)
                    {
                        list.Add(d.info);
                    }
                } catch (Exception ex) {
                    Console.WriteLine("Failed to parse video from Youtube: " + ex.ToString());
                }
            }
            return(list);
        }