} // ----------------------------------------- /// <summary> /// Take a crushed archive and extract only the info file, Returns a customized object with some info /// </summary> /// <param name="arcFile"></param> /// <param name="onComplete">(null) on error, /// OBJECT = /// cd:CueReader, /// cover:Path of image cover or null /// sizeArc:Size of ARC in bytes /// /// </param> /// <returns>Success</returns> public static bool loadQuickInfo(string arcFile, Action <Object> onComplete) { if (LOCKED) { ERROR = "LOCKED"; return(false); } if (!check_file_(arcFile, CDCRUSH_EXTENSION)) { return(false); } LOCKED = true; // Delete old files from previous quickInfos, IF ANY FileTools.tryDelete(Path.Combine(TEMP_FOLDER, CDCRUSH_SETTINGS)); FileTools.tryDelete(Path.Combine(TEMP_FOLDER, CDCRUSH_COVER)); var arc = new FreeArc(TOOLS_PATH); // -- arc.onComplete = (success) => { LOCKED = false; if (success) // OK { // Continue var cd = new CueReader(); if (!cd.loadJson(Path.Combine(TEMP_FOLDER, CDCRUSH_SETTINGS))) { ERROR = cd.ERROR; onComplete(null); return; } // This is the object with the info returned to user var info = new { cd, sizeArc = (int)new FileInfo(arcFile).Length, cover = Path.Combine(TEMP_FOLDER, CDCRUSH_COVER) }; LOG.log("= QuickLoaded `{0}` - [OK]", arcFile); onComplete(info); } else { ERROR = arc.ERROR; onComplete(null); } }; // : Actually extract arc.extractFiles(arcFile, new[] { CDCRUSH_SETTINGS, CDCRUSH_COVER }, TEMP_FOLDER); return(true); } // -----------------------------------------
} // ----------------------------------------- /// <summary> /// Take a crushed archive and extract only the info file, Returns a customized object with some info /// </summary> /// <param name="arcFile"></param> /// <param name="onComplete">(null) if error</param> public static bool loadQuickInfo(string arcFile, Action <Object> onComplete) { if (LOCKED) { ERROR = "LOCKED"; return(false); } if (!check_file_(arcFile, CDCRUSH_EXTENSION)) { return(false); } LOCKED = true; // Delete old files from previous quickInfos FileTools.tryDelete(Path.Combine(TEMP_FOLDER, CDCRUSH_SETTINGS)); FileTools.tryDelete(Path.Combine(TEMP_FOLDER, CDCRUSH_COVER)); var arc = new FreeArc(TOOLS_PATH); // -- arc.onComplete = (success) => { LOCKED = false; if (success) // OK { // Continue var cd = new CueReader(); if (!cd.loadJson(Path.Combine(TEMP_FOLDER, CDCRUSH_SETTINGS))) { ERROR = cd.ERROR; onComplete(null); return; } var info = new { title = cd.CD_TITLE, size0 = (int)new FileInfo(arcFile).Length, size1 = cd.CD_TOTAL_SIZE, audio = cd.CD_AUDIO_QUALITY, tracks = cd.tracks.Count, md5 = cd.getFirstDataTrackMD5(), cover = Path.Combine(TEMP_FOLDER, CDCRUSH_COVER) }; onComplete(info); } else { ERROR = arc.ERROR; onComplete(null); } }; // : Actually extract arc.extractFiles(arcFile, new[] { CDCRUSH_SETTINGS, CDCRUSH_COVER }, TEMP_FOLDER); return(true); } // -----------------------------------------