Skip to content
This repository was archived by the owner on Nov 8, 2025. It is now read-only.

Commit 7960318

Browse files
committed
Improvements to query what user wants to do. Release 0.0.2
1 parent 8e5da17 commit 7960318

File tree

3 files changed

+126
-120
lines changed

3 files changed

+126
-120
lines changed

ghost_base.js

Lines changed: 0 additions & 43 deletions
This file was deleted.

index.js

Lines changed: 124 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ var wget = require('wget');
33
var path = require('path');
44
var fs = require('fs');
55
var ensureDir = require('ensureDir');
6-
var ghost_base = require('./ghost_base.js');
6+
var inquirer = require('inquirer');
77

88
var imgMatchRegex = /(!\[.*?\]\()(.+?)(\))/g;
9-
var markdownPath = path.join('.', 'markdown');
10-
var tagPath = path.join('.', 'tag');
119

12-
function saveFile(url, imgUrl) {
10+
var saveFile = function(url, imgUrl) {
1311
if (imgUrl == null) return;
1412

1513
url = url.replace('https', 'http'); // I don't know why
1614
var src = url + imgUrl;
1715
var folderPath = path.join('.', imgUrl.replace(path.basename(imgUrl), ''));
18-
16+
1917
request.get(src).end(function(iErr, iRes) {
2018
if (iErr) {
2119
console.log("ERROR");
@@ -28,12 +26,12 @@ function saveFile(url, imgUrl) {
2826
console.log("ERROR with folder");
2927
} else {
3028
var download = wget.download(src, path.join('.', imgUrl), {});
31-
download.on('error', function(err) {
32-
console.log(err);
33-
});
34-
download.on('end', function(output) {
35-
console.log(output);
36-
});
29+
//download.on('error', function(err) {
30+
// console.log(err);
31+
//});
32+
//download.on('end', function(output) {
33+
// console.log(output);
34+
//});
3735
}
3836
});
3937

@@ -42,77 +40,128 @@ function saveFile(url, imgUrl) {
4240
}
4341
}
4442
});
45-
}
46-
47-
function getPosts(data) {
48-
var authors = { "1": "geo", "2": "rox" };
49-
50-
for (var d in data) {
51-
var date = data[d].published_at;
43+
};
5244

53-
if (date == null || date.length == 0) continue;
45+
var processor = {
46+
Post: function (url, token, mainPath) {
47+
request.get(url + '/ghost/api/v0.1/posts?limit=all')
48+
.set('Authorization', 'bearer ' + token)
49+
.end(function(dErr, dRes) {
50+
if (dErr) {
51+
console.log('ERROR');
52+
console.log(dErr);
53+
} else {
54+
var data = dRes.body.posts;
55+
var authors = { "1": "geo", "2": "rox" };
5456

55-
var title = date.substring(0, 10) + '-' + data[d].slug + '.md';
56-
var content = '---\r\nlayout: post\r\ntitle: "' + data[d].title + '"\r\ntags: ' +
57-
(data[d].tags ? data[d].tags.map(function (el) {
58-
return '- ' + el;
59-
}).join("\r\n") : '') + '\r\nauthor: ' + authors[data[d].created_by] +
60-
'\r\nimage: ' + data[d].image + '\r\n---\r\n' +
61-
data[d].markdown.replace(/\r?\n/g, "\r\n");
57+
for (var d in data) {
58+
var date = data[d].published_at;
6259

63-
// Save Markdown
64-
fs.writeFile(path.join(markdownPath, title), content, { encoding: 'utf8' }, function (fileErr) {
65-
if (fileErr) console.log(fileErr);
66-
});
60+
if (date == null || date.length == 0) continue;
6761

68-
//// SEO image
69-
//var imgUrl = data[d].image;
70-
//saveFile(url, imgUrl);
62+
var title = date.substring(0, 10) + '-' + data[d].slug + '.md';
63+
var content = '---\r\nlayout: post\r\ntitle: "' + data[d].title + '"\r\ntags: ' +
64+
(data[d].tags ? data[d].tags.map(function(el) {
65+
return '- ' + el;
66+
}).join("\r\n") : '') + '\r\nauthor: ' + authors[data[d].created_by] +
67+
'\r\nimage: ' + data[d].image + '\r\n---\r\n' +
68+
data[d].markdown.replace(/\r?\n/g, "\r\n");
7169

72-
//// Discover all images in post, saving only from the same server
73-
//var match;
74-
//while (match = imgMatchRegex.exec(data[d].markdown)) {
75-
// if (match[2][0] == '/') saveFile(url, match[2]);
76-
//}
77-
}
78-
}
70+
// Save Markdown
71+
fs.writeFile(path.join(mainPath, title), content, { encoding: 'utf8' }, function (fileErr) {
72+
if (fileErr) console.log(fileErr);
73+
});
74+
}
75+
}
76+
});
77+
},
78+
Images: function (url, token, mainPath) {
79+
request.get(url + '/ghost/api/v0.1/posts?limit=all')
80+
.set('Authorization', 'bearer ' + token)
81+
.end(function (dErr, dRes) {
82+
if (dErr) {
83+
console.log('ERROR');
84+
console.log(dErr);
85+
} else {
86+
var data = dRes.body.posts;
7987

80-
function processPosts(url, token) {
81-
request.get(url + '/ghost/api/v0.1/posts?limit=all')
82-
.set('Authorization', 'bearer ' + token)
83-
.end(function(dErr, dRes) {
84-
if (dErr) {
85-
console.log('ERROR');
86-
console.log(dErr);
87-
} else {
88-
getPosts(dRes.body.posts);
89-
}
90-
});
91-
}
88+
for (var d in data) {
89+
// SEO image
90+
var imgUrl = data[d].image;
91+
saveFile(url, imgUrl);
9292

93-
function processTags(url, token) {
94-
request.get(url + '/ghost/api/v0.1/tags?limit=all')
95-
.set('Authorization', 'bearer ' + token)
96-
.end(function (dErr, dRes) {
97-
if (dErr) {
98-
console.log('ERROR');
99-
console.log(dErr);
100-
} else {
101-
var data = dRes.body.tags;
102-
for (var d in data) {
103-
fs.mkdirSync(path.join(tagPath, data[d].slug));
104-
var content = '---\r\nlayout: tagpage\r\ntag: ' + data[d].slug +
105-
'\r\ntitle: ' + data[d].name +
106-
'\r\image: ' + data[d].image +
107-
'\r\description: ' + data[d].description + '\r\n' +
108-
'---';
93+
// Discover all images in post, saving only from the same server
94+
var match;
95+
while (match = imgMatchRegex.exec(data[d].markdown)) {
96+
if (match[2][0] == '/') saveFile(url, match[2]);
97+
}
98+
}
99+
}
100+
});
101+
},
102+
Tags: function (url, token, mainPath) {
103+
request.get(url + '/ghost/api/v0.1/tags?limit=all')
104+
.set('Authorization', 'bearer ' + token)
105+
.end(function (dErr, dRes) {
106+
if (dErr) {
107+
console.log('ERROR');
108+
console.log(dErr);
109+
} else {
110+
var data = dRes.body.tags;
111+
for (var d in data) {
112+
fs.mkdirSync(path.join(mainPath, data[d].slug));
113+
var content = '---\r\nlayout: tagpage\r\ntag: ' + data[d].slug +
114+
'\r\ntitle: ' + data[d].name +
115+
'\r\image: ' + data[d].image +
116+
'\r\description: ' + data[d].description + '\r\n' +
117+
'---';
109118

110-
fs.writeFile(path.join('tag', data[d].slug, "index.html"), content, { encoding: 'utf8' }, function (fileErr) {
111-
if (fileErr) console.log(fileErr);
112-
});
119+
fs.writeFile(path.join(mainPath, data[d].slug, "index.html"), content, { encoding: 'utf8' }, function (fileErr) {
120+
if (fileErr) console.log(fileErr);
121+
});
122+
}
113123
}
114-
}
115-
});
116-
}
124+
});
125+
}
126+
};
117127

