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; }); } }); }
/// <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); }
/// <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); }
/// <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); }
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(); } } } }); }
/// <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); } }
private void Remove_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { this.Visibility = Visibility.Collapsed; TorrentDatabase.Remove(torrent.Magnet); }