private void RenderOnFinished()
 {
     Task.Run(() => {
         bool isLoaded = true;
         Dispatcher.Invoke(() => { isLoaded = IsLoaded; });
         while (isLoaded)
         {
             var list = TorrentDatabase.Load().Where(x => x.HasFinished).ToList();
             list.Reverse();
             if (list.Count > uielements.Count)
             {
                 var torrents = new List <Torrent>();
                 uielements.Values.ToList().ForEach(x => torrents.Add(x));
                 List <Torrent> changes = list.Where(x => !torrents.Contains(x)).ToList();
                 foreach (var item in changes)
                 {
                     Dispatcher.Invoke(() => {
                         FinishedTorrentUserControl tcu = new FinishedTorrentUserControl(item);
                         tcu.Height  = 65;
                         tcu.Margin  = new Thickness(10, 0, 10, 0);
                         tcu.Opacity = 0;
                         SecondPanel.Children.Add(tcu);
                         var sb = (Storyboard)FindResource("OpacityUp");
                         sb.Begin(tcu);
                         uielements.Add(tcu, item);
                     });
                 }
             }
             Thread.Sleep(2000);
             Dispatcher.Invoke(() => { isLoaded = IsLoaded; });
         }
     });
 }
Esempio n. 2
0
        /// <summary>
        /// Stop torrent from being active
        /// </summary>
        /// <param name="deleteFiles"></param>
        public void Remove(bool deleteFiles)
        {
            string magnet = TorrentSource.Magnet;

            TorrentSession.RemoveTorrent(Handle, deleteFiles);
            TorrentDatabase.Remove(magnet);
            torrents.Remove(this);
        }
Esempio n. 3
0
        /// <summary>
        /// Stops torrent and moves it to the right directory
        /// </summary>
        public async void StopAndMove()
        {
            TorrentSource.Name = Handle.TorrentFile.Name;
            await Renamer.RenameAfterDownload(this);

            TorrentSource.FinishedAt  = DateTime.Now.ToString("dd.MM.yyyy HH:mm");
            TorrentSource.HasFinished = true;
            TorrentDatabase.Edit(TorrentSource.Magnet, TorrentSource);
            torrents.Remove(this);
        }
Esempio n. 4
0
        /// <summary>
        /// Continues all unifinished torrents
        /// </summary>
        public async static void ContinueUnfinished()
        {
            var torrents = TorrentDatabase.Load();

            torrents = torrents.Where(x => x.HasFinished == false).ToList();
            foreach (var item in torrents)
            {
                TorrentDatabase.Remove(item.Magnet);
                TorrentDownloader downloader = new TorrentDownloader(item);
                await downloader.Download();
            }
        }
        private async void Grid_Loaded(object sender, RoutedEventArgs e)
        {
            MainWindow.HideContent();
            Helper.DisableScreenSaver();
            MainWindow.videoPlayback = true;
            media                      = new FFProbe();
            media.ToolPath             = Environment.GetFolderPath(SpecialFolder.ApplicationData);
            VolumeSlider.Value         = Player.Volume = Properties.Settings.Default.Volume;
            VolumeSlider.ValueChanged += VolumeSlider_ValueChanged;
            Focus();
            Player.MediaOpened += (s, ev) => MediaOpenedEvent();
            while (true)
            {
                Animate();
                await Task.Run(() => {
                    Thread.Sleep(1080);
                });

                file = GetSource();
                if (file != null && downloader.Status.Progress > 0.01)
                {
                    try {
                        var duration   = media.GetMediaInfo(file).Duration.TotalSeconds;
                        var downloaded = duration * downloader.Status.Progress;
                        if (File.Exists(file) && duration != 0 && downloaded > 10)
                        {
                            Player.Source = new Uri(file);
                            Player.Stop();
                            break;
                        }
                    } catch (Exception) { }
                }
            }
            TorrentDatabase.Save(downloader.TorrentSource);

            Animate();
            await Task.Delay(1080);

            Player.MediaFailed += (s, ev) => MediaFailedEvent();
            Player.MediaEnded  += (s, ev) => MediaFinishedEvent();
            var sb    = (Storyboard)FindResource("OpacityDown");
            var clone = sb.Clone();

            clone.Completed += (s, ev) => {
                Middle.Visibility = Visibility.Collapsed;
            };
            sb.Begin(Middle);
        }
