Beispiel #1
0
        public PyObject CacheLoad(string section, string key, PyObject def = null)
        {
            //Debug.WriteLine("CacheLoad");
            if (ytdl.Options.CacheDir == null)
            {
                return(def);
            }
            string cachepath = Path.Combine(ytdl.Options.CacheDir, "cache.json");

            if (!File.Exists(cachepath))
            {
                return(def);
            }

            using (var stream = File.OpenRead(cachepath))
            {
                using (var reader = JsonDocument.Parse(stream))
                {
                    var bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, bytes.Length);
                    var xreader = new Utf8JsonReader(bytes);

                    if (reader.RootElement.TryGetProperty(section, out var sectElem))
                    {
                        if (sectElem.TryGetProperty(key, out var keyElem))
                        {
                            var    type    = Type.GetType(keyElem.GetProperty("type").GetString());
                            var    value   = keyElem.GetProperty("value").GetRawText();
                            object managed = JsonSerializer.Deserialize(value, type);
                            return(PythonCompat.ManagedObjectToPython(managed, type));
                        }
                    }
                    //Debug.WriteLine("def");
                    return(def);
                }
            }
        }