暂告一段落
!!!
用于获取hash的脚本:
local http = require "socket.http"
local json = require "json"
info = {}
function http.get(u)
local t = {}
local r, c, h = http.request{
url = u,
sink = ltn12.sink.table(t)}
return table.concat(t)
end
function tos(id)
local s = string.format( "== %s ==\n<pre>\n", id)
for k, c in pairs(info[id]) do
s = s..string.format( "|%s=%s\n", k, c)
end
return s.."</pre>\n\n"
end
manifest = json.decode(http.get("https://launchermeta.mojang.com/mc/game/version_manifest.json"))
ed = {}
f = assert(io.open("./1.txt", "r"))
for l in f:lines() do
local v = string.match(l, "== (.+) ==")
if v~= nil then
ed[v] = true
print("Skip "..v.."...")
end
end
f:close()
f = assert(io.open("./1.txt", "a"))
for _, c in ipairs(manifest.versions) do
if ed[c.id] == nil then
info[c.id] = {}
info[c.id].json = string.gsub(c.url,"https://launchermeta.mojang.com/v1/packages/(.+)/.+.json", "%1")
local version = json.decode(http.get(c.url))
if version.downloads.client then info[c.id].clienthash = string.gsub(version.downloads.client.url, "https://launcher.mojang.com/v1/objects/(.+)/client.jar", "%1") end
if version.downloads.server then info[c.id].serverhash = string.gsub(version.downloads.server.url, "https://launcher.mojang.com/v1/objects/(.+)/server.jar", "%1") end
if version.downloads.windows_server then info[c.id].windows = string.gsub(version.downloads.windows_server.url, "https://launcher.mojang.com/v1/objects/(.+)/windows_server.exe", "%1") end
f:write(tos(c.id))
f:flush()
print(c.id.."...")
end
end
f:close()