Skip to content
This repository has been archived by the owner on May 1, 2022. It is now read-only.

Commit

Permalink
Fixed switching chapters embedded meta information.
Browse files Browse the repository at this point in the history
  • Loading branch information
Roel van Uden committed Dec 3, 2014
1 parent d8624cc commit 57da985
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
34 changes: 30 additions & 4 deletions lib/server/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
'use strict';
var Agent = require('./agent');
var AdmZip = require('adm-zip');
var defaultExtension = 'cbz';
var EventEmitter = require('events').EventEmitter;
var fs = require('fs');
Expand Down Expand Up @@ -100,6 +101,28 @@ function enqueueChapter(emitter, queue, task, chapter, done) {
});
}

/**
* Updates embedded meta information with new information.
* @param {!Object} task
* @param {string} oldPath
* @param {function(Error)} done
*/
function enqueueChapterMeta(task, oldPath, done) {
var zip = new AdmZip(oldPath);
var zipEntry = zip.getEntry('ComicInfo.xml');
if (!zipEntry) return done();
var xml = zipEntry.getData().toString('utf8');
shared.publisher.Meta.load(xml, function(err, meta) {
if (err) return done(err);
meta.number = task.chapter.number;
meta.volume = task.chapter.volume;
zip.deleteFile('ComicInfo.xml');
zip.addFile('ComicInfo.xml', new Buffer(meta.xml(), 'utf8'));
zip.writeZip(oldPath);
done();
});
}

/**
* Checks the persistence entry and renames the chapter when applicable.
* @private
Expand All @@ -112,11 +135,14 @@ function enqueueChapterPersistent(emitter, task, done) {
var oldName = task.persistent[task.chapter.identifier];
if (task.chapterName === oldName) return done();
var oldPath = path.join(task.seriesPath, oldName);
task.persistent[task.chapter.identifier] = task.chapterName;
emitter.emit('data', {item: task.chapterName, type: 'switched'});
fs.rename(oldPath, task.chapterPath, function(err) {
enqueueChapterMeta(task, oldPath, function(err) {
if (err) return done(err);
save(task.persistentPath, task.persistent, done);
task.persistent[task.chapter.identifier] = task.chapterName;
emitter.emit('data', {item: task.chapterName, type: 'switched'});
fs.rename(oldPath, task.chapterPath, function(err) {
if (err) return done(err);
save(task.persistentPath, task.persistent, done);
});
});
}

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"mangarack": "./bin/mangarack"
},
"dependencies": {
"adm-zip": "^0.4.4",
"archiver": "^0.13.0",
"cheerio": "^0.18.0",
"commander": "^2.5.0",
Expand Down

0 comments on commit 57da985

Please sign in to comment.