Exemplo n.º 1
0
        public void download(object sender, DoWorkEventArgs e)
        {
            while (queue.Count > 0)
            {
                Anime        anime   = queue.Dequeue();
                AnimeEpisode episode = anime.episode;

                Process          process   = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo();
                //startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                startInfo.FileName = "cmd.exe";
                string arguments    = "";
                string saveLocation = "";

                if (!string.IsNullOrEmpty(App.settings.saveLocation))
                {
                    //Ayarlardan video Adlandırma şeklini alıp videoyu ona göre adlandırma
                    saveLocation += App.settings.saveLocation + "\\";

                    string videoname = App.settings.VideoName;
                    if (!string.IsNullOrEmpty(videoname))
                    {
                        videoname     = videoname.Replace("%bolumadi", episode.episodename);
                        saveLocation += videoname + ".mp4";
                    }
                    arguments += "-o \"" + saveLocation + "\" ";
                    anime.episode.downloadLocation = saveLocation;
                }


                List <string> denemeListesi = new List <string>(); //bölümü indirmek için sahip olunan url ler listesi

                Dictionary <string, object> fansublar;
                if (episode.watchurl.StartsWith("{"))
                {
                    fansublar = JsonConvert.DeserializeObject <Dictionary <string, object> >(episode.watchurl);
                    foreach (string key in fansublar.Keys.ToList())
                    {
                        JsonObject fansub = JsonConvert.DeserializeObject <JsonObject>(fansublar[key].ToString());
                        foreach (string alternatif in fansub.Keys)
                        {
                            denemeListesi.Add(fansub[alternatif]);
                        }
                    }
                }
                else
                {
                    episode.watchurl = episode.watchurl.Replace("[", "").Replace("]", "");
                    denemeListesi.Add(episode.watchurl);
                }
                startInfo.WorkingDirectory = directory;
                foreach (string indirmeurlsi in denemeListesi)
                {
                    if (episode.watchurl.Contains("sibnet") && !arguments.Contains("--config-location"))
                    {
                        arguments += @" --config-location .\lib\sibnet.conf ";
                    }

                    startInfo.Arguments = @"/C .\lib\youtube-dl.exe " + arguments + indirmeurlsi;
                    Trace.WriteLine(startInfo.Arguments);
                    process.StartInfo = startInfo;
                    process.Start();
                    process.WaitForExit();

                    if (File.Exists(saveLocation))
                    {
                        manager.AddData(anime, SQLiteManager.dataType.downloadedAnime);
                        break;
                    }
                }

                if (!File.Exists(saveLocation))
                {
                    MessageBox.Show("Bölüm İndirilirken Bir Hata oluştu.");
                }
            }
        }