mirror of
https://github.com/seuyh/stellaris-dlc-unlocker.git
synced 2026-07-28 14:47:05 -07:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
SOURCE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
OUTPUT_FILE = os.path.join(SOURCE_DIR, 'hashes.json')
|
||||
|
||||
|
||||
def md5_of_stream(stream, chunk: int = 65536) -> str:
|
||||
h = hashlib.md5()
|
||||
while True:
|
||||
buf = stream.read(chunk)
|
||||
if not buf:
|
||||
break
|
||||
h.update(buf)
|
||||
return h.hexdigest()
|
||||
|
||||
|
||||
hashes: dict[str, str] = {}
|
||||
zips = sorted(f for f in os.listdir(SOURCE_DIR) if f.lower().endswith('.zip'))
|
||||
|
||||
if not zips:
|
||||
print('No .zip files found.')
|
||||
raise SystemExit
|
||||
|
||||
for zip_name in zips:
|
||||
folder = os.path.splitext(zip_name)[0]
|
||||
print(f'Now > {zip_name}...')
|
||||
|
||||
with zipfile.ZipFile(os.path.join(SOURCE_DIR, zip_name)) as zf:
|
||||
for entry in zf.infolist():
|
||||
if entry.filename.endswith('/'):
|
||||
continue
|
||||
|
||||
path = entry.filename.replace('\\', '/')
|
||||
if not path.startswith(f'{folder}/'):
|
||||
path = f'{folder}/{path}'
|
||||
|
||||
with zf.open(entry) as stream:
|
||||
hashes[path] = md5_of_stream(stream)
|
||||
|
||||
with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
|
||||
json.dump(hashes, f, indent=2, ensure_ascii=False)
|
||||
|
||||
print(f'\nDone > hashes.json ({len(hashes)} entries)')
|
||||
@@ -314,8 +314,8 @@ $INSTALL_SCRIPT = [scriptblock]::Create($BG_COMMON.ToString() + @'
|
||||
foreach ($iniPath in @((Join-Path $steamCache 'cream_api.ini'),(Join-Path $launchCache 'cream_api.ini'))) {
|
||||
if (-not (Test-Path $iniPath)) { continue }
|
||||
try {
|
||||
$wc4 = [System.Net.WebClient]::new(); $wc4.Headers.Add('User-Agent','StellarisDLCUnlocker-PS/1.0')
|
||||
$data = ($wc4.DownloadString("$_STEAMCMD_API/$_APPID") | ConvertFrom-Json); $wc4.Dispose()
|
||||
$req = [System.Net.HttpWebRequest]::Create("$_STEAMCMD_API/$_APPID"); $req.Timeout = 3000
|
||||
$data = ([System.IO.StreamReader]::new($req.GetResponse().GetResponseStream()).ReadToEnd() | ConvertFrom-Json)
|
||||
$csv = $data.data."$_APPID".extended.listofdlc
|
||||
if ($csv) {
|
||||
$exist = Get-Content $iniPath -Raw
|
||||
@@ -327,8 +327,10 @@ $INSTALL_SCRIPT = [scriptblock]::Create($BG_COMMON.ToString() + @'
|
||||
try {
|
||||
foreach ($id in ($csv -split ',')) {
|
||||
$id = $id.Trim(); if (-not $id -or $exist -match $id) { continue }
|
||||
$wc5 = [System.Net.WebClient]::new(); $wc5.Headers.Add('User-Agent','StellarisDLCUnlocker-PS/1.0')
|
||||
$name = try { ($wc5.DownloadString("$_STEAMCMD_API/$id") | ConvertFrom-Json).data."$id".common.name; $wc5.Dispose() } catch { $id }
|
||||
$name = try {
|
||||
$req2 = [System.Net.HttpWebRequest]::Create("$_STEAMCMD_API/$id"); $req2.Timeout = 3000
|
||||
([System.IO.StreamReader]::new($req2.GetResponse().GetResponseStream()).ReadToEnd() | ConvertFrom-Json).data."$id".common.name
|
||||
} catch { $id }
|
||||
$sw.WriteLine("$id = $name"); $added++
|
||||
}
|
||||
} finally { $sw.Dispose(); $fs.Dispose() }
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
[
|
||||
{
|
||||
"name": "cream_api.ini",
|
||||
"sha": "d98c8ad7de27e0172e49aa0d770163a701dae06c"
|
||||
},
|
||||
{
|
||||
"name": "sdkencryptedappticket64.dll",
|
||||
"sha": "19bbbf3af4d0bda56c49e8ed7098bca80b2cf37e"
|
||||
},
|
||||
{
|
||||
"name": "steam_api64.dll",
|
||||
"sha": "8c49f53089d48959e46dd9ae2acea96d7870a75b"
|
||||
},
|
||||
{
|
||||
"name": "steam_api64_o.dll",
|
||||
"sha": "e1ca6923adda8e2cf8c520593ad069011f69646d"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,30 @@
|
||||
[
|
||||
{
|
||||
"name": "Emulator64.dll",
|
||||
"sha": "4128adfbcdd6fa8efc73e45debbc1f0c3233af64"
|
||||
},
|
||||
{
|
||||
"name": "LinkNeverDie_Com_64.dll",
|
||||
"sha": "6a9c423ee3a4af8ecca1d31556682dfc327baa27"
|
||||
},
|
||||
{
|
||||
"name": "SWLoader.txt",
|
||||
"sha": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"name": "SWconfig.ini",
|
||||
"sha": "fb927bcd92db3d89f1f64d31c56480f1d463ba84"
|
||||
},
|
||||
{
|
||||
"name": "cream_api.ini",
|
||||
"sha": "26dd85c4055f483cb742fd460ca88afa52c6c7b5"
|
||||
},
|
||||
{
|
||||
"name": "steam_api64_org_game.dll",
|
||||
"sha": "3b253860484ea18ecbfc4844303ee78bef6b9d46"
|
||||
},
|
||||
{
|
||||
"name": "steam_api64_org_launcher.dll",
|
||||
"sha": "00132885cb3270a0db68de55b0c4781b642f37f1"
|
||||
}
|
||||
]
|
||||
+1
-1
@@ -189,7 +189,7 @@
|
||||
},
|
||||
{
|
||||
"dlc_name": "Nomads",
|
||||
"dlc_folder": ""
|
||||
"dlc_folder": "dlc040_nomads"
|
||||
},
|
||||
{
|
||||
"dlc_name": "Willpower",
|
||||
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"dlc001_symbols_of_domination/dlc001.dlc": "9c0840c86511dd7013294e61464f7059",
|
||||
"dlc001_symbols_of_domination/dlc001.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc001_symbols_of_domination/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc002_arachnoid/dlc002.dlc": "5c9e154c99a0b0968b6d7cf980d6f73e",
|
||||
"dlc002_arachnoid/dlc002.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc002_arachnoid/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc003_signup_bonus/dlc003.dlc": "4b37923050653d850c2050e429aa8f52",
|
||||
"dlc003_signup_bonus/dlc003.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc003_signup_bonus/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc004_plantoid/dlc004.dlc": "6ac219ab1b6198664a4f79ca06a481b4",
|
||||
"dlc004_plantoid/dlc004.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc004_plantoid/thumbnail.png": "4422812bc9d6751a1268ef3c281d7568",
|
||||
"dlc005_novel/Stellaris_novel.epub": "cfb4eddbf613ad0a04664581cb310c0b",
|
||||
"dlc005_novel/Stellaris_novel.mobi": "85f7c7ffdc2768b2eb66ca9745798657",
|
||||
"dlc005_novel/Stellaris_novel.pdf": "6133d0babf0295cffadcdf806b088d2f",
|
||||
"dlc005_novel/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc010_creatures_of_the_void/dlc010.dlc": "b72d8a133381d5411fb98fc00c5264a7",
|
||||
"dlc010_creatures_of_the_void/dlc010.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc010_creatures_of_the_void/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc012_leviathans/dlc012.dlc": "e99a8bbaf8d1ff33d8f7d77861919948",
|
||||
"dlc012_leviathans/dlc012.zip": "435e42999bb949dca9b2c92a39ba5952",
|
||||
"dlc012_leviathans/thumbnail.png": "e3ddbe1a365e848717d60cdb6c7eaed4",
|
||||
"dlc013_horizon_signal/dlc013.dlc": "49aa78290086f990bb8511a5de662214",
|
||||
"dlc013_horizon_signal/dlc013.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc013_horizon_signal/thumbnail.png": "1d4090a0e08de11d33e8a4a8e9f82c0a",
|
||||
"dlc014_utopia/dlc014.dlc": "d824a2eafbf4c0bc5827aa8acff917d6",
|
||||
"dlc014_utopia/dlc014.zip": "b54a2b669fe35539b364e2116ee69a59",
|
||||
"dlc014_utopia/thumbnail.png": "998761fcef263ae523bc9047c54176d8",
|
||||
"dlc015_anniversary/dlc015.dlc": "78df5dbc67655cc006bc3f6f4c028082",
|
||||
"dlc015_anniversary/dlc015.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc015_anniversary/thumbnail.png": "ce02ae2ade81b274d3fe39cb28218266",
|
||||
"dlc016_synthetic_dawn/dlc016.dlc": "d9da8e6e6f6f6024fd5db132c92dd738",
|
||||
"dlc016_synthetic_dawn/dlc016.zip": "404f99cf5a9ff0f74e3ea801f12608b7",
|
||||
"dlc016_synthetic_dawn/thumbnail.png": "39ebf9f487034b8d745df13cc37d11cd",
|
||||
"dlc017_apocalypse/dlc017.dlc": "29bfdf78d110bb04930ca788b4468116",
|
||||
"dlc017_apocalypse/dlc017.zip": "d1b0b958921a24a8eed2f2d54f49a89a",
|
||||
"dlc017_apocalypse/thumbnail.png": "397ba8aad7208c2f049cac52c00b0528",
|
||||
"dlc018_humanoids/dlc018.dlc": "c702e485a7bd33266c1ffcfa27b09938",
|
||||
"dlc018_humanoids/dlc018.zip": "a470a8b22d219edba03e7869838a7c4c",
|
||||
"dlc018_humanoids/thumbnail.png": "ab6d4d99d3b6cda4ec3b6b88994fc195",
|
||||
"dlc019_distant_stars/dlc019.dlc": "bf6f190423110fd178a7360049b3ffed",
|
||||
"dlc019_distant_stars/dlc019.zip": "0bd0672910f44fc0e79619635455b1c4",
|
||||
"dlc019_distant_stars/thumbnail.png": "57ccdfee305a595f296f8331d23f585c",
|
||||
"dlc020_megacorp/dlc020.dlc": "e9d83f6ec1bb06e61f5523ecab247789",
|
||||
"dlc020_megacorp/dlc020.zip": "bd7d5cbdf96c85338348a6476cf8dbb4",
|
||||
"dlc020_megacorp/thumbnail.png": "19f441061a5f1799e30c70bdd9ca5e10",
|
||||
"dlc021_ancient_relics/dlc021.dlc": "168a6e07e171eaed73dfb6fc7b69b2a5",
|
||||
"dlc021_ancient_relics/dlc021.zip": "9146fcd73978430621328c608c893f06",
|
||||
"dlc021_ancient_relics/thumbnail.png": "3b896026259d9a300bf908f6c7ecb691",
|
||||
"dlc022_lithoids/dlc022.dlc": "8b38b206f07ff98d3a5e4289449b7d5b",
|
||||
"dlc022_lithoids/dlc022.zip": "ef983f64508b7aa2fe301df08f450c04",
|
||||
"dlc022_lithoids/thumbnail.png": "2c63634b00cc3ddd4d2168f25d524278",
|
||||
"dlc023_federations/dlc023.dlc": "c6a1c6ea0b244e9808585727aade0024",
|
||||
"dlc023_federations/dlc023.zip": "abc37a5d328cb0afe25ef603ce7fc4a5",
|
||||
"dlc023_federations/thumbnail.png": "8bcc46b43ffc36400d2a7f70bb908075",
|
||||
"dlc024_necroids/dlc024.dlc": "fd5a5c757fa27814e3f9581c7e1ae249",
|
||||
"dlc024_necroids/dlc024.zip": "11009342fe953e2caec19290c657d3cf",
|
||||
"dlc024_necroids/thumbnail.png": "d7f4c961ad2203421a64f62e1da22a6a",
|
||||
"dlc025_nemesis/dlc025.dlc": "08382c61d7e0da982bd2752448900b29",
|
||||
"dlc025_nemesis/dlc025.zip": "e7c82a68989ab5e3a60c4a43867715fc",
|
||||
"dlc025_nemesis/thumbnail.png": "4c58983160034127af75700dc3282198",
|
||||
"dlc026_aquatics/dlc026.dlc": "2bac138898cd92246b8dcb41d0edb6fb",
|
||||
"dlc026_aquatics/dlc026.zip": "a23d91ac9cfc8dcfc4db16b78b8e250a",
|
||||
"dlc026_aquatics/thumbnail.png": "84999d2dd2e03d5bd5c08d5639a800a8",
|
||||
"dlc027_overlord/dlc027.dlc": "23967af0786af7b94683dd2b34692241",
|
||||
"dlc027_overlord/dlc027.zip": "a34513f91d00892160a30462ec5779bb",
|
||||
"dlc027_overlord/thumbnail.png": "88704a81eea8a89b1306515c079a5342",
|
||||
"dlc028_toxoids/dlc028.dlc": "19d3636edc28e4f0577a9635cc007e43",
|
||||
"dlc028_toxoids/dlc028.zip": "55b90bd49f985cc48f30db87e683b8b8",
|
||||
"dlc028_toxoids/thumbnail.png": "5a9c81f654d46f2614b9d05653347c83",
|
||||
"dlc029_firstcontact/dlc029.dlc": "5797c79e6a422f416e3198e68c69a54d",
|
||||
"dlc029_firstcontact/dlc029.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc029_firstcontact/thumbnail.png": "aacb1abae3b160fdf9338a8c3c863002",
|
||||
"dlc030_paragon/dlc030.dlc": "f09c8599376dab27dfc27df088fed82c",
|
||||
"dlc030_paragon/dlc030.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc030_paragon/thumbnail.png": "800722f934a35bee18d81bc8c0576590",
|
||||
"dlc031_astral_planes/dlc031.dlc": "2176d990daefb2a9e5674bf1a6c6c12f",
|
||||
"dlc031_astral_planes/dlc031.zip": "76b0c2498f572153080726cc67f20e22",
|
||||
"dlc031_astral_planes/thumbnail.png": "80f0266e425fad418873c338e636080c",
|
||||
"dlc032_machine_age/dlc032.dlc": "1c4f17f1ec0ff93ea26d0ce0b10e4132",
|
||||
"dlc032_machine_age/dlc032.zip": "c695b5c4b0b50d7e327401102ed1cbc9",
|
||||
"dlc032_machine_age/thumbnail.png": "6e032eea764b7714ba8094c02516b5de",
|
||||
"dlc033_cosmic_storms/dlc033.dlc": "7f7ca45cf14699199322af4002c882c4",
|
||||
"dlc033_cosmic_storms/dlc033.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc033_cosmic_storms/thumbnail.png": "358a9e7f767a6d5462b69439a611afd8",
|
||||
"dlc034_grand_archive/dlc034.dlc": "babef45ad8ef0b5628800aaae1b68fb6",
|
||||
"dlc034_grand_archive/dlc034.zip": "d68397566cd3045a0423b126ba16b1ec",
|
||||
"dlc034_grand_archive/thumbnail.png": "e3ad1747fa0b5f7c16caecc2adf6ef29",
|
||||
"dlc035_rick_the_cube/dlc035.dlc": "bccb7a17defbd07ee9956db98a4e6592",
|
||||
"dlc035_rick_the_cube/dlc035.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc035_rick_the_cube/thumbnail.png": "a5bf32ef38b3bc8bda5b42481f700dcb",
|
||||
"dlc036_biogenesis/dlc036.dlc": "097aa04c5d487b4a961072e05d786411",
|
||||
"dlc036_biogenesis/dlc036.zip": "15c3db3fd63651e204260004ea477b73",
|
||||
"dlc036_biogenesis/thumbnail.png": "8b285bd08412c478dfc41a81e9e5c7c7",
|
||||
"dlc037_shadows_shroud/dlc037.dlc": "dd3cc47d0196d3679000fc3e326b4174",
|
||||
"dlc037_shadows_shroud/dlc037.zip": "14ffc50ac5bd038c180e1b734e8916a6",
|
||||
"dlc037_shadows_shroud/thumbnail.png": "df5511334b0dd2058758e5066aa73ba8",
|
||||
"dlc038_infernals/dlc038.dlc": "0b794a56401f337dd7b06fd3bfefeb8d",
|
||||
"dlc038_infernals/dlc038.zip": "cbf58b954824ef447c5e7881937ec38c",
|
||||
"dlc038_infernals/thumbnail.png": "d92c504e1d659cc3b701b474d66c0277",
|
||||
"dlc039_stargazer/dlc039.dlc": "5795814cd7c2f66eb0e0f818bc3db4f3",
|
||||
"dlc039_stargazer/dlc039.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc039_stargazer/thumbnail.png": "021d72c1a182f3ae2e74bb22d1ba9c8d",
|
||||
"dlc040_nomads/dlc040.dlc": "f974cd34ec935aa42bd39525b411c098",
|
||||
"dlc040_nomads/dlc040.zip": "b80e6eda83a8c287c15010cad3779fab",
|
||||
"dlc040_nomads/thumbnail.png": "f358105aed7b81996b3dec5eedc7607d",
|
||||
"dlc042_vipra_the_vapor/dlc042.dlc": "cf96cc7ec346847339528521b1a0269f",
|
||||
"dlc042_vipra_the_vapor/dlc042.zip": "76cdb2bad9582d23c1f6f4d868218d6c",
|
||||
"dlc042_vipra_the_vapor/thumbnail.png": "801fc56be2e67c220dbc9b1ad3359399"
|
||||
}
|
||||
Reference in New Issue
Block a user