Example #1
0
        }        // -----------------------------------------

        /// <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);
        }        // -----------------------------------------
Example #2
0
        }        // -----------------------------------------

        /// <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);
        }        // -----------------------------------------