public void Initialize() { Directory.CreateDirectory(State.StateSaveDirectory); Directory.CreateDirectory(State.TorrentsStateSaveDirectory); this.LibtorrentSession = new Ragnar.Session(); this.LibtorrentSession.SetAlertMask(Alerts_Mask); this.LibtorrentSession.ListenOn(App.Settings.ListeningPort, App.Settings.ListeningPort); if (App.Settings.EnableDHT) this.LibtorrentSession.StartDht(); if (App.Settings.EnableLSD) this.LibtorrentSession.StartLsd(); if (App.Settings.EnableNAT_PMP) this.LibtorrentSession.StartNatPmp(); if (App.Settings.Enable_UPNP) this.LibtorrentSession.StartUpnp(); this.LibTorrentAlerts = new LibTorrentAlertsWatcher(this.LibtorrentSession); this.LibTorrentAlerts.ResumeDataArrived += LibTorrentAlerts_ResumeDataArrived; this.LibTorrentAlerts.TorrentAdded += LibTorrentAlerts_TorrentAdded; this.LibTorrentAlerts.TorrentStateChanged += LibTorrentAlerts_TorrentStateChanged; this.LibTorrentAlerts.TorrentStatsUpdated += LibTorrentAlerts_TorrentStatsUpdated; this.LibTorrentAlerts.TorrentFinished += LibTorrentAlerts_TorrentFinished; this.LibTorrentAlerts.MetadataReceived += LibTorrentAlerts_MetadataReceived; //this.LibTorrentAlerts.TorrentNetworkStatisticsUpdated += LibTorrentAlerts_TorrentNetworkStatisticsUpdated; if (File.Exists(LtSessionFilePath)) { this.LibtorrentSession.LoadState(File.ReadAllBytes(LtSessionFilePath)); foreach (string file in Directory.GetFiles(State.TorrentsStateSaveDirectory, "*.torrent")) { Ragnar.AddTorrentParams para = new Ragnar.AddTorrentParams(); para.TorrentInfo = new Ragnar.TorrentInfo(File.ReadAllBytes(file)); string tjson_file = Path.ChangeExtension(file, "tjson"); if (File.Exists(tjson_file)) { using (var reader = File.OpenText(tjson_file)) { JsonObject data = JsonConvert.Import<JsonObject>(reader); para.SavePath = Convert.ToString(data["SavePath"]); } } else { para.SavePath = App.Settings.DefaultDownloadPath; } string resume_file = Path.ChangeExtension(file, "resume"); if (File.Exists(resume_file)) { // Loading the resume data will load all torrents settings, // with the exception of byteflood settings {RatioLimit, RanCommand, PickedMovieData, ...} // See TorrentInfo.LoadMiscSettings() method para.ResumeData = File.ReadAllBytes(resume_file); } this.LibtorrentSession.AsyncAddTorrent(para); } } CheckByteFloodAssociation(); listener = new Listener(this); listener.State = this; }
private void Import(object sender, RoutedEventArgs e) { foreach (var listing in list) { try { if (!listing.Import) continue; Ragnar.TorrentInfo torrent = new Ragnar.TorrentInfo(File.ReadAllBytes(listing.Path)); if (!torrent.IsValid) { continue; } AppState.BackupTorrent(listing.Path, torrent); string savepath = null; if (torrent.NumFiles > 1) { if (listing.SavePath.EndsWith(torrent.Name)) { // then we should download in the parent directory DirectoryInfo di = new DirectoryInfo(listing.SavePath); savepath = di.Parent.FullName; } else { savepath = listing.SavePath; } } else if (torrent.NumFiles == 1) { savepath = Path.GetDirectoryName(listing.SavePath); } else { savepath = listing.SavePath; } Ragnar.AddTorrentParams param = new Ragnar.AddTorrentParams() { SavePath = savepath, TorrentInfo = torrent, Name = listing.Name }; // calling LibtorrentSession.AsyncAddTorrent will fire the TorrentAddedEvent var handle = AppState.LibtorrentSession.AddTorrent(param); AppState.set_files_priorities(handle, 3); } catch { } } App.Settings.ImportedTorrents = true; this.Close(); }
public void Initialize() { Directory.CreateDirectory(State.StateSaveDirectory); Directory.CreateDirectory(State.TorrentsStateSaveDirectory); this.LibtorrentSession = new Ragnar.Session(); this.LibtorrentSession.SetAlertMask(Alerts_Mask); this.LibtorrentSession.ListenOn(App.Settings.ListeningPort, App.Settings.ListeningPort); if (App.Settings.EnableDHT) { this.LibtorrentSession.StartDht(); } if (App.Settings.EnableLSD) { this.LibtorrentSession.StartLsd(); } if (App.Settings.EnableNAT_PMP) { this.LibtorrentSession.StartNatPmp(); } if (App.Settings.Enable_UPNP) { this.LibtorrentSession.StartUpnp(); } this.LibTorrentAlerts = new LibTorrentAlertsWatcher(this.LibtorrentSession); this.LibTorrentAlerts.ResumeDataArrived += LibTorrentAlerts_ResumeDataArrived; this.LibTorrentAlerts.TorrentAdded += LibTorrentAlerts_TorrentAdded; this.LibTorrentAlerts.TorrentStateChanged += LibTorrentAlerts_TorrentStateChanged; this.LibTorrentAlerts.TorrentStatsUpdated += LibTorrentAlerts_TorrentStatsUpdated; this.LibTorrentAlerts.TorrentFinished += LibTorrentAlerts_TorrentFinished; this.LibTorrentAlerts.MetadataReceived += LibTorrentAlerts_MetadataReceived; //this.LibTorrentAlerts.TorrentNetworkStatisticsUpdated += LibTorrentAlerts_TorrentNetworkStatisticsUpdated; if (File.Exists(LtSessionFilePath)) { this.LibtorrentSession.LoadState(File.ReadAllBytes(LtSessionFilePath)); foreach (string file in Directory.GetFiles(State.TorrentsStateSaveDirectory, "*.torrent")) { Ragnar.AddTorrentParams para = new Ragnar.AddTorrentParams(); para.TorrentInfo = new Ragnar.TorrentInfo(File.ReadAllBytes(file)); string tjson_file = Path.ChangeExtension(file, "tjson"); if (File.Exists(tjson_file)) { using (var reader = File.OpenText(tjson_file)) { JsonObject data = JsonConvert.Import <JsonObject>(reader); para.SavePath = Convert.ToString(data["SavePath"]); } } else { para.SavePath = App.Settings.DefaultDownloadPath; } string resume_file = Path.ChangeExtension(file, "resume"); if (File.Exists(resume_file)) { // Loading the resume data will load all torrents settings, // with the exception of byteflood settings {RatioLimit, RanCommand, PickedMovieData, ...} // See TorrentInfo.LoadMiscSettings() method para.ResumeData = File.ReadAllBytes(resume_file); } this.LibtorrentSession.AsyncAddTorrent(para); } } CheckByteFloodAssociation(); listener = new Listener(this); listener.State = this; }
private void Import(object sender, RoutedEventArgs e) { foreach (var listing in list) { try { if (!listing.Import) { continue; } Ragnar.TorrentInfo torrent = new Ragnar.TorrentInfo(File.ReadAllBytes(listing.Path)); if (!torrent.IsValid) { continue; } AppState.BackupTorrent(listing.Path, torrent); string savepath = null; if (torrent.NumFiles > 1) { if (listing.SavePath.EndsWith(torrent.Name)) { // then we should download in the parent directory DirectoryInfo di = new DirectoryInfo(listing.SavePath); savepath = di.Parent.FullName; } else { savepath = listing.SavePath; } } else if (torrent.NumFiles == 1) { savepath = Path.GetDirectoryName(listing.SavePath); } else { savepath = listing.SavePath; } Ragnar.AddTorrentParams param = new Ragnar.AddTorrentParams() { SavePath = savepath, TorrentInfo = torrent, Name = listing.Name }; // calling LibtorrentSession.AsyncAddTorrent will fire the TorrentAddedEvent var handle = AppState.LibtorrentSession.AddTorrent(param); AppState.set_files_priorities(handle, 3); } catch { } } App.Settings.ImportedTorrents = true; this.Close(); }