118-
ghost_base.process(tagPath, processTags);
128+
inquirer.prompt({
129+
type: 'checkbox',
130+
name: 'options',
131+
choices: ['Post', 'Images', 'Tags'],
132+
message: 'What do you want to backup?'
133+
}, function (data) {
134+
if (data.options.length == 0) return;
135+
var questions = [{
136+
type: 'input',
137+
name: 'url',
138+
message: 'Blog URL'
139+
},{
140+
type: 'input',
141+
name: 'email',
142+
message: 'Email'
143+
},{
144+
type: 'password',
145+
name: 'password',
146+
message: 'Password'
147+
}];
148+
if (process.argv.length >= 2) questions[0].default = process.argv[2];
149+
if (process.argv.length >= 3) questions[1].default = process.argv[3];
150+
151+
inquirer.prompt(questions, function(answers) {
152+
request.post(answers.url + '/ghost/api/v0.1/authentication/token/')
153+
.send({ grant_type: 'password', username: answers.email, password: answers.password, client_id: 'ghost-admin' })
154+
.end(function(err, res) {
155+
if (err) {
156+
console.log("ERROR");
157+
console.log(err);
158+
} else {
159+
for (var d in data.options) {
160+
var key = data.options[d];
161+
fs.mkdirSync(path.join('.', key));
162+
processor[key](answers.url, res.body.access_token, path.join('.', key));
163+
}
164+
}
165+
});
166+
});
167+
});

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ghost_tools",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"description": "Ghost tool to backup images and content",
55
"main": "index.js",
66
"scripts": {
@@ -22,7 +22,7 @@
2222
"homepage": "https://github.com/geoperez/ghost_tools",
2323
"dependencies": {
2424
"ensureDir": "^1.0.6",
25-
"readline": "0.0.7",
25+
"inquirer": "^0.8.2",
2626
"superagent": "^1.2.0",
2727
"wget": "0.0.1"
2828
}

0 commit comments

Comments
 (0)