mineskin / api.mineskin.org Goto Github PK
View Code? Open in Web Editor NEWSource of the MineSkin API
Home Page: https://api.mineskin.org
License: MIT License
Source of the MineSkin API
Home Page: https://api.mineskin.org
License: MIT License
Hello.
I am using windows server 2008 64 bit, node js and mongo db. When I send a file, or try changing the skin, this error appears in the console.
image link : https://ibb.co/bH9bZ9X
How to convert the signature in the blob (what reverse action we need)?
I tried base64decode, but get a non-working signature.
I noticed that specifying the incorrect player model for a provided url fails. I'm not sure if this is an issue with this api or with mojang, but I do know the minecraft launcher allows you to set either model and might distort the skin to fit. Would be great if that functionality was here too, instead of just breaking.
For example,
curl -X POST "https://api.mineskin.org/generate/url?model=slim" -d "url=https://i.imgur.com/Pgu9R1s.png"
will always return
{"error":"Failed to generate skin data","err":"Authentication failed - Invalid credentials. Invalid username or password.","accountId":#}
I have tried generating many skins but only one seems to actually be successfully applied to my player. When I try generating the other ones and then try to apply them to my player once I join, it seems to get a random skin from Mineskin's global gallery. First time it happened I logged on with a shrek skin lol.
If I go to the gallery and try to download one of my own skins (any of the ones that don't work), it downloads a random skin file from the global gallery.
This is extremely annoying and it's driving me insane. Do you have any idea what could be causing this? Again, so far only ONE skin has actually worked. And it's nothing special from the others.
Here's an example. It was supposed to generate according to this skin
But it instead randomly gave me this
There seem to be quite a few invalid accounts in the system.
What I suggest to do is to (temporaily) deactivate an account when its failed and logging it out somewhere so that you can contact the owner and ask what happened.
should be easy to filter for the error msg "Authentication failed - Invalid credentials. Invalid username or password."
I observed the following accounts as being invalid:
4
6
11
13
15
18
22
26
27
28
29
30
31
36
It should return nextRequest
value, but sometimes this value missing, all other values presents.
The last generated response for me: https://pastebin.com/0RMm5L5T
Idk how important this parameter, but as i understood, it should be guaranteed to return. Few days before it worked perfectly.
I already wrote this on discord, this was fixed quickly, but seems like not fully.
if you take a look over at the gallery page, it seems as if someone is using the api to upload the same skins over and over again. possibly a hash-check is needed before applying a skin.
The Mineskin API at https://api.mineskin.org
does not match the OpenAPI specification here
key
. However when this is included the API will time outPOST /generate/user
, the UUID should be given in the json payload. However the real API expects it as the query parameter uuid
.The API should follow the OpenAPI specification, or the OpenAPI specification should be updated to match the API
Is your feature request related to a problem? Please describe.
I believe there are certain things missing from the current example config file.
Like the entire gitconfig
feature, or requestServers
?
Describe the solution you'd like
A little update & maybe some comments sprinkled in?
Describe alternatives you've considered
Building something myself to generate skin signatures. But I really don't want to.
I want to write a plugin that allows players to select existing skin on mineskin.org.
Can I just request its texture data by ID from site?
None, just sending a request will sometimes make it timeout
When it does I am greeted with a Cloudflare error page
The skin data to be returned.
Error 524 Ray ID: 5c142680028f0843 • 2020-08-11 18:53:31 UTC
A timeout occurred
You
Browser
Working
Paris
Cloudflare
Working
api.mineskin.org
Host
Error
What happened?
The origin web server timed out responding to this request.
What can I do?
If you're a visitor of this website:
Please try again in a few minutes.
If you're the owner of this website:
The connection to the origin web server was made, but the origin web server timed out before responding. The likely cause is an overloaded background task, database or application, stressing the resources on your web server. To resolve, please work with your hosting provider or web development team to free up resources for your database or overloaded application. Additional troubleshooting information here.
Cloudflare Ray ID: 5c142680028f0843 • Your IP: REDACTED • Performance & security by Cloudflare
To be redirected to the right skin (and it not to differ from steve/alex models o.0 Just found it out now by luck).
Editing the file a bit results in the right skin generated:
Found this skin in my Google Photos gallery extremely compressed and as jpg. So its original quality is lost and maybe some voodo google compression has been applied 🤷♂️
Is your feature request related to a problem? Please describe.
We have a a lot of players from SkinsRestorer that want to apply skins from http://novask.in
.
This fails as it will redirect to http://lh3.googleusercontent.com/
Example: http://novask.in/747913458.png
Describe the solution you'd like
A way that mineskin can catch the redirection and collect the skin from there.
A way for mineskin to collect a skin from a non.png link like:
http://lh3.googleusercontent.com/f7E3jItJPMnGRXeho8u-6KQXPsZk-vMZm1p4K9RnxIxVJezQZlzloo_q61RMlV3K8cnI1whmDD9MrutO4lGcfQ
Describe alternatives you've considered
We now have them upload the skin to imgur.
But it would be nice if this process can be done on mineskin side.
Additional context
SkinsRestorer = https://github.com/SkinsRestorer/SkinsRestorerX
How we intergrate mineskin = https://github.com/SkinsRestorer/SkinsRestorerX/blob/master/src/main/java/skinsrestorer/shared/utils/MineSkinAPI.java
Hi, I have a problem with making a POST request to Mineskin API and it's getting trouble with reading a file object.
Maybe it's not that related issue but it could help everyone in the future.
Here's the error:
TypeError: source.on is not a function
at Function.DelayedStream.create (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\delayed-stream\lib\delayed_stream.js:33:10)
at FormData.CombinedStream.append (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\combined-stream\lib\combined_stream.js:45:37)
at FormData.append (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\form-data\lib\form_data.js:74:3)
at C:\Users\PC\custom-skin-uploader\skin-uploader-api\server.js:21:14
at Layer.handle [as handle_request] (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\PC\custom-skin-uploader\skin-uploader-api\node_modules\express\lib\router\index.js:335:12)
Here's what I've actually made. Any solutions? i tried everything.
app.post('/upload', (req, res) => {
if(req.files === null) {
return res.status(400).json({ msg: 'No file uploaded'});
}
console.log(req.files.file);
const formData = new FormData();
formData.append('file', req.files.file);
formData.append('api', API_KEY);
axios.post('https://api.mineskin.org/generate/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then((res) => {
console.log(`Status: ${res.status}`);
console.log('Body: ', res.data);
}).catch((err) => {
console.error(err);
})
});
Hi there!
Is it possible to have an API endpoint for getting a random skin? Something like /get/random
maybe?
I thought about querying /get/id/<random number>
but some IDs are missing here even while being in the correct range and this method is also deprecated.
My use case is that I want to assign random skin to players who don't have custom skin.
There seems to be a minor issue with the output of the /give
command generated and it seems to be related to having spaces in the NBT data.
For example:
The command shown here wouldn't work:
minecraft:give <player> minecraft:player_head{ SkullOwner:{ Id:29f5f630-3109-4c4e-974a-9c530267989b, Properties:{ textures:[{ Value:"eyJ0aW1lc3RhbXAiOjE1Nzk0NTM2NDE3ODUsInByb2ZpbGVJZCI6IjE5MjUyMWI0ZWZkYjQyNWM4OTMxZjAyYTg0OTZlMTFiIiwicHJvZmlsZU5hbWUiOiJTZXJpYWxpemFibGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzgyYWQwNWVmMzNmNzdjMDJlNDQ5MmRlNzNkOTg4ZTMxMGU2Mzc3Nzc0NTAxYzM1ODUyMzE0MGQxMzFjOWZlMTIifX19", Signature:"YvosqJT4oCkQVyIhgzyik1LXjclzdBm+oM5THcN/ddqb3hoPol+r1yLQAPZL4JF0uUe+8yVxvaawoTH1pPTGhfBXMzB63jq4dBo7xrPf0ZxowSF3UkeLFqcrt8pFXUemJZEROIAXag46IwMgXIQ9lzqyyIWIWXPqEhVCb0H25Qclxje9jz6NS2cBS3JV/KaPcXLcJCQcYrHlPLAkZM7tQuiCJ0iSw9s8Uo/anmJyujnySWeMWdvguVykGlhaPx33mM/qCnvN7kHjWHpoTkXT8fioRUUJpyaJOnIGsT43RNZTzEAtZ8KZ16vwms7GNg8Z3muotF/476GoER/c16HXPeBctIQeHNlYTEyYp5iHWhmix2JlM3+eAUGZPJwbaVUW8pEZcJb2F13I2eZ/EQJAaiyBC081y5EDLBZCzVnuuXwdXKgMM2/lTp8+d2yGsf0FzopDpNfGBDhv0pxy+tFj0kEmFj4HyWTMMrELLSzZU4kuIgC+GXAhyScnSALS3oU3tIve30htERbaQIgYTzHq126fwZfc0mAItT+FUoyppw7QrXHJy+qHPkqOixl4FZ1Md5Nmd9kebtTG0vEX81fFCkEqZU4Crto6KYAK+reQV917LiCVTBORgXRK/3flgp9Fn/HovG0+LhPoJJA+P4Hw1iv6YrZRwYAO6xJ61blKU08=" }] } }, display:{ Name:"{\"text\":\"CinematicUI\"}", Lore:[ "{\"text\":\"Skin #139238042\"}", "{\"text\":\"generated on Jan 19, 2020 6:07:21 PM\"}", "{\"text\":\"via MineSkin.org\"}" ] } }
Meanwhile, this command here does work:
minecraft:give <player> minecraft:player_head{SkullOwner:{Id:29f5f630-3109-4c4e-974a-9c530267989b, Properties:{textures:[{Value:"eyJ0aW1lc3RhbXAiOjE1Nzk0NTM2NDE3ODUsInByb2ZpbGVJZCI6IjE5MjUyMWI0ZWZkYjQyNWM4OTMxZjAyYTg0OTZlMTFiIiwicHJvZmlsZU5hbWUiOiJTZXJpYWxpemFibGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzgyYWQwNWVmMzNmNzdjMDJlNDQ5MmRlNzNkOTg4ZTMxMGU2Mzc3Nzc0NTAxYzM1ODUyMzE0MGQxMzFjOWZlMTIifX19",Signature:"YvosqJT4oCkQVyIhgzyik1LXjclzdBm+oM5THcN/ddqb3hoPol+r1yLQAPZL4JF0uUe+8yVxvaawoTH1pPTGhfBXMzB63jq4dBo7xrPf0ZxowSF3UkeLFqcrt8pFXUemJZEROIAXag46IwMgXIQ9lzqyyIWIWXPqEhVCb0H25Qclxje9jz6NS2cBS3JV/KaPcXLcJCQcYrHlPLAkZM7tQuiCJ0iSw9s8Uo/anmJyujnySWeMWdvguVykGlhaPx33mM/qCnvN7kHjWHpoTkXT8fioRUUJpyaJOnIGsT43RNZTzEAtZ8KZ16vwms7GNg8Z3muotF/476GoER/c16HXPeBctIQeHNlYTEyYp5iHWhmix2JlM3+eAUGZPJwbaVUW8pEZcJb2F13I2eZ/EQJAaiyBC081y5EDLBZCzVnuuXwdXKgMM2/lTp8+d2yGsf0FzopDpNfGBDhv0pxy+tFj0kEmFj4HyWTMMrELLSzZU4kuIgC+GXAhyScnSALS3oU3tIve30htERbaQIgYTzHq126fwZfc0mAItT+FUoyppw7QrXHJy+qHPkqOixl4FZ1Md5Nmd9kebtTG0vEX81fFCkEqZU4Crto6KYAK+reQV917LiCVTBORgXRK/3flgp9Fn/HovG0+LhPoJJA+P4Hw1iv6YrZRwYAO6xJ61blKU08="}]}},display:{Name:"{\"text\":\"CinematicUI\"}",Lore:["{\"text\":\"Skin #139238042\"}","{\"text\":\"generated on Jan 19, 2020 6:07:21 PM\"}","{\"text\":\"via MineSkin.org\"}"]}}
The only difference between the two is that the first one has spaces between the brackets while the second doesn't.
Another thing I would like to suggest is to change the output from /give @p minecraft:player_head{<NBT-Data>}
to minecraft:give @p minecraft:player_head{<NBT-Data>}
for two reasons:
minecraft:
to the command is useful.Ignore me
I thought the timestamp, name is related to the actual skin data.
Uncached requests of the /get/list/[page] endpoint take very long (> 20 s) to load.
I suspect this is caused by the use of countDocuments
(introduced in 7c1fc1b).
From the MongoDB docs:
Returns the count of documents that match the query for a collection or view. The method wraps the $group aggregation stage with a $sum expression to perform the count.
On the other hand, the count
operation returns an estimated count, but using collection metadata.
Was there any reason for the change?
##Information
Using:
node v14.15.5
axios
Printout
Error: Request failed with status code 500
at createError (C:\Users\camde\Documents\code\skins\node_modules\axios\lib\core\createError.js:16:15)
at settle (C:\Users\camde\Documents\code\skins\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (C:\Users\camde\Documents\code\skins\node_modules\axios\lib\adapters\http.js:244:11)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
config: {
url: 'https://api.mineskin.org/generate/url',
method: 'post',
data: '{"url":"https://cdn.discordapp.com/attachments/808204542843813898/813614236458418237/SAILOR_3.png","variant":"slim","name":"Otis","visibility":0}',
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json;charset=utf-8',
'User-Agent': 'HelloImCamden/1.0',
'Content-Length': 145
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus]
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
socket: [Function (anonymous)],
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
timeout: [Function (anonymous)],
prefinish: [Function: requestOnPrefinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'api.mineskin.org',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'api.mineskin.org',
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 305,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(kSetNoDelay)]: false,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object],
[Symbol(RequestTimeout)]: undefined
},
_header: 'POST /generate/url HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/json;charset=utf-8\r\n' +
'User-Agent: HelloImCamden/1.0\r\n' +
'Content-Length: 145\r\n' +
'Host: api.mineskin.org\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object],
requests: {},
sockets: [Object],
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'fifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: '/generate/url',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers: [Object],
rawHeaders: [Array],
trailers: {},
rawTrailers: [],
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 500,
statusMessage: 'Internal Server Error',
client: [TLSSocket],
_consuming: false,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://api.mineskin.org/generate/url',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(RequestTimeout)]: undefined
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'api.mineskin.org',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 145,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://api.mineskin.org/generate/url',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
'user-agent': [Array],
'content-length': [Array],
host: [Array]
}
},
response: {
status: 500,
statusText: 'Internal Server Error',
headers: {
date: 'Mon, 01 Mar 2021 04:04:29 GMT',
'content-type': 'application/json; charset=utf-8',
'content-length': '111',
connection: 'close',
'set-cookie': [Array],
'cf-ray': '628f8034ffb8138a-SEA',
'access-control-allow-origin': '*',
etag: 'W/"6f-aaqOo9QpjTbIWRIzA+jo4OIix2U"',
'cf-cache-status': 'DYNAMIC',
'cf-request-id': '088d8e75180000138a2a8fb000000001',
'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"',
'x-mineskin-breadcrumb': 'c0d33a4d',
'x-mineskin-delay': '4',
'x-mineskin-server': 'melon',
'x-powered-by': 'Express',
'x-ratelimit-limit': '15',
'x-ratelimit-remaining': '14',
'x-ratelimit-reset': '1614571472',
'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report?s=YaZYQgNbPDMikwlmt65HLSo19%2ByzjkJjSxNdqRzd9mvsKZuoShd1axYjgGQhBoSL%2FuBcVNirI0ecoFzpCFdZ93zFfQO%2BP5OLZ3tHWpMMCdyB"}],"max_age":604800,"group":"cf-nel"}',
nel: '{"max_age":604800,"report_to":"cf-nel"}',
server: 'cloudflare'
},
config: {
url: 'https://api.mineskin.org/generate/url',
method: 'post',
data: '{"url":"https://cdn.discordapp.com/attachments/808204542843813898/813614236458418237/SAILOR_3.png","variant":"slim","name":"Otis","visibility":0}',
headers: [Object],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus]
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [TLSSocket],
_header: 'POST /generate/url HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/json;charset=utf-8\r\n' +
'User-Agent: HelloImCamden/1.0\r\n' +
'Content-Length: 145\r\n' +
'Host: api.mineskin.org\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: [Agent],
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: '/generate/url',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'api.mineskin.org',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype]
},
data: {
success: false,
errorType: 'GeneratorError',
errorCode: 'skin_change_failed',
error: 'Failed to change skin'
}
},
isAxiosError: true,
toJSON: [Function: toJSON]
}
I expected to find any kind of possibility to understand what the file parameter means because you can't send a file directly with json as a byte array or something like this you have to send it as a string in a specific format (most common is converting the byte array to base64)
Could you please improve your documentation, because there many details missing. Things I noticed:
/generate/textures.minecraft.net/texture/a2e6a3f8caea7913ab48237beea6d6a1a6f76936e3b71af4c7a08bb61c7870
-> 404Is your feature request related to a problem? Please describe.
I'm attempting to make use of this API in a semi-restrictive environment, and only have reliable access to the base64-encoded image. When trying to pass the decoded image to mineskin, I receive generation failures. Confirmed the image is ok by uploading through the mineskin UI manually. I assume the problem here is utf-8 encoding done to my payload, which is out of my control.
I have also tried to use the generate/url route using a Data URL https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs, but one of the checks before pulling the texture fails and I receive {"success":false,"errorType":"GeneratorError","errorCode":"invalid_image_url","error":"Failed to find image from url","nextRequest":1703510085.607,"delayInfo":{"seconds":6,"millis":6000}}
.
The data url was {"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAABAklEQVR4Xu3VMQ7CMAyF4VyBgZmBialsrIiFC3RmRuycH3CFJeu1SZlKUv2fZAFJg+xHJFKa8bx2r1I9zsdi6fc1RwfW0oG19PuaUxqytEcABEAA6wng8zJZBLCGAPRvzSsOcU+70fC21nf70Tkte6ZP2+H5WLZ2Ox3+H5A3as3E0nUbJH2Hnxpcz8eqOgBtVgOIA9rgdiPivp7TGm5BzQH4NdfGfT2G4AHEtV/OVx2ANpyrOHAcfK5KAdie9rM4bdhLg/Hrru/1OT1/SZtsALan/SxubgAf2H91WysF4J+bCcCH08b1yucCyJ1vJgAAAAAAAAAAAAAAAAAAAAAAALA6b27DnSK0ejouAAAAAElFTkSuQmCC"}
Describe the solution you'd like
I'd like either of the routes to support base64-encoded images. This is generally a more http-friendly format of data, compatible with any client. The easiest fix I believe would be supporting a data url in here - https://github.com/MineSkin/api.mineskin.org/blob/master/src/generator/Generator.ts#L864
Describe alternatives you've considered
I have considered uploading to another API, most support base64-encoded images such as the imgur api, and using the url. I would prefer not doing the extra hop.
The API suddenly stopped working today, with all skins resulting in a 502 bad gateway error. https://api.mineskin.org/generate/user/6d2fc78a-64c5-4304-87b6-65a322f7cf36
Hello,
I'm having some issues with the api getting id's.
https://pastebin.com/dLaBEnN4 (Error)
Id's used:
https://api.mineskin.org/get/id/331604
https://api.mineskin.org/get/id/325014
https://api.mineskin.org/get/id/328388
https://api.mineskin.org/get/id/328391
... and like 6 more.
Links to skins from namemc.com do not work. For example https://namemc.com/texture/266c152a597e9d9b.png
using
curl -X POST https://api.mineskin.org/generate/url --data "url=https://namemc.com/texture/266c152a597e9d9b.png"
returns
{"error":"Failed to determine file size"}
.
The skins at namemc.com are cached via cloudflare, is it denying access to your backend? HEAD
requests directly to the skin url from my machine using curl work just fine.
Is your feature request related to a problem? Please describe.
Perhaps it is. I am likely to use this API a lot and would like to avoid overloading it. I am mainly using it to convert skin images to data which contains signature and whatnot, and believe that uploading it would be deemed unnecessary.
Describe the solution you'd like
A simple endpoint that takes the skin file as an input and outputs the data. Does not store the image or skin data.
Describe alternatives you've considered
I can just use the /generate/upload endpoint to get what I want.
Additional context
Example response:
{
"model": "steve",
"data": {
"uuid": "3d7834c2-9543-4f13-9bcf-f9a14a35e2ec",
"texture": {
"value": "...",
"signature": "..."
}
},
"timestamp": 1606936920
}
Hello i use MineSkin api in my server to change player skins.
But some skins are always gives 204(no content) error code and if i try to refresh the page it gives 429(too many request) error code. I never can't get these skins.
Here following players lives that issue:
They have skins and it is visible in Minecraft premium servers. Also some sites like mcskinsearch.com can see their skins as well.
Is your feature request related to a problem? Please describe.
As minecraft requires Bearer access token to change skin, it is possible to add direct access token to account donation
Describe the solution you'd like
Add an option to account donation something like "Access token"
I would expect a timestamp to not be a floating point number... But when comparing to the timestamp inside texture-value, it is only a couple of ms off (when rounding) so the timestamp itself is not entirely wrong.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.