2022-06-12 18:22:07 +08:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 音·创 开发交流群 861684859
|
|
|
|
|
# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
|
|
|
|
# 版权所有 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") & 鸣凤鸽子("MingFengPigeon")
|
|
|
|
|
# 若需转载或借鉴 请依照 Apache 2.0 许可证进行许可
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
音·创自动安装器 (Musicreater Auto Installer)
|
2022-08-09 12:54:18 +08:00
|
|
|
|
对音·创的自动安装提供支持的工具
|
2022-06-12 18:22:07 +08:00
|
|
|
|
Musicreater Auto Installer (音·创自动安装器)
|
2022-08-09 12:54:18 +08:00
|
|
|
|
A tool that used for installing Musicreater automatically
|
2022-06-12 18:22:07 +08:00
|
|
|
|
|
|
|
|
|
Copyright 2022 all the developers of Musicreater
|
|
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the 'License');
|
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
distributed under the License is distributed on an 'AS IS' BASIS,
|
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
|
limitations under the License.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 下面为正文
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from sys import platform
|
|
|
|
|
from platform import architecture
|
|
|
|
|
import urllib.request
|
|
|
|
|
import zipfile
|
|
|
|
|
from os import system as srun
|
|
|
|
|
from os import walk, rename, remove, path, chdir, listdir
|
|
|
|
|
from shutil import rmtree, move
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if platform == "win32":
|
|
|
|
|
|
|
|
|
|
nowpath = __file__[: len(__file__) - __file__[len(__file__) :: -1].index('\\')]
|
|
|
|
|
|
|
|
|
|
if srun('python -V'):
|
|
|
|
|
|
|
|
|
|
print('\033[7m{}\033[0m'.format("正在下载python\nDownloading Python"))
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
urllib.request.urlretrieve(
|
|
|
|
|
"https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe"
|
|
|
|
|
if architecture()[0] == "32bit"
|
|
|
|
|
else "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe",
|
|
|
|
|
"./pythonInstaller.exe",
|
|
|
|
|
)
|
|
|
|
|
# urllib.request.urlretrieve("https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe","./pythonInstaller.exe")
|
|
|
|
|
except Exception as E:
|
|
|
|
|
input(str(E) + "\n自动下载失败,按下回车取消")
|
|
|
|
|
exit()
|
|
|
|
|
|
|
|
|
|
print('正在安装python\nInstalling Python')
|
|
|
|
|
|
|
|
|
|
# open('install.bat','w').write(f'.\\pythonInstaller.exe /passive InstallAllUsers=0 TargetDir="{nowpath}python38" DefaultJustForMeTargetDir="{nowpath}python38" AssociateFiles=0 CompileAll=1 PrependPath=0 Shortcuts=0 Include_doc=0 Include_launcher=0 InstallLauncherAllUsers=0 Include_test=0 Include_tools=0')
|
|
|
|
|
|
|
|
|
|
srun(
|
|
|
|
|
f'.\\pythonInstaller.exe /passive InstallAllUsers=1 AssociateFiles=1 CompileAll=1 PrependPath=1 Shortcuts=1 Include_doc=0 Include_exe=1 Include_pip=1 Include_lib=1 Include_tcltk=1 Include_launcher=1 InstallLauncherAllUsers=1 Include_test=0 Include_tools=0'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
remove('./pythonInstaller.exe')
|
|
|
|
|
|
|
|
|
|
# print('\033[7m{}\033[0m'.format("正在下载pip安装工具\nDownloading get-pip tool"))
|
|
|
|
|
|
|
|
|
|
# try:
|
|
|
|
|
# urllib.request.urlretrieve(
|
|
|
|
|
# "https://bootstrap.pypa.io/get-pip.py", "./python38/get-pip.py"
|
|
|
|
|
# )
|
|
|
|
|
# except Exception as E:
|
|
|
|
|
# input(str(E) + "\n自动下载失败,按下回车取消")
|
|
|
|
|
# exit()
|
|
|
|
|
|
|
|
|
|
# print('\033[7m{}\033[0m'.format("正在下载pip\nDownloading pip"))
|
|
|
|
|
|
|
|
|
|
# chdir('./python38')
|
|
|
|
|
# srun(r'".\python.exe get-pip.py')
|
|
|
|
|
|
|
|
|
|
# print('\033[7m{}\033[0m'.format('正在安装pip\nInstalling pip'))
|
|
|
|
|
|
|
|
|
|
# for dire in listdir('./Lib/site-packages/'):
|
|
|
|
|
# move('./Lib/site-packages/'+dire,'./'+dire)
|
|
|
|
|
|
|
|
|
|
# print('\033[7m{}\033[0m'.format("完成!"))
|
|
|
|
|
|
|
|
|
|
# chdir('../')
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
choseurl = int(
|
|
|
|
|
input(
|
|
|
|
|
'\033[7m{}\033[0m'.format(
|
|
|
|
|
"""请选择 音·创 下载源,默认为0
|
|
|
|
|
Please choose a download source of Musicreater(default 0)
|
|
|
|
|
[0] 私有服务器<暂无> | Private Server<Haven't been built>
|
|
|
|
|
[1] Gitee
|
|
|
|
|
[2] Github\n:"""
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
except Exception as E:
|
|
|
|
|
print('\033[7m{}\033[0m'.format(str(E) + "\n将使用默认源\nUsing default source"))
|
|
|
|
|
choseurl = 0
|
|
|
|
|
|
|
|
|
|
myurl = ""
|
|
|
|
|
Giteeurl = "https://gitee.com/EillesWan/Musicreater/repository/blazearchive/master.zip?Expires=1647771436&Signature=%2BkqLHwmvzScCd4cPQDP0LHLpqeZUxOrOv17QpRy%2FTzs%3D"
|
|
|
|
|
Githuburl = (
|
|
|
|
|
"https://codeload.github.com/EillesWan/Musicreater/zip/refs/heads/master"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
url = (
|
|
|
|
|
myurl
|
|
|
|
|
if choseurl == 0
|
|
|
|
|
else Giteeurl
|
|
|
|
|
if choseurl == 1
|
|
|
|
|
else Githuburl
|
|
|
|
|
if choseurl == 2
|
|
|
|
|
else myurl
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
print('\033[7m{}\033[0m'.format("正在下载音·创\nDownloading Musicreater"))
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
urllib.request.urlretrieve(url, "./master.zip")
|
|
|
|
|
except Exception as E:
|
|
|
|
|
input('\033[0{}\033[0m'.format(str(E) + "\n自动下载失败,按下回车取消"))
|
|
|
|
|
exit()
|
|
|
|
|
|
|
|
|
|
print('\033[7m{}\033[0m'.format("安装音·创\nInstalling Musicreater"))
|
|
|
|
|
|
|
|
|
|
zipfile.ZipFile("./master.zip", "r").extractall()
|
|
|
|
|
|
|
|
|
|
remove("./master.zip")
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
rmtree("./Musicreater")
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
rename("./Musicreater-master/", "./Musicreater/")
|
|
|
|
|
|
|
|
|
|
elif platform == 'linux':
|
|
|
|
|
srun("sudo apt-get install python3")
|
|
|
|
|
srun("sudo apt-get install python3-pip")
|
|
|
|
|
srun("sudo apt-get install git")
|
|
|
|
|
try:
|
|
|
|
|
choseurl = int(
|
|
|
|
|
input(
|
|
|
|
|
'\033[0{}\033[0m'.format(
|
|
|
|
|
"""请选择 音·创 下载源,默认为1
|
|
|
|
|
Please choose a download source of Musicreater(default 1)
|
|
|
|
|
[1] Gitee
|
|
|
|
|
[2] Github\n:"""
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
except Exception as E:
|
|
|
|
|
print(str(E) + "\n将使用默认源\nUsing default source")
|
|
|
|
|
choseurl = 1
|
|
|
|
|
|
|
|
|
|
url = (
|
|
|
|
|
"https://gitee.com/EillesWan/Musicreater.git"
|
|
|
|
|
if choseurl == 1
|
|
|
|
|
else "https://github.com/EillesWan/Musicreater.git"
|
|
|
|
|
if choseurl == 2
|
|
|
|
|
else "https://gitee.com/EillesWan/Musicreater.git"
|
|
|
|
|
)
|
|
|
|
|
srun(f"sudo git clone {url}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print('\033[7m{}\033[0m'.format("编译音·创\nCompiling Musicreater"))
|
|
|
|
|
|
|
|
|
|
if platform == "linux":
|
|
|
|
|
srun("python3 -O -m compileall -b ./Musicreater/")
|
|
|
|
|
elif platform == "win32":
|
|
|
|
|
srun("python -O -m compileall -b ./Musicreater/")
|
|
|
|
|
|
|
|
|
|
for parent, dirnames, filenames in walk("./Musicreater"):
|
|
|
|
|
for filename in filenames:
|
|
|
|
|
if filename[-3:] == ".py":
|
|
|
|
|
fn = path.join(parent, filename)
|
|
|
|
|
remove(fn)
|
|
|
|
|
print(f"删除文件 {fn}")
|
|
|
|
|
for dirname in dirnames:
|
|
|
|
|
if dirname == "__pycache__":
|
|
|
|
|
pn = path.join(parent, dirname)
|
|
|
|
|
rmtree(pn)
|
|
|
|
|
print(f"删除目录 {pn}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print(
|
|
|
|
|
'\033[7m{}\033[0m'.format(
|
|
|
|
|
"""您可以开始使用音·创了
|
|
|
|
|
我们将在后台为您安装各项支持库
|
|
|
|
|
您可以运行Musicreater文件夹中的Musicreater.pyc文件来运行音·创
|
|
|
|
|
|
|
|
|
|
You can use Musicreater now,
|
|
|
|
|
We will setup the libraries ineed for you in background,
|
|
|
|
|
You can now open Musicreater.PYC in the directory of ./Musicreater to run Musicreater
|
|
|
|
|
"""
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if platform == "linux":
|
|
|
|
|
srun("python3 -m pip install -r ./Musicreater/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/")
|
|
|
|
|
elif platform == "win32":
|
|
|
|
|
srun("pip install -r ./Musicreater/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/")
|