public SyncSaber() { Instance = this; _historyPath = Path.Combine(Config.BeatSaberPath, "UserData", "SyncSaberHistory.txt"); if (File.Exists(_historyPath + ".bak")) { if (File.Exists(_historyPath)) { File.Delete(_historyPath); } File.Move(_historyPath + ".bak", _historyPath); } if (File.Exists(_historyPath)) { _songDownloadHistory = File.ReadAllLines(_historyPath).ToList <string>(); } if (Directory.Exists(Config.BeatSaberPath)) { CustomSongsPath = Path.Combine(Config.BeatSaberPath, "CustomSongs"); if (!Directory.Exists(CustomSongsPath)) { Directory.CreateDirectory(CustomSongsPath); } } FeedReaders = new Dictionary <string, IFeedReader> { { BeatSaverReader.NameKey, new BeatSaverReader() }, { BeastSaberReader.NameKey, new BeastSaberReader(Config.BeastSaberUsername, Config.BeastSaberPassword, Config.MaxConcurrentPageChecks) }, { ScoreSaberReader.NameKey, new ScoreSaberReader() } }; }
static void Main(string[] args) { Logger.LogLevel = Config.StrToLogLevel(Config.LoggingLevel); Logger.fileWriter.AutoFlush = true; Logger.ShortenSourceName = true; try { try { Config.Initialize(); } catch (FileNotFoundException ex) { Logger.Exception("Error initializing Config", ex); } //Tests(); try { if (args.Length > 0) { var bsDir = new DirectoryInfo(args[0]); if (bsDir.Exists) { if (bsDir.GetFiles("Beat Saber.exe").Length > 0) { Logger.Info("Found Beat Saber.exe"); Config.BeatSaberPath = bsDir.FullName; Logger.Info($"Updated Beat Saber directory path to {Config.BeatSaberPath}"); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } else { Logger.Warning($"Provided directory does not appear to be Beat Saber's root folder, ignoring it"); } } } } catch (Exception ex) { Logger.Exception($"Error parsing command line arguments", ex); } if (!Config.CriticalError) { Web.HttpClientWrapper.Initialize(Config.MaxConcurrentPageChecks); Stopwatch sw = new Stopwatch(); sw.Start(); SyncSaber ss = new SyncSaber(); /* * ss.DownloadSongsFromFeed(BeatSaverReader.NameKey, new BeatSaverFeedSettings(1) { * MaxPages = 5 * }); * * ss.DownloadSongsFromFeed(BeatSaverReader.NameKey, new BeatSaverFeedSettings(0) { * Authors = Config.FavoriteMappers.ToArray(), * }); */ Console.WriteLine(); if (Config.SyncFavoriteMappersFeed && Config.FavoriteMappers.Count > 0) { Logger.Info($"Downloading songs from FavoriteMappers.ini..."); try { ss.DownloadSongsFromFeed(BeatSaverReader.NameKey, new BeatSaverFeedSettings(0) { Authors = Config.FavoriteMappers.ToArray() }); } catch (Exception ex) { Logger.Exception("Exception downloading BeatSaver authors feed.", ex); } } else { Logger.Warning($"Skipping FavoriteMappers.ini feed, no authors found in {Config.BeatSaberPath + @"\UserData\FavoriteMappers.ini"}"); } if (Config.SyncFollowingsFeed) { // Followings Console.WriteLine(); Logger.Info($"Downloading songs from {BeastSaberReader.Feeds[BeastSaberFeeds.FOLLOWING].Name} feed..."); try { //ss.DownloadBeastSaberFeed(0, Web.BeastSaberReader.GetMaxBeastSaberPages(0)); ss.DownloadSongsFromFeed(BeastSaberReader.NameKey, new BeastSaberFeedSettings(0) { MaxPages = Config.MaxFollowingsPages }); } catch (Exception ex) { Logger.Exception($"Exception downloading BeastSaberFeed: Following", ex); } } // Bookmarks if (Config.SyncBookmarksFeed) { Console.WriteLine(); Logger.Info($"Downloading songs from {BeastSaberReader.Feeds[BeastSaberFeeds.BOOKMARKS].Name} feed..."); try { //ss.DownloadBeastSaberFeed(1, Web.BeastSaberReader.GetMaxBeastSaberPages(1)); ss.DownloadSongsFromFeed(BeastSaberReader.NameKey, new BeastSaberFeedSettings(1) { MaxPages = Config.MaxBookmarksPages }); } catch (Exception ex) { Logger.Exception($"Exception downloading BeastSaberFeed: Bookmarks", ex); } } if (Config.SyncCuratorRecommendedFeed) { // Curator Recommended Console.WriteLine(); Logger.Info($"Downloading songs from {BeastSaberReader.Feeds[BeastSaberFeeds.CURATOR_RECOMMENDED].Name} feed..."); try { //ss.DownloadBeastSaberFeed(2, Web.BeastSaberReader.GetMaxBeastSaberPages(2)); ss.DownloadSongsFromFeed(BeastSaberReader.NameKey, new BeastSaberFeedSettings(2) { MaxPages = Config.MaxCuratorRecommendedPages }); } catch (Exception ex) { Logger.Exception($"Exception downloading BeastSaberFeed: Curator Recommended", ex); } } if (Config.SyncTopPPFeed) { // ScoreSaber Top PP Console.WriteLine(); Logger.Info($"Downloading songs from {ScoreSaberReader.Feeds[ScoreSaberFeeds.TOP_RANKED].Name} feed..."); try { //ss.DownloadBeastSaberFeed(2, Web.BeastSaberReader.GetMaxBeastSaberPages(2)); ss.DownloadSongsFromFeed(ScoreSaberReader.NameKey, new ScoreSaberFeedSettings(0) { MaxPages = Config.MaxScoreSaberPages }); } catch (Exception ex) { Logger.Exception($"Exception downloading ScoreSaberFeed: Top Ranked", ex); } } /* * Console.WriteLine(); * Logger.Info($"Downloading newest songs on Beat Saver..."); * try * { * ss.DownloadSongsFromFeed(BeatSaverReader.NameKey, new BeatSaverFeedSettings(1) { * MaxPages = Config.MaxBeatSaverPages * }); * } * * catch (Exception ex) * { * Logger.Exception("Exception downloading BeatSaver newest feed.", ex); * } */ sw.Stop(); var processingTime = new TimeSpan(sw.ElapsedTicks); Console.WriteLine(); Logger.Info($"Finished downloading songs in {(int) processingTime.TotalMinutes} min {processingTime.Seconds} sec"); } else { foreach (string e in Config.Errors) { Logger.Error($"Invalid setting: {e} = {Config.Setting[e]}"); } } } catch (Exception ex) { Logger.Exception("Uncaught exception in Main()", ex); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }