예제 #1
0
        public void Process(object obj)
        {
            Logger.WriteLine(Tokens.Info, "Cover search...");

            Tag tag = obj as Tag;

            try
            {
                GoogleImageQuery.ImageResult result = query.Query(BuildQuery(tag));

                if (!Object.ReferenceEquals(result, null))
                {
                    WriteCoverToDisc(tag, result);
                    CreatePictureTag(tag, result.Image, result.Url);
                }
                else
                {
                    Logger.WriteLine(Tokens.Info, "No results found!");
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLine(Tokens.Exception, ex);
            }
        }
예제 #2
0
        private void WriteCoverToDisc(Tag tag, GoogleImageQuery.ImageResult result)
        {
            string cachePath = Path.Combine(App.AppDataFolder, "Covers");

            if (!VirtualDrive.ExistsDirectory(cachePath))
            {
                // TODO: VirtualDrive
                VirtualDrive.CreateDirectory(cachePath);
            }

            TagEditor editor = new TagEditor(tag);
            string    url    = result.Url;
            string    suffix = url.Substring(url.Length - 3, 3);
            string    file   = Path.Combine(cachePath, dirNameGenerator.Name(editor.Get()) + "." + suffix);

            if (!File.Exists(file))
            {
                using (Stream stream = File.OpenWrite(file))
                {
                    stream.Write(result.Image, 0, result.Image.Length);
                }
            }
        }