From e03e697537a787c3361ed99e66eba0d964567792 Mon Sep 17 00:00:00 2001 From: Rene <74483226+MinazukiAmane@users.noreply.github.com> Date: Wed, 18 Jan 2023 19:54:26 +0700 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 129 ++++++++++++++++++++++++++++++ GenshinCn.py | 30 +++++++ GenshinGlobal.php | 141 ++++++++++++++++++++++++++++++++ README.md | 199 ++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 6 files changed, 502 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 GenshinCn.py create mode 100644 GenshinGlobal.php create mode 100644 README.md create mode 100644 requirements.txt diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6e4761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/GenshinCn.py b/GenshinCn.py new file mode 100644 index 0000000..2df3e9c --- /dev/null +++ b/GenshinCn.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +import sys +import json +import requests +import collections +if __name__ == "__main__": + with open('README.md','a+') as readme: + readme.seek(0) + sys.stdout = readme + stringContent=str(requests.get('https://sdk-static.mihoyo.com/hk4e_cn/mdk/launcher/api/resource?key=eYd89JmJ&launcher_id=18').content,'utf-8') + jsonFile=json.loads(readme.read().strip().strip('```'),object_pairs_hook=collections.OrderedDict) + changed = False + pre_download_game=None + try: + pre_download_game=json.loads(stringContent)['data']['pre_download_game'] + except: + pre_download_game="" + if jsonFile['pre_download_game']!=pre_download_game: + jsonFile['pre_download_game']=pre_download_game + changed=True + latest=json.loads(stringContent)['data']['game']['latest'] + if jsonFile['latest']!=latest: + deprecated_packages=jsonFile['deprecated_packages'] + deprecated_packages.append(jsonFile['latest']) + jsonFile['latest']=latest + changed=True + if changed: + readme.seek(0) + readme.truncate() + print('```\n'+json.dumps(jsonFile,ensure_ascii=False,indent=4,separators=(',',':'))+'\n```') diff --git a/GenshinGlobal.php b/GenshinGlobal.php new file mode 100644 index 0000000..8c70eac --- /dev/null +++ b/GenshinGlobal.php @@ -0,0 +1,141 @@ + "https://sdk-os-static.mihoyo.com/hk4e_global/mdk/launcher/api/resource?channel_id=1&key=gcStgarh&launcher_id=10&sub_channel_id=0", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + ) +); + +$ResponcURL = json_decode(curl_exec($curl), true); + +curl_close($curl); + +// PEMBATAS + +$CekAPI = array(); + +if ($ResponcURL['message'] != "OK") { + $CekAPI['name'] = 'Genshin Impact Data Links'; + $CekAPI['site'] = 'genshin.mihoyo.com'; + $CekAPI['error'] = true; + $CekAPI['message'] = 'Error fetching from API'; + print_r(json_encode($CekAPI)); +} else { + $CekAPI['name'] = 'Genshin Impact Data Links'; + $CekAPI['site'] = 'genshin.mihoyo.com'; + $CekAPI['error'] = false; + $CekAPI['message'] = 'success'; + + // PEMBATAS + + $DataGameTerbaru = array( + 'version' => $ResponcURL['data']['game']['latest']['version'], + 'path' => $ResponcURL['data']['game']['latest']['path'], + 'md5' => $ResponcURL['data']['game']['latest']['md5'], + ); + + $DataSuaraTerbaru = array(); + foreach ($ResponcURL['data']['game']['latest']['voice_packs'] as $k => $v) { + $DataSuaraTerbaru['voice_packs'][$k]['language'] = $ResponcURL['data']['game']['latest']['voice_packs'][$k]['language']; + $DataSuaraTerbaru['voice_packs'][$k]['name'] = $ResponcURL['data']['game']['latest']['voice_packs'][$k]['name']; + $DataSuaraTerbaru['voice_packs'][$k]['path'] = $ResponcURL['data']['game']['latest']['voice_packs'][$k]['path']; + $DataSuaraTerbaru['voice_packs'][$k]['md5'] = $ResponcURL['data']['game']['latest']['voice_packs'][$k]['md5']; + }; + + $GabungGameSuaraTerbaru = array( + 'latest' => array_merge($DataGameTerbaru, $DataSuaraTerbaru), + ); + + $DataUpgradeTerbaru = array(); + foreach ($ResponcURL['data']['game']['diffs'] as $k0 => $v0) { + $DataUpgradeTerbaru[$k0]['version'] = $ResponcURL['data']['game']['diffs'][$k0]['version']; + $DataUpgradeTerbaru[$k0]['name'] = $ResponcURL['data']['game']['diffs'][$k0]['name']; + $DataUpgradeTerbaru[$k0]['path'] = $ResponcURL['data']['game']['diffs'][$k0]['path']; + $DataUpgradeTerbaru[$k0]['md5'] = $ResponcURL['data']['game']['diffs'][$k0]['md5']; + foreach ($ResponcURL['data']['game']['diffs'][$k0]['voice_packs'] as $k1 => $v1) { + $DataUpgradeTerbaru[$k0]['voice_packs'][$k1]['language'] = $ResponcURL['data']['game']['diffs'][$k0]['voice_packs'][$k1]['language']; + $DataUpgradeTerbaru[$k0]['voice_packs'][$k1]['name'] = $ResponcURL['data']['game']['diffs'][$k0]['voice_packs'][$k1]['name']; + $DataUpgradeTerbaru[$k0]['voice_packs'][$k1]['path'] = $ResponcURL['data']['game']['diffs'][$k0]['voice_packs'][$k1]['path']; + $DataUpgradeTerbaru[$k0]['voice_packs'][$k1]['md5'] = $ResponcURL['data']['game']['diffs'][$k0]['voice_packs'][$k1]['md5']; + } + } + + $GabungDataUpgradeTerbaru = array( + 'diffs' => array_merge($DataUpgradeTerbaru), + ); + + $GabungDataUpgradeTerbaru = array( + 'game' => array_merge($GabungGameSuaraTerbaru, $GabungDataUpgradeTerbaru) + ); + + // PEMBATAS + + $DataPlugin = array(); + foreach ($ResponcURL['data']['plugin']['plugins'] as $k => $v) { + $DataPlugin['plugins'][$k]['name'] = $ResponcURL['data']['plugin']['plugins'][$k]['name']; + $DataPlugin['plugins'][$k]['path'] = $ResponcURL['data']['plugin']['plugins'][$k]['path']; + $DataPlugin['plugins'][$k]['md5'] = $ResponcURL['data']['plugin']['plugins'][$k]['md5']; + } + + $GabungPlugin = array( + 'plugin' => $DataPlugin + ); + + // PEMBATAS + + $DataGamePraUnduh = array( + 'version' => $ResponcURL['data']['pre_download_game']['latest']['version'], + 'path' => $ResponcURL['data']['pre_download_game']['latest']['path'], + 'md5' => $ResponcURL['data']['pre_download_game']['latest']['md5'], + ); + + $DataSuaraPraUnduh = array(); + foreach ($ResponcURL['data']['pre_download_game']['latest']['voice_packs'] as $k => $v) { + $DataSuaraPraUnduh['voice_packs'][$k]['language'] = $ResponcURL['data']['pre_download_game']['latest']['voice_packs'][$k]['language']; + $DataSuaraPraUnduh['voice_packs'][$k]['name'] = $ResponcURL['data']['pre_download_game']['latest']['voice_packs'][$k]['name']; + $DataSuaraPraUnduh['voice_packs'][$k]['path'] = $ResponcURL['data']['pre_download_game']['latest']['voice_packs'][$k]['path']; + $DataSuaraPraUnduh['voice_packs'][$k]['md5'] = $ResponcURL['data']['pre_download_game']['latest']['voice_packs'][$k]['md5']; + }; + + $DataPraUnduh = array(); + foreach ($ResponcURL['data']['pre_download_game']['diffs'] as $k0 => $v0) { + $DataPraUnduh[$k0]['version'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['version']; + $DataPraUnduh[$k0]['name'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['name']; + $DataPraUnduh[$k0]['path'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['path']; + $DataPraUnduh[$k0]['md5'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['md5']; + foreach ($ResponcURL['data']['pre_download_game']['diffs'][$k0]['voice_packs'] as $k1 => $v1) { + $DataPraUnduh[$k0]['voice_packs'][$k1]['language'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['voice_packs'][$k1]['language']; + $DataPraUnduh[$k0]['voice_packs'][$k1]['name'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['voice_packs'][$k1]['name']; + $DataPraUnduh[$k0]['voice_packs'][$k1]['path'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['voice_packs'][$k1]['path']; + $DataPraUnduh[$k0]['voice_packs'][$k1]['md5'] = $ResponcURL['data']['pre_download_game']['diffs'][$k0]['voice_packs'][$k1]['md5']; + } + } + + $GabungDataPraUnduh = array( + 'diffs' => array_merge($DataPraUnduh), + ); + + $GabungGameSuaraPraUnduh = array( + 'pre_download_game' => array_merge($DataGamePraUnduh, $DataSuaraPraUnduh, $GabungDataPraUnduh), + ); + + // PEMBATAS + + $GabungSemua = array( + 'data' => array_merge($GabungDataUpgradeTerbaru, $GabungPlugin, $GabungGameSuaraPraUnduh), + ); + + // PEMBATAS + + $Hasil = array_merge($GabungSemua); + print_r(json_encode($Hasil)); +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..bfd9dcc --- /dev/null +++ b/README.md @@ -0,0 +1,199 @@ +``` +{ + "pre_download_game":null, + "latest":{ + "name":"", + "version":"3.4.0", + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip", + "size":"95809731298", + "md5":"a04c6e422656a44924bad95f8648cf9e", + "entry":"YuanShen.exe", + "voice_packs":[ + { + "language":"zh-cn", + "name":"", + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/Audio_Chinese_3.4.0.zip", + "size":"16997081416", + "md5":"56dce864d6eb4780fd2f055263b1ca39", + "package_size":"8493297828" + }, + { + "language":"en-us", + "name":"", + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/Audio_English(US)_3.4.0.zip", + "size":"19423737938", + "md5":"06ca7f33819fbe54f84a3327a927e92d", + "package_size":"9706626089" + }, + { + "language":"ja-jp", + "name":"", + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/Audio_Japanese_3.4.0.zip", + "size":"21764495116", + "md5":"ebd0a2fbeff04a2a36ad9d219c054a91", + "package_size":"10877004678" + }, + { + "language":"ko-kr", + "name":"", + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/Audio_Korean_3.4.0.zip", + "size":"16674958870", + "md5":"c93a3cd67024cdc061b87a8c4d5636e6", + "package_size":"8332236555" + } + ], + "decompressed_path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/ScatteredFiles", + "segments":[ + { + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip.001", + "md5":"c6dffa721b9610a84652258b66402475" + }, + { + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip.002", + "md5":"fbd1f0dfac83ca48fda7cf49ccb40052" + }, + { + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip.003", + "md5":"157aced7e87c852a5af4fc617fd85f55" + }, + { + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip.004", + "md5":"22a2d144a7cc4af59aa401f3c0eff733" + }, + { + "path":"https://autopatchcn.yuanshen.com/client_app/download/pc_zip/20230109134623_pLhUB4LFubdudxQa/YuanShen_3.4.0.zip.005", + "md5":"10129a5815eadf8a4571b8652c51c092" + } + ], + "package_size":"47899622769" + }, + "deprecated_packages":[ + { + "name":"", + "version":"1.0.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/04874b5ed14055383219644f40b514ca/YuanShen_1.0.0.zip", + "md5":"7D1C0778A7EB4C99F2C19266629E1EB2" + }, + { + "name":"", + "version":"1.0.1", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20201013_f0953d8d130df56f/YuanShen_1.0.1.zip", + "md5":"9F0E001B07BC45F5590190B9FAC942D4" + }, + { + "name":"", + "version":"1.1.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20201111_bc67429d0c160eff/YuanShen_1.1.0.zip", + "md5":"16D06247FBDE450FCBFAC6312DAF7B3A" + }, + { + "name":"", + "version":"1.2.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20201223_267c0ad2673e87a2/YuanShen_1.2.0.zip", + "md5":"D84EE6B56496F9740274C3B729CB6DBD" + }, + { + "name":"", + "version":"1.3.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210203_e24bc564fc91a013/YuanShen_1.3.0.zip", + "md5":"F7658D1099E5FBDC586BF7F1E7876EC6" + }, + { + "name":"", + "version":"1.3.2", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210210_78f8a53c55c370fc/YuanShen_1.3.2.zip", + "md5":"802A54E3FFE58377388F0E890DB56540" + }, + { + "name":"", + "version":"1.4.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210317_67c8f1002bb26672/YuanShen_1.4.0.zip", + "md5":"D8FBE65C328069F7981A3A497C53A5A3" + }, + { + "name":"", + "version":"1.5.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210428_4f4c4896195a34be/YuanShen_1.5.0.zip", + "md5":"83E9034FF0E4AFD2EB212E885990AF7B" + }, + { + "name":"", + "version":"1.5.1", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210430_ecaaf3c411f5f79f/YuanShen_1.5.1.zip", + "size":"27380416512", + "md5":"19C6C706F35A06744896D756B0766AB8", + "entry":"YuanShen.exe", + "voice_packs":[ + { + "language":"zh-cn", + "name":"Audio_Chinese_1.5.1.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210430_ecaaf3c411f5f79f/Audio_Chinese_1.5.1.zip", + "size":"5905580032", + "md5":"F9329043CBD673D0BA3A4F982047EF5A" + }, + { + "language":"en-us", + "name":"Audio_English(US)_1.5.1.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210430_ecaaf3c411f5f79f/Audio_English(US)_1.5.1.zip", + "size":"6442450944", + "md5":"9E2F8CC38925D69A25B602CD5EE67A00" + }, + { + "language":"ja-jp", + "name":"Audio_Japanese_1.5.1.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210430_ecaaf3c411f5f79f/Audio_Japanese_1.5.1.zip", + "size":"6657199308", + "md5":"75B99865DC961E41AE4256E781F47B34" + }, + { + "language":"ko-kr", + "name":"Audio_Korean_1.5.1.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210430_ecaaf3c411f5f79f/Audio_Korean_1.5.1.zip", + "size":"5583457484", + "md5":"00285C3078007FE88C889807154955D6" + } + ], + "decompressed_path":"" + }, + { + "name":"", + "version":"1.6.0", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210609_cda4068353f840c3/YuanShen_1.6.0.zip", + "size":"30172145254", + "md5":"8607C66D55B51E7AB2F94709E0C9C771", + "entry":"YuanShen.exe", + "voice_packs":[ + { + "language":"zh-cn", + "name":"Audio_Chinese_1.6.0.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210609_cda4068353f840c3/Audio_Chinese_1.6.0.zip", + "size":"6979321856", + "md5":"83D69368B7E4427F4CCB06E199C46F47" + }, + { + "language":"en-us", + "name":"Audio_English(US)_1.6.0.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210609_cda4068353f840c3/Audio_English(US)_1.6.0.zip", + "size":"7516192768", + "md5":"A10EAAB588EDF8FCABA6C727473E1DDD" + }, + { + "language":"ja-jp", + "name":"Audio_Japanese_1.6.0.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210609_cda4068353f840c3/Audio_Japanese_1.6.0.zip", + "size":"8053063680", + "md5":"9D20DC6E8071AED6D558A3827F6A3637" + }, + { + "language":"ko-kr", + "name":"Audio_Korean_1.6.0.zip", + "path":"https://autopatchcn.yuanshen.com/client_app/pc_mihoyo/20210609_cda4068353f840c3/Audio_Korean_1.6.0.zip", + "size":"6657199308", + "md5":"03A78F6BA6451ABFDE5FCC41C41743E0" + } + ], + "decompressed_path":"" + } + ] +} +``` diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..f229360 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +requests