Compare commits
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
432fa95a6d | |||
944b4e54a7 | |||
780e174118 | |||
fde16dde53 | |||
a8f4e76e9b | |||
cf3c2fa312 | |||
5ffafa8219 | |||
58dce5d117 | |||
9ba8319592 | |||
fe7a964a32 | |||
34e1e66647 | |||
a027fd86dd | |||
469683ed5f | |||
03f2e038aa | |||
b472d53fe5 | |||
631c87a56c | |||
61f0830c5c | |||
0fa99260c7 | |||
1e4f157f79 | |||
3b8d2c676a | |||
|
1cbcbf9f94 | ||
|
52ac3daaf8 | ||
|
ff26814377 | ||
|
1951d06f45 | ||
|
d787407e03 | ||
|
1ffdd52181 | ||
|
f4af7bd446 | ||
|
c07ef321d5 | ||
|
a42d61536f | ||
d6bf491a51 |
125
README.md
125
README.md
@ -1,126 +1,3 @@
|
||||
# 盒子助手Docker版
|
||||
## 🤔 这是什么?
|
||||
https://github.com/wukongdaily/tvhelper-docker
|
||||
|
||||
该项目可以让你使用电脑、NAS等一切能运行docker的设备变成盒子的ADB安装助手。让你的盒子用起来更加得心应手。<br>
|
||||
另外【OpenWrt版本盒子助手命令行】可以[点击这里直达](https://github.com/wukongdaily/tvhelper)
|
||||
## 💡 特色功能
|
||||
|
||||
- 💻 支持`一键修改安卓原生电视盒子/TV的NTP服务器地址`
|
||||
- 💻 支持`SSH连接 且容器内ADB服务均已准备就绪,无需额外安装`
|
||||
- 🔑 支持`安装装机必备app 尤其是文件管理器和三方市场、图标等`
|
||||
- 🌏 支持`一键批量安装主机上指定目录的全部apk`
|
||||
- 🐋 支持`Docker compose和 docker cli`一键部署
|
||||
- 📕 支持`为国行Sony电视安装时下流行的流媒体应用`
|
||||
- ❓ 兼容`ARMv7/ARM64/x86_64 双平台设备
|
||||
- ❓ 其他功能和特点会持续迭代
|
||||
- MacOS(Apple芯片/Intel芯片)✅
|
||||
- Windows 10/11 ✅
|
||||
- Linux发行版 ✅
|
||||
- NAS系统(群晖、威联通等)✅
|
||||
- 软路由iStoreOS/OpenWrt ✅
|
||||
|
||||
|
||||
## 🚀 快速上手
|
||||
|
||||
### 1. 安装`Docker`和`Docker compose`
|
||||
|
||||
- `Docker`安装教程:[https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
|
||||
- `Docker compose`安装教程:[https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
|
||||
- `个人普通电脑`安装教程:https://docs.docker.com/get-docker/
|
||||
- `docker镜像主页` https://hub.docker.com/repository/docker/wukongdaily/box/tags
|
||||
|
||||
### 2. 下载image
|
||||
|
||||
```bash
|
||||
docker pull wukongdaily/box:latest
|
||||
```
|
||||
|
||||
### 3. 容器系统默认账号密码或环境变量
|
||||
|
||||
- 容器内运行的就是alpine linux系统。
|
||||
- ssh用户名和密码分别是:`root`和`password`
|
||||
- 推荐ssh端口映射到主机端口为2299。<br>
|
||||
> 调用形式举例
|
||||
|
||||
`ssh root@宿主机ip地址 -p 2299`
|
||||
|
||||
> SSH常见错误举例和新手指南详见
|
||||
|
||||
https://github.com/wukongdaily/HowToUseSSH <br>
|
||||
- 容器内的环境变量
|
||||
- `PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools`
|
||||
|
||||
|
||||
### 4. 运行
|
||||
- Windows电脑使用-CMD写法,注意不是powershell 且注意💡续行符^后不能有空格。数据目录默认映射到 【我的文档】
|
||||
```bash
|
||||
docker run -d ^
|
||||
--restart unless-stopped ^
|
||||
--name tvhelper ^
|
||||
-p 2299:22 ^
|
||||
-v "%USERPROFILE%\Documents\tvhelper_data:/tvhelper/shells/data" ^
|
||||
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools ^
|
||||
wukongdaily/box:latest
|
||||
|
||||
```
|
||||
- Linux 使用下列命令,数据目录默认映射到linux的`/tmp/upload/`下
|
||||
```bash
|
||||
docker run -d \
|
||||
--restart unless-stopped \
|
||||
--name tvhelper \
|
||||
-p 2299:22 \
|
||||
-v "/tmp/upload/tvhelper_data:/tvhelper/shells/data" \
|
||||
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools \
|
||||
wukongdaily/box:latest
|
||||
```
|
||||
- macOS苹果电脑写法,数据目录默认映射到mac电脑文稿目录下
|
||||
```bash
|
||||
docker run -d \
|
||||
--restart unless-stopped \
|
||||
--name tvhelper \
|
||||
-p 2299:22 \
|
||||
-v "$HOME/Documents/tvhelper_data:/tvhelper/shells/data" \
|
||||
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools \
|
||||
wukongdaily/box:latest
|
||||
```
|
||||
|
||||
- UNRAID 写法,注意容器内的data目录默认映射到 /mnt/user/appdata/,你可以适当修改成别的空间的路径。
|
||||
```bash
|
||||
docker run -d \
|
||||
--name='tvhelper' \
|
||||
--net='bridge' \
|
||||
-e HOST_OS="Unraid" \
|
||||
-e HOST_HOSTNAME="unraid" \
|
||||
-e HOST_CONTAINERNAME="tvhelper" \
|
||||
-e 'PATH'='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools' \
|
||||
-l net.unraid.docker.managed=dockerman \
|
||||
-p '2299:22/tcp' \
|
||||
-v '/mnt/user/appdata/':'/tvhelper/shells/data':'rw' 'wukongdaily/box'
|
||||
```
|
||||
|
||||
### 5. 如何导入本地镜像tar
|
||||
- 离线包:https://pan.baidu.com/share/init?surl=lWsaAtuAcwaO_9DtJo0hnA&pwd=1111
|
||||
|
||||
#### Windows 举例
|
||||
```bash
|
||||
docker load < "%USERPROFILE%\Documents\tvhelper-amd64.tar"
|
||||
```
|
||||
|
||||
#### Linux/OpenWrt 举例
|
||||
```bash
|
||||
docker load < /mnt/sata1.3-1/myboxarm.tar
|
||||
```
|
||||
|
||||
### 辅助视频教程⬇️
|
||||
|
||||
[在线教学视频 长视频](https://youtu.be/xAk-3TxeXxQ)
|
||||
|
||||
## 🗂️ 引用项目
|
||||
|
||||
本项目的开发参照了以下项目,感谢这些开源项目的作者:
|
||||
### my-tv
|
||||
https://github.com/lizongying/my-tv
|
||||
### BBLL
|
||||
https://github.com/xiaye13579/BBLL
|
||||
### TVBox
|
||||
https://github.com/takagen99/Box
|
||||
|
Binary file not shown.
BIN
apks/TVBox.apk
BIN
apks/TVBox.apk
Binary file not shown.
@ -1,20 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.github.tvbox.osc.wk",
|
||||
"variantName": "release",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 1,
|
||||
"versionName": "编译时间:2024-02-28 11:55",
|
||||
"outputFile": "app-release.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File"
|
||||
}
|
BIN
apks/bbll.apk
BIN
apks/bbll.apk
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
apks/emotn.apk
BIN
apks/emotn.apk
Binary file not shown.
BIN
apks/mix.xapk
BIN
apks/mix.xapk
Binary file not shown.
BIN
apks/mytv.apk
BIN
apks/mytv.apk
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
apks/youtube.apk
BIN
apks/youtube.apk
Binary file not shown.
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# wget -O box.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/box.sh && chmod +x box.sh && ./box.sh
|
||||
# wget -O box.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/box.sh && chmod +x box.sh && ./box.sh
|
||||
#********************************************************
|
||||
source common.sh
|
||||
apk_path="/tvhelper/apks/"
|
||||
@ -150,14 +150,14 @@ install_tvbox() {
|
||||
menu_options=(
|
||||
"连接ADB"
|
||||
"断开ADB"
|
||||
"安装TVBox(编译时间:2024-02-28)"
|
||||
"安装TVBox(编译时间:2024-06-28)"
|
||||
"赞助|打赏"
|
||||
)
|
||||
|
||||
commands=(
|
||||
["连接ADB"]="connect_adb"
|
||||
["断开ADB"]="disconnect_adb"
|
||||
["安装TVBox(编译时间:2024-02-28)"]="install_tvbox"
|
||||
["安装TVBox(编译时间:2024-06-28)"]="install_tvbox"
|
||||
["赞助|打赏"]="sponsor"
|
||||
|
||||
)
|
||||
|
@ -10,8 +10,6 @@ BLUE="\e[96m"
|
||||
sponsor() {
|
||||
echo
|
||||
echo -e "${GREEN}悟空的赞赏码如下⬇${BLUE}"
|
||||
echo -e "${BLUE} https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/image.jpg${NC}"
|
||||
echo
|
||||
qrencode -t ANSIUTF8 'https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/image.jpg'
|
||||
echo -e "${BLUE} https://wkdaily.cpolar.top/01 ${NC}"
|
||||
echo
|
||||
}
|
BIN
shells/image.jpg
BIN
shells/image.jpg
Binary file not shown.
Before Width: | Height: | Size: 18 KiB |
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# wget -O kodi.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh
|
||||
# wget -O kodi.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh
|
||||
|
||||
#********************************************************
|
||||
source common.sh
|
||||
@ -147,41 +147,39 @@ set_kodi_to_chinese() {
|
||||
echo -e "${GREEN}解压中文语言包到本地临时目录...${NC}"
|
||||
unzip -o /tvhelper/kodi/resource.language.zh_cn-10.0.64.zip -d "$TEMP_DIR"
|
||||
|
||||
# 推送整个解压后的文件夹到Kodi的Add-ons目录
|
||||
# 1、推送整个解压后的文件夹到Kodi的Add-ons目录
|
||||
adb push "$TEMP_DIR" "$KODI_ADDONS_PATH"
|
||||
|
||||
echo -e "${RED}清理临时文件...${NC}"
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
|
||||
echo -e "${GREEN}中文语言包已安装至KODI,开始配置语言....${NC}"
|
||||
# 修改guisettings.xml以使用中文语言包
|
||||
local KODI_SETTINGS_PATH="/sdcard/Android/data/org.xbmc.kodi/files/.kodi/userdata/guisettings.xml"
|
||||
# 先下载配置文件
|
||||
adb pull $KODI_SETTINGS_PATH /tmp/guisettings.xml
|
||||
|
||||
# 使用sed命令更新XML文件中的字体和语言设置
|
||||
sed -i 's|<setting id="lookandfeel.font"[^>]*>.*</setting>|<setting id="lookandfeel.font">Arial</setting>|g' /tmp/guisettings.xml
|
||||
sed -i 's|<setting id="locale.language"[^>]*>.*</setting>|<setting id="locale.language">resource.language.zh_cn</setting>|g' /tmp/guisettings.xml
|
||||
|
||||
# 再上传配置文件——更新
|
||||
adb push /tmp/guisettings.xml $KODI_SETTINGS_PATH
|
||||
|
||||
|
||||
# 2、上传配置文件——更新
|
||||
adb push /tvhelper/kodi/guisettings.xml $KODI_SETTINGS_PATH
|
||||
echo -e "${GREEN}Kodi的字体和语言设置已更新,正在为您尝试打开KODI,请根据提示完成KODI初始化。${NC}"
|
||||
sleep 2
|
||||
# 重启Kodi
|
||||
adb shell am start -a android.intent.action.MAIN -n org.xbmc.kodi/.Main
|
||||
echo -e "${GREEN}Kodi的字体和语言设置已更新。${NC}"
|
||||
#adb shell am start -a android.intent.action.MAIN -n org.xbmc.kodi/.Main
|
||||
adb shell monkey -p org.xbmc.kodi 1 >/dev/null 2>&1
|
||||
|
||||
}
|
||||
|
||||
# 安装apk
|
||||
install_apk() {
|
||||
local apk_download_url=$1
|
||||
local apk_local_path=$1
|
||||
local package_name=$2
|
||||
local filename=$(basename "$apk_download_url")
|
||||
# 下载APK文件到临时目录
|
||||
wget -O /tmp/$filename "$apk_download_url"
|
||||
local filename=$(basename "$apk_local_path")
|
||||
|
||||
# 检查APK文件是否存在
|
||||
if [ ! -f "$apk_local_path" ]; then
|
||||
echo -e "${RED}错误: APK文件不存在,请更新docker镜像后重试。${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if check_adb_connected; then
|
||||
# 卸载旧版本的APK(如果存在)
|
||||
adb uninstall "$package_name" >/dev/null 2>&1
|
||||
echo -e "${GREEN}正在推送和安装${filename},请耐心等待...${NC}"
|
||||
adb uninstall "$package_name" >/dev/null 2>&1
|
||||
|
||||
# 模拟安装进度
|
||||
echo -ne "${BLUE}"
|
||||
@ -192,7 +190,7 @@ install_apk() {
|
||||
|
||||
# 保存进度指示进程的PID
|
||||
PROGRESS_PID=$!
|
||||
install_result=$(adb install -r /tmp/$filename 2>&1)
|
||||
install_result=$(adb install -r $apk_local_path 2>&1)
|
||||
|
||||
# 安装完成后,终止进度指示进程
|
||||
kill $PROGRESS_PID
|
||||
@ -202,11 +200,10 @@ install_apk() {
|
||||
# 检查安装结果
|
||||
if [[ $install_result == *"Success"* ]]; then
|
||||
echo -e "${GREEN}APK安装成功!请在盒子上查看${NC}"
|
||||
set_kodi_to_chinese
|
||||
else
|
||||
echo -e "${RED}APK安装失败:$install_result${NC}"
|
||||
fi
|
||||
rm -rf /tmp/"$filename"
|
||||
echo -e "${YELLOW}临时文件/tmp/${filename}已清理${NC}"
|
||||
else
|
||||
connect_adb
|
||||
fi
|
||||
@ -214,22 +211,22 @@ install_apk() {
|
||||
|
||||
# 安装KODI
|
||||
install_kodi() {
|
||||
install_apk "https://mirror.karneval.cz/pub/xbmc/releases/android/arm/kodi-20.4-Nexus-armeabi-v7a.apk" "org.xbmc.kodi"
|
||||
install_apk "/tvhelper/kodi/kodi.apk" "org.xbmc.kodi"
|
||||
}
|
||||
|
||||
# 菜单
|
||||
menu_options=(
|
||||
"连接ADB"
|
||||
"断开ADB"
|
||||
"安装KODI 20.4"
|
||||
"设置KODI的语言为简体中文"
|
||||
"安装KODI 20.5 并设置中文"
|
||||
#"设置KODI的语言为简体中文"
|
||||
"赞助|打赏"
|
||||
)
|
||||
|
||||
commands=(
|
||||
["连接ADB"]="connect_adb"
|
||||
["断开ADB"]="disconnect_adb"
|
||||
["安装KODI 20.4"]="install_kodi"
|
||||
["安装KODI 20.5 并设置中文"]="install_kodi"
|
||||
["设置KODI的语言为简体中文"]="set_kodi_to_chinese"
|
||||
["赞助|打赏"]="sponsor"
|
||||
)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# wget -O sony.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
|
||||
# wget -O sony.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
|
||||
#********************************************************
|
||||
source common.sh
|
||||
# 定义红色文本
|
||||
@ -259,7 +259,7 @@ menu_options=(
|
||||
"安装Netflix最新版"
|
||||
"安装Apple TV+最新版"
|
||||
"安装Disney+最新版"
|
||||
"安装HBO GO最新版"
|
||||
"安装HBO MAX最新版"
|
||||
"安装myTVSuper最新版"
|
||||
"安装Youtube-FireTV版"
|
||||
"赞助|打赏"
|
||||
@ -271,7 +271,7 @@ commands=(
|
||||
["安装Netflix最新版"]="install_netflix"
|
||||
["安装Disney+最新版"]="install_disney"
|
||||
["安装Youtube-FireTV版"]="install_youtube"
|
||||
["安装HBO GO最新版"]="install_hbogo"
|
||||
["安装HBO MAX最新版"]="install_hbogo"
|
||||
["安装Apple TV+最新版"]="install_appletv"
|
||||
["安装myTVSuper最新版"]="install_mytvsuper"
|
||||
["赞助|打赏"]="sponsor"
|
||||
|
377
shells/tv.sh
377
shells/tv.sh
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# wget -O tv.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/tv.sh && chmod +x tv.sh && ./tv.sh
|
||||
# wget -O tv.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/tv.sh && chmod +x tv.sh && ./tv.sh
|
||||
source common.sh
|
||||
apk_path="/tvhelper/apks/"
|
||||
# 定义红色文本
|
||||
@ -13,6 +13,24 @@ BLUE="\e[96m"
|
||||
# 菜单选项数组
|
||||
declare -a menu_options
|
||||
declare -A commands
|
||||
# 安装原生tv必备菜单
|
||||
declare -a item_options
|
||||
declare -A commands_essentials
|
||||
# 替换或恢复系统桌面
|
||||
declare -a tv_model_options
|
||||
declare -A tv_model_commands
|
||||
|
||||
# 设置全局命令 p
|
||||
cp -f "$0" /usr/local/bin/t
|
||||
chmod +x /usr/local/bin/t
|
||||
|
||||
get_docker_version() {
|
||||
VERSION=$(grep -E '^VERSION=' /etc/environment | cut -d '=' -f2)
|
||||
echo $VERSION
|
||||
}
|
||||
|
||||
# 使用get_docker_version函数
|
||||
docker_version=$(get_docker_version)
|
||||
|
||||
show_user_tips() {
|
||||
read -p "按 Enter 键继续..."
|
||||
@ -64,7 +82,7 @@ connect_adb() {
|
||||
last_name=$(head -n 1 "$history_file")
|
||||
# 检查历史中的IP地址是否合法
|
||||
if is_valid_ip "$last_ip"; then
|
||||
echo -e "${YELLOW}上次连接的设备是 ${last_name},IP地址为 ${last_ip}。\n您是否要再次连接到此设备?确认请回车,否定输入n再回车[Y/n]${NC}"
|
||||
echo -e "上次连接的设备是 ${GREEN}${last_name}${NC}IP地址为 ${GREEN}${last_ip}${NC}\n您是否要再次连接到此设备?确认请直接回车,否定输入n再回车[Y/n]"
|
||||
read answer
|
||||
if [[ "$answer" == "N" || "$answer" == "n" ]]; then
|
||||
echo -e "${YELLOW}请手动输入电视盒子的完整IP地址:${NC}"
|
||||
@ -380,6 +398,12 @@ install_dbmarket() {
|
||||
install_apk "${apk_path}dangbeimarket.apk" "com.dangbeimarket"
|
||||
}
|
||||
|
||||
# 安装沙发管家
|
||||
install_shafa() {
|
||||
echo -e "${BLUE}安装过程若出现弹框,请点击详情后选择【仍然安装】即可${NC}"
|
||||
install_apk "${apk_path}sfgj.apk" "com.shafa.market"
|
||||
}
|
||||
|
||||
# 安装网络获取的apk
|
||||
install_web_apk() {
|
||||
local apk_download_url=$1
|
||||
@ -424,7 +448,7 @@ install_web_apk() {
|
||||
# 安装my-tv
|
||||
# release地址、包名、apk命名前缀
|
||||
install_mytv_latest_apk() {
|
||||
echo -e "${BLUE}项目主页:https://github.com/lizongying/my-tv ${NC}"
|
||||
echo -e "${BLUE}项目主页:https://github.com/yaoxieyoulei/mytv-android ${NC}"
|
||||
install_apk "${apk_path}mytv.apk" "com.lizongying.mytv"
|
||||
}
|
||||
|
||||
@ -626,7 +650,7 @@ install_mixapps() {
|
||||
}
|
||||
# 进入KODI助手
|
||||
kodi_helper() {
|
||||
wget -O kodi.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh
|
||||
wget -O kodi.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh
|
||||
}
|
||||
|
||||
# 安装fire tv版本youtube
|
||||
@ -665,71 +689,20 @@ install_youtube_firetv() {
|
||||
|
||||
# 进入tvbox安装助手
|
||||
enter_tvbox_helper() {
|
||||
wget -O box.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/box.sh && chmod +x box.sh && ./box.sh
|
||||
wget -O box.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/box.sh && chmod +x box.sh && ./box.sh
|
||||
}
|
||||
|
||||
# 进入sony电视助手
|
||||
enter_sonytv() {
|
||||
wget -O sony.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
|
||||
wget -O sony.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
|
||||
}
|
||||
|
||||
|
||||
# 菜单
|
||||
menu_options=(
|
||||
"连接ADB"
|
||||
"断开ADB"
|
||||
"一键修改电视盒子NTP服务器地址(需重启)"
|
||||
"向TV端输入文字(限英文)"
|
||||
"为Google TV系统安装Play商店图标"
|
||||
"显示Netflix影片码率"
|
||||
"模拟菜单键"
|
||||
"安装电视订阅助手"
|
||||
"安装Emotn Store应用商店"
|
||||
"安装当贝市场"
|
||||
"安装文件管理器+"
|
||||
"安装Downloader"
|
||||
"安装my-tv(lizongying)"
|
||||
"安装BBLL(xiaye13579)"
|
||||
"自定义批量安装data目录下的所有apk"
|
||||
#"安装Mix-Apps用于显示全部应用"
|
||||
"进入KODI助手"
|
||||
#"安装Fire TV版Youtube(免谷歌框架)"
|
||||
"进入TVBox安装助手"
|
||||
"进入Sony电视助手"
|
||||
"更新脚本"
|
||||
"赞助|打赏"
|
||||
)
|
||||
|
||||
commands=(
|
||||
["连接ADB"]="connect_adb"
|
||||
["断开ADB"]="disconnect_adb"
|
||||
["一键修改电视盒子NTP服务器地址(需重启)"]="modify_ntp"
|
||||
["安装电视订阅助手"]="install_subhelper_apk"
|
||||
["安装Emotn Store应用商店"]="install_emotn_store"
|
||||
["安装当贝市场"]="install_dbmarket"
|
||||
["向TV端输入文字(限英文)"]="input_text"
|
||||
["显示Netflix影片码率"]="show_nf_info"
|
||||
["模拟菜单键"]="show_menu_keycode"
|
||||
["为Google TV系统安装Play商店图标"]="show_playstore_icon"
|
||||
["安装my-tv(lizongying)"]="install_mytv_latest_apk"
|
||||
["安装BBLL(xiaye13579)"]="install_BBLL_latest_apk"
|
||||
["安装文件管理器+"]="install_file_manager_plus"
|
||||
["安装Downloader"]="install_downloader"
|
||||
["自定义批量安装data目录下的所有apk"]="install_all_apks"
|
||||
["安装Mix-Apps用于显示全部应用"]="install_mixapps"
|
||||
["进入KODI助手"]="kodi_helper"
|
||||
["安装Fire TV版Youtube(免谷歌框架)"]="install_youtube_firetv"
|
||||
["进入TVBox安装助手"]="enter_tvbox_helper"
|
||||
["赞助|打赏"]="sponsor"
|
||||
["进入Sony电视助手"]="enter_sonytv"
|
||||
["更新脚本"]="update_sh"
|
||||
)
|
||||
|
||||
# 更新脚本
|
||||
update_sh() {
|
||||
break
|
||||
echo "正在更新脚本..."
|
||||
# 下载最新的脚本到临时文件
|
||||
wget -O /tmp/script.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/tv.sh
|
||||
wget -O /tmp/script.sh https://cafe.cpolar.top/wkdaily/tvhelper-docker/raw/branch/master/shells/tv.sh
|
||||
# 替换当前脚本
|
||||
if [ -f /tmp/script.sh ]; then
|
||||
chmod +x /tmp/script.sh
|
||||
@ -742,6 +715,288 @@ update_sh() {
|
||||
fi
|
||||
}
|
||||
|
||||
# 菜单
|
||||
menu_options=(
|
||||
"连接ADB"
|
||||
"断开ADB"
|
||||
"安装Android原生TV必备精选Apps(含子菜单)"
|
||||
"一键修改NTP(限原生TV,需重启)"
|
||||
"安装Play商店图标(仅google tv使用)"
|
||||
"自定义批量安装data目录下的所有apk"
|
||||
"替换系统桌面"
|
||||
"进入KODI助手"
|
||||
"进入TVBox安装助手"
|
||||
"进入Sony电视助手"
|
||||
"向TV端输入文字(限英文)"
|
||||
"显示Netflix影片码率"
|
||||
"模拟菜单键"
|
||||
"更新脚本"
|
||||
"赞助|打赏"
|
||||
)
|
||||
|
||||
commands=(
|
||||
["连接ADB"]="connect_adb"
|
||||
["断开ADB"]="disconnect_adb"
|
||||
["安装Android原生TV必备精选Apps(含子菜单)"]="android_tv_essentials"
|
||||
["一键修改NTP(限原生TV,需重启)"]="modify_ntp"
|
||||
["向TV端输入文字(限英文)"]="input_text"
|
||||
["显示Netflix影片码率"]="show_nf_info"
|
||||
["模拟菜单键"]="show_menu_keycode"
|
||||
["安装Play商店图标(仅google tv使用)"]="show_playstore_icon"
|
||||
["自定义批量安装data目录下的所有apk"]="install_all_apks"
|
||||
["进入KODI助手"]="kodi_helper"
|
||||
["进入TVBox安装助手"]="enter_tvbox_helper"
|
||||
["进入Sony电视助手"]="enter_sonytv"
|
||||
["更新脚本"]="update_sh"
|
||||
["赞助|打赏"]="sponsor"
|
||||
["替换系统桌面"]="replace_system_ui_menu"
|
||||
)
|
||||
# 安装原生tv必备apps
|
||||
item_options=(
|
||||
"安装电视订阅助手"
|
||||
"安装Emotn Store应用商店"
|
||||
"安装当贝市场"
|
||||
"安装沙发管家"
|
||||
"安装新版我的电视"
|
||||
"安装BBLL(xiaye13579)"
|
||||
"安装文件管理器+"
|
||||
"安装Downloader"
|
||||
"安装Mix-Apps用于显示全部应用"
|
||||
"返回主菜单"
|
||||
)
|
||||
|
||||
commands_essentials=(
|
||||
["安装电视订阅助手"]="install_subhelper_apk"
|
||||
["安装Emotn Store应用商店"]="install_emotn_store"
|
||||
["安装当贝市场"]="install_dbmarket"
|
||||
["安装新版我的电视"]="install_mytv_latest_apk"
|
||||
["安装BBLL(xiaye13579)"]="install_BBLL_latest_apk"
|
||||
["安装文件管理器+"]="install_file_manager_plus"
|
||||
["安装Downloader"]="install_downloader"
|
||||
["安装Mix-Apps用于显示全部应用"]="install_mixapps"
|
||||
["安装沙发管家"]="install_shafa"
|
||||
)
|
||||
|
||||
# 替换或恢复系统桌面
|
||||
tv_model_options=(
|
||||
"替换/恢复 索尼Sony电视系统桌面"
|
||||
"替换/恢复 小米(盒子/电视)系统桌面"
|
||||
"替换/恢复 小米盒子国际版系统桌面"
|
||||
"替换/恢复 GoogleTV系统桌面"
|
||||
"替换/恢复 安卓原生TV系统桌面(原生类型TV通用)"
|
||||
"返回主菜单"
|
||||
)
|
||||
|
||||
tv_model_commands=(
|
||||
["替换/恢复 索尼Sony电视系统桌面"]="replace_sony_ui"
|
||||
["替换/恢复 小米(盒子/电视)系统桌面"]="replace_xiaomi_ui"
|
||||
["替换/恢复 小米盒子国际版系统桌面"]="replace_xiaomi_global_ui"
|
||||
["替换/恢复 GoogleTV系统桌面"]="toggle_googletv_system_ui"
|
||||
["替换/恢复 安卓原生TV系统桌面(原生类型TV通用)"]="replace_normal_androidtv_ui"
|
||||
)
|
||||
|
||||
# 定义安卓原生TV必备子菜单函数
|
||||
android_tv_essentials() {
|
||||
while true; do
|
||||
echo -e "${GREEN}原生TV必备精选Apps:${NC}"
|
||||
for i in "${!item_options[@]}"; do
|
||||
echo " ($((i + 1))) ${item_options[$i]}"
|
||||
done
|
||||
|
||||
echo "请选择一个选项,或按q返回主菜单:"
|
||||
read -r choice
|
||||
|
||||
# 检查输入是否为退出命令
|
||||
if [[ "$choice" == "q" ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
# 检查输入是否为数字
|
||||
if ! [[ $choice =~ ^[0-9]+$ ]]; then
|
||||
echo -e " ${RED}请输入有效数字!${NC}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查数字是否在有效范围内
|
||||
if [[ $choice -lt 1 ]] || [[ $choice -gt ${#item_options[@]} ]]; then
|
||||
echo -e " ${RED}选项超出范围!${NC}"
|
||||
echo -e " ${YELLOW}请输入 1 到 ${#item_options[@]} 之间的数字。${NC}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 处理返回主菜单
|
||||
if [[ $choice -eq ${#item_options[@]} ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
local selected_option="${item_options[$((choice - 1))]}"
|
||||
command_item_run="${commands_essentials["$selected_option"]}"
|
||||
|
||||
# 检查是否存在对应的命令并执行
|
||||
if [ -z "$command_item_run" ]; then
|
||||
echo -e " ${RED}无效选项,请重新选择。${NC}"
|
||||
else
|
||||
eval "$command_item_run"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 根据品牌替换系统桌面
|
||||
replace_system_ui_menu() {
|
||||
local apk_path="/tvhelper/apks/ui.apk"
|
||||
# 检查APK文件是否存在
|
||||
if [ ! -f "$apk_path" ]; then
|
||||
echo -e "${RED}错误: 要替换的桌面APK文件不存在,请更新docker镜像后重试。${NC}"
|
||||
return 1
|
||||
fi
|
||||
while true; do
|
||||
echo -e "${GREEN}目前支持替换桌面的电视盒子或电视品牌如下:${NC}"
|
||||
for i in "${!tv_model_options[@]}"; do
|
||||
echo " ($((i + 1))) ${tv_model_options[$i]}"
|
||||
done
|
||||
|
||||
echo "请选择一个选项,或按q返回主菜单:"
|
||||
read -r choice
|
||||
|
||||
# 检查输入是否为退出命令
|
||||
if [[ "$choice" == "q" ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
# 检查输入是否为数字
|
||||
if ! [[ $choice =~ ^[0-9]+$ ]]; then
|
||||
echo -e " ${RED}请输入有效数字!${NC}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查数字是否在有效范围内
|
||||
if [[ $choice -lt 1 ]] || [[ $choice -gt ${#tv_model_options[@]} ]]; then
|
||||
echo -e " ${RED}选项超出范围!${NC}"
|
||||
echo -e " ${YELLOW}请输入 1 到 ${#tv_model_options[@]} 之间的数字。${NC}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 处理返回主菜单
|
||||
if [[ $choice -eq ${#tv_model_options[@]} ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
local selected_option="${tv_model_options[$((choice - 1))]}"
|
||||
local command_item_run="${tv_model_commands["$selected_option"]}"
|
||||
|
||||
# 检查是否存在对应的命令并执行
|
||||
if [ -z "$command_item_run" ]; then
|
||||
echo -e " ${RED}无效选项,请重新选择。${NC}"
|
||||
else
|
||||
eval "$command_item_run"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
replace_xiaomi_ui() {
|
||||
local system_ui_package="com.mitv.tvhome"
|
||||
toggle_system_ui "${system_ui_package}"
|
||||
}
|
||||
|
||||
replace_xiaomi_global_ui() {
|
||||
local system_ui_package="com.google.android.tvlauncher"
|
||||
toggle_system_ui "${system_ui_package}"
|
||||
}
|
||||
|
||||
replace_sony_ui() {
|
||||
local system_ui_package="com.dangbei.TVHomeLauncher"
|
||||
toggle_system_ui "${system_ui_package}"
|
||||
}
|
||||
|
||||
replace_xiaomi_global_ui() {
|
||||
replace_normal_androidtv_ui
|
||||
}
|
||||
|
||||
replace_normal_androidtv_ui() {
|
||||
local system_ui_package="com.google.android.tvlauncher"
|
||||
toggle_system_ui "${system_ui_package}"
|
||||
}
|
||||
|
||||
check_emotnui_installed(){
|
||||
local package_name="com.oversea.aslauncher"
|
||||
local apk_path="/tvhelper/apks/ui.apk"
|
||||
|
||||
# 检查APK文件是否存在
|
||||
if [ ! -f "$apk_path" ]; then
|
||||
echo -e "${RED}错误: APK文件不存在,请更新docker镜像后重试,确保docker镜像版本 >= 1.0.3${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 检查 com.oversea.aslauncher 是否已安装
|
||||
if ! adb shell pm list packages | grep -q "$package_name"; then
|
||||
echo -e "${GREEN}EmotnUI 未安装,开始安装...请稍后${NC}"
|
||||
# 安装 com.oversea.aslauncher 应用
|
||||
if adb install -r "$apk_path" >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}第三方桌面安装成功${NC}"
|
||||
else
|
||||
echo -e "${RED}应用安装失败,请检查APK文件路径和设备连接状态。若apk不存在请更新docker镜像。${NC}"
|
||||
return
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN}第三方桌面EmotnUI已安装。${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
toggle_googletv_system_ui() {
|
||||
local system_ui_package="com.google.android.apps.tv.launcherx"
|
||||
local system_setup_package="com.google.android.tungsten.setupwraith"
|
||||
#判断emotnui是否安装
|
||||
check_emotnui_installed
|
||||
|
||||
# 检查系统桌面是否已被禁用
|
||||
if adb shell pm list packages -d | grep -q "$system_ui_package"; then
|
||||
# 若已被禁用,则启用系统桌面
|
||||
if adb shell pm enable "$system_ui_package" >/dev/null 2>&1 && adb shell pm enable "$system_setup_package" >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}恭喜您,您的系统桌面又回来啦! 请按HOME键确认。${NC}"
|
||||
adb shell input keyevent KEYCODE_HOME
|
||||
else
|
||||
echo -e "${RED}启用系统桌面或其他应用失败,请检查设备连接状态和权限。${NC}"
|
||||
fi
|
||||
|
||||
else
|
||||
# 若未被禁用,则禁用系统桌面
|
||||
if adb shell pm disable-user --user 0 "$system_ui_package" >/dev/null 2>&1 &&
|
||||
adb shell pm disable-user --user 0 "$system_setup_package" >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}恭喜您,新桌面替换成功。点击HOME键 查看新桌面哦。${NC}"
|
||||
adb shell input keyevent KEYCODE_HOME
|
||||
else
|
||||
echo -e "${RED}禁用系统桌面失败,请检查设备连接状态和权限。${NC}"
|
||||
fi
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
# 替换或恢复系统桌面
|
||||
toggle_system_ui() {
|
||||
local system_ui_package=$1
|
||||
#判断emotnui是否安装
|
||||
check_emotnui_installed
|
||||
|
||||
# 检查系统桌面是否已被禁用
|
||||
if adb shell pm list packages -d | grep -q "$system_ui_package"; then
|
||||
# 若已被禁用,则启用系统桌面
|
||||
if adb shell pm enable "$system_ui_package" >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}恭喜您,您的系统桌面又回来啦! 请按HOME键确认。${NC}"
|
||||
adb shell input keyevent KEYCODE_HOME
|
||||
else
|
||||
echo -e "${RED}启用系统桌面失败,请检查设备连接状态和权限。${NC}"
|
||||
fi
|
||||
else
|
||||
# 若未被禁用,则禁用系统桌面
|
||||
if adb shell pm disable-user --user 0 "$system_ui_package" >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}恭喜您,新桌面替换成功。点击HOME键 查看新桌面哦。${NC}"
|
||||
adb shell input keyevent KEYCODE_HOME
|
||||
else
|
||||
echo -e "${RED}禁用系统桌面失败,请检查设备连接状态和权限。${NC}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# 处理菜单
|
||||
handle_choice() {
|
||||
local choice=$1
|
||||
@ -781,9 +1036,9 @@ show_menu() {
|
||||
mkdir -p /tvhelper/shells/data
|
||||
clear
|
||||
echo "***********************************************************************"
|
||||
echo -e "* ${YELLOW}盒子助手Docker版 (v1.0.0)${NC} "
|
||||
echo -e "* ${GREEN}base Alpine Linux${NC} "
|
||||
echo -e "* ${YELLOW}盒子助手Docker版 (v$(get_docker_version))${NC} "
|
||||
echo -e "* ${RED}请确保电视盒子和Docker宿主机处于${NC}${BLUE}同一网段${NC}\n* ${RED}且电视盒子开启了${NC}${BLUE}USB调试模式(adb开关)${NC} "
|
||||
echo -e "* ${YELLOW}【注意】再次运行 只输入 t 即可 ${NC} "
|
||||
echo "**********************************************************************"
|
||||
echo "$(get_status)"
|
||||
echo "$(get_tvbox_model_name)"
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user