Esempio n. 6
0
        private TorrentDownloader DownloadLocal(bool sequential)
        {
            if (TorrentSession == null)
            {
                TorrentSession = new Session();
                TorrentSession.ListenOn(6881, 6889);
            }
            var torrentParams = new AddTorrentParams();

            torrentParams.SavePath = GetDownloadPath();
            torrentParams.Url      = TorrentSource.Magnet;
            Handle = TorrentSession.AddTorrent(torrentParams);
            SetDownloadSpeedLimit(Settings.DownloadSpeed);
            SetUploadSpeedLimit(Settings.UploadSpeed);
            Handle.SequentialDownload = TorrentSource.IsSequential = sequential;
            Status = Handle.QueryStatus();
            torrents.Add(this);
            TorrentDatabase.Save(TorrentSource);
            return(this);
        }
 private async static Task DownloadLastWeek()
 {
     await Task.Run(async() => {
         var series   = Database.GetSeries().Where(x => x.autoDownload);
         var episodes = new Dictionary <Series, List <Episode> >();
         foreach (var se in series)
         {
             //adds episodes that dont have files and have been released in last week
             episodes.Add(se, Database.GetEpisodes(se.id).Where(x => x.files.Count == 0 && !String.IsNullOrEmpty(x.firstAired) && Helper.ParseAirDate(x.firstAired) > DateTime.Now.AddDays(-7) && Helper.ParseAirDate(x.firstAired).AddDays(1) < DateTime.Now).ToList());
         }
         foreach (var combination in episodes)
         {
             foreach (var episode in combination.Value)
             {
                 if (TorrentDatabase.Load().Where(x => x.Episode.id == episode.id).ToList().Count == 0)
                 {
                     TorrentDownloader downloader = new TorrentDownloader(await Torrent.SearchSingle(combination.Key, episode, Settings.DownloadQuality));
                     await downloader.Download();
                 }
             }
         }
     });
 }
Esempio n. 8
0
        /// <summary>
        /// Events that takes care of everything that needs to be saved before closing
        /// </summary>
        private void Main_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (dimensions != null)
            {
                if (dimensions.LastState == WindowState.Maximized)
                {
                    Properties.Settings.Default.Maximized = true;
                }
                else
                {
                    Properties.Settings.Default.Maximized = false;
                }
                Properties.Settings.Default.Resolution = dimensions.Width + "x" + dimensions.Height;
            }
            else
            {
                if (this.WindowState == WindowState.Maximized)
                {
                    Properties.Settings.Default.Maximized = true;
                }
                else
                {
                    Properties.Settings.Default.Maximized = false;
                }
                Properties.Settings.Default.Resolution = this.Width + "x" + this.Height;
            }
            Properties.Settings.Default.Save();

            if (videoPlayback)
            {
                try {
                    LocalPlayer player = (LocalPlayer)((Frame)ContentOnTop.Children[ContentOnTop.Children.Count - 1]).Content;
                    player.episode.continueAt = player.Player.MediaPosition - 50000000 > 0 ? player.Player.MediaPosition - 50000000 : 0;
                    player.episode.finished   = player.Player.MediaDuration - 3000000000 < player.Player.MediaPosition ? true : false;
                    Database.EditEpisode(player.series.id, player.episode.id, player.episode);
                    player.Player.Stop();
                    player.Player.Close();
                } catch (Exception) {
                    TorrentStreamer player = (TorrentStreamer)((Frame)ContentOnTop.Children[ContentOnTop.Children.Count - 1]).Content;
                    var             series = Database.GetSeries(player.downloader.TorrentSource.Series.id);
                    var             ep     = Database.GetEpisode(player.downloader.TorrentSource.Series.id, player.downloader.TorrentSource.Episode.id);
                    ep.continueAt = player.Player.MediaPosition - 50000000 > 0 ? player.Player.MediaPosition - 50000000 : 0;
                    ep.finished   = player.Player.MediaDuration - 3000000000 < player.Player.MediaPosition ? true : false;
                    if (player.downloader.Status.IsSeeding)
                    {
                        player.downloader.StopAndMove();
                    }
                    else
                    {
                        var torrent = player.downloader.TorrentSource;
                        torrent.IsSequential = false;
                        TorrentDatabase.Edit(torrent.Magnet, torrent);
                    }
                    Database.EditEpisode(series.id, ep.id, ep);

                    player.Player.Stop();
                    player.Player.Close();
                }

                //this will give the player some time to end properly
                Thread.Sleep(500);
            }
        }
Esempio n. 9
0
 private void Remove_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     this.Visibility = Visibility.Collapsed;
     TorrentDatabase.Remove(torrent.Magnet);
 }