public Boolean Process(String str) { if (str.Length < 3) { return InvalidCommand(); } String op = str.Substring(0, 3); String data = ""; if (str.Length >= 4) data = str.Substring(4, str.Length - 4); if (op.Equals("clr", StringComparison.CurrentCultureIgnoreCase)) Console.Clear(); if (op.Equals("hlp", StringComparison.CurrentCultureIgnoreCase)) HelpMsg(); else if (op.Equals("sav", StringComparison.CurrentCultureIgnoreCase)) { using (FileSaver save = new FileSaver(data)) { if (data.Equals("d", StringComparison.CurrentCultureIgnoreCase) || data.Equals("designations", StringComparison.CurrentCultureIgnoreCase)) { SaveDesignations(save, 3); } else if (data.Equals("a", StringComparison.CurrentCultureIgnoreCase) || data.Equals("artists", StringComparison.CurrentCultureIgnoreCase)) { List<String> artists = Artist.GetArtists(); foreach (String ar in artists) { SaveDesignations(save, 3); } } else if (data.Equals("+", StringComparison.CurrentCultureIgnoreCase) || data.Equals("all", StringComparison.CurrentCultureIgnoreCase)) { List<String> links = Database.Magnet.GetAllLinks(); links.AddRange(Database.Ed2k.GetAllLinks()); save.AddLinks(links.ToArray()); } else { return InvalidCommand(); } } } else if (op.Equals("scn", StringComparison.CurrentCultureIgnoreCase)) { LocalScanner scanner = LocalScanner.GetInstance(); List<String[]> results = scanner.Scan(data); List<String> artists = Artist.GetArtists(); // result[0] is designation, result[1] is filename int count = 0; foreach (String[] result in results) { String artist = null; foreach (String ar in artists) if (result[1].Contains(ar)) artist = ar; if (Designation.AddDesignation(result[0], result[1], true, artist)) ++count; } Console.WriteLine(count.ToString() + " designations added!"); } else if (op.Equals("dat", StringComparison.CurrentCultureIgnoreCase)) { Config.GetInstance().SetSearchDataType(data); } else if (op.Equals("qqq", StringComparison.CurrentCultureIgnoreCase)) Environment.Exit(0); else return false; Config.GetInstance().AddLastCommand(op, data); return true; }
static void SaveDesignations(FileSaver saver, int count, String artist = null) { List<String> designations = null; if(artist == null) designations = Designation.GetAllDesignations(); else designations = Artist.GetDesignations(artist); foreach (String designation in designations) { // 获得所有的结果 List<String> links = Ed2k.GetLinksByDesignation(designation); List<Ed2kLink> edlinks = new List<Ed2kLink>(); foreach (String link in links) { Ed2kLink el = Ed2kLink.Parse(link); if (el != null) edlinks.Add(el); } // 按照文件大小排序 edlinks.Sort((lhs, rhs) => { return -((lhs.FileSize > rhs.FileSize) ? 1 : ((rhs.FileSize > lhs.FileSize) ? -1 : 0)); }); for (int i = 0; i < count && i < links.Count; ++i) { saver.AddLink(edlinks[0].Link); } } }