mirror of
https://github.com/azures04/crafatar.git
synced 2026-03-21 23:41:18 +01:00
merge
This commit is contained in:
commit
adea3320bc
4
app.js
4
app.js
@ -14,8 +14,7 @@ var app = express();
|
|||||||
app.set('views', path.join(__dirname, 'views'));
|
app.set('views', path.join(__dirname, 'views'));
|
||||||
app.set('view engine', 'jade');
|
app.set('view engine', 'jade');
|
||||||
|
|
||||||
// uncomment after placing your favicon in /public
|
app.use(favicon(__dirname + '/public/favicon.ico'));
|
||||||
//app.use(favicon(__dirname + '/public/favicon.ico'));
|
|
||||||
app.use(logger('dev'));
|
app.use(logger('dev'));
|
||||||
app.use(bodyParser.json());
|
app.use(bodyParser.json());
|
||||||
app.use(bodyParser.urlencoded({ extended: false }));
|
app.use(bodyParser.urlencoded({ extended: false }));
|
||||||
@ -25,6 +24,7 @@ app.use(express.static(path.join(__dirname, 'public')));
|
|||||||
app.use('/', routes);
|
app.use('/', routes);
|
||||||
app.use('/avatars', avatars);
|
app.use('/avatars', avatars);
|
||||||
|
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
// catch 404 and forward to error handler
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
var err = new Error('Not Found');
|
var err = new Error('Not Found');
|
||||||
|
|||||||
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@ -9,6 +9,10 @@ var valid_uuid = /^[0-9a-f]{32}$/;
|
|||||||
router.get('/:uuid/:size?', function(req, res) {
|
router.get('/:uuid/:size?', function(req, res) {
|
||||||
var uuid = req.param('uuid');
|
var uuid = req.param('uuid');
|
||||||
var size = req.param('size') || 180;
|
var size = req.param('size') || 180;
|
||||||
|
// Add temporary restriction to prevent app from crashing
|
||||||
|
if (size <= 0) {
|
||||||
|
size = 180;
|
||||||
|
}
|
||||||
console.log(uuid);
|
console.log(uuid);
|
||||||
if (valid_uuid.test(uuid)) {
|
if (valid_uuid.test(uuid)) {
|
||||||
var filename = uuid + ".png";
|
var filename = uuid + ".png";
|
||||||
|
|||||||
134
skins.js
134
skins.js
@ -10,78 +10,78 @@ var lwip = require('lwip');
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function extract_face(inname, outname, callback) {
|
function extract_face(inname, outname, callback) {
|
||||||
var outfile = fs.createWriteStream(outname);
|
var outfile = fs.createWriteStream(outname);
|
||||||
lwip.open(inname, function(err, image) {
|
lwip.open(inname, function(err, image) {
|
||||||
image.batch()
|
image.batch()
|
||||||
.crop(8, 8, 15, 15)
|
.crop(8, 8, 15, 15)
|
||||||
.writeFile(outname, function(err) {
|
.writeFile(outname, function(err) {
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
get_profile: function(uuid, callback) {
|
get_profile: function(uuid, callback) {
|
||||||
https.get("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid, function(res) {
|
https.get("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid, function(res) {
|
||||||
if (res.statusCode == "204") {
|
if (res.statusCode == "204") {
|
||||||
callback(null);
|
callback(null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
res.on('data', function(d) {
|
res.on('data', function(d) {
|
||||||
var profile = JSON.parse(d);
|
var profile = JSON.parse(d);
|
||||||
if (profile.error) {
|
if (profile.error) {
|
||||||
console.error(profile.error);
|
console.error(profile.error);
|
||||||
callback(null);
|
callback(null);
|
||||||
} else {
|
} else {
|
||||||
callback(profile);
|
callback(profile);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}).on('error', function(e) {
|
}).on('error', function(e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
skin_url: function(profile) {
|
skin_url: function(profile) {
|
||||||
var url = null;
|
var url = null;
|
||||||
if (profile && profile.properties) {
|
if (profile && profile.properties) {
|
||||||
profile.properties.forEach(function(prop) {
|
profile.properties.forEach(function(prop) {
|
||||||
if (prop.name == 'textures') {
|
if (prop.name == 'textures') {
|
||||||
var json = Buffer(prop.value, 'base64').toString();
|
var json = Buffer(prop.value, 'base64').toString();
|
||||||
var props = JSON.parse(json);
|
var props = JSON.parse(json);
|
||||||
url = props.textures.SKIN.url;
|
url = props.textures.SKIN.url;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return url;
|
return url;
|
||||||
},
|
},
|
||||||
|
|
||||||
skin_file: function(url, filename, callback) {
|
skin_file: function(url, filename, callback) {
|
||||||
var tmpname = "skins/tmp/" + filename;
|
var tmpname = "skins/tmp/" + filename;
|
||||||
var outname = "skins/" + filename;
|
var outname = "skins/" + filename;
|
||||||
var tmpfile = fs.createWriteStream(tmpname);
|
var tmpfile = fs.createWriteStream(tmpname);
|
||||||
http.get(url, function(res) {
|
http.get(url, function(res) {
|
||||||
res.on('data', function(data) {
|
res.on('data', function(data) {
|
||||||
tmpfile.write(data);
|
tmpfile.write(data);
|
||||||
}).on('end', function() {
|
}).on('end', function() {
|
||||||
tmpfile.end();
|
tmpfile.end();
|
||||||
extract_face(tmpname, outname, function() {
|
extract_face(tmpname, outname, function() {
|
||||||
fs.unlink(tmpname, function(err) { // unlink = delete
|
fs.unlink(tmpname, function(err) { // unlink = delete
|
||||||
if (err) console.error(err);
|
if (err) console.error(err);
|
||||||
});
|
});
|
||||||
callback(); // outside unlink callback cause we don't have to wait until it's deleted
|
callback(); // outside unlink callback cause we don't have to wait until it's deleted
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
resize_img: function(inname, size, callback) {
|
resize_img: function(inname, size, callback) {
|
||||||
lwip.open("skins/" + inname, function(err, image) {
|
lwip.open("skins/" + inname, function(err, image) {
|
||||||
image.batch()
|
image.batch()
|
||||||
.resize(size, size, "nearest-neighbor") // nearest-neighbor doesn't blur
|
.resize(size, size, "nearest-neighbor") // nearest-neighbor doesn't blur
|
||||||
.toBuffer('png', function(err, buffer) {
|
.toBuffer('png', function(err, buffer) {
|
||||||
callback(buffer);
|
callback(buffer);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user