Advertisement
Guest User

Untitled

a guest
Jan 5th, 2024
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.44 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. #Revanced総合 Part12 https://egg.5ch.net/test/read.cgi/android/1704099659/
  4.  
  5. AUTHOR="revanced"
  6. #API_URL="https://api.revanced.app/v2"
  7. API_URL="https://api.github.com/repos/${AUTHOR}"
  8. WORKSPACE="$HOME/.$AUTHOR"
  9. #cd "$(dirname "$0")"
  10.  
  11. echo "(first arg) any options: $1"
  12.  
  13. TIMESTAMP=`date "+%Y%m%d%H%M"`
  14. USERID=`whoami`
  15.  
  16. #CLI_VERSION=""
  17. #INTEGRATIONS_VERSION=""
  18. #PATCHES_VERSION=""
  19. #APK_VERSION=""
  20.  
  21. PACKAGE_NAME="com.google.android.youtube"
  22. APKMIRROR_APP_DEVELOPER_NAME="google-inc"
  23. APKMIRROR_APP_NAME="youtube"
  24.  
  25. if ! command -v "aapt2" &> "/dev/null"; then
  26. echo -e "\e[1;31mError: aapt2 not found\e[0m"
  27. exit 1
  28. fi
  29.  
  30. if ! command -v "jq" &> "/dev/null"; then
  31. echo -e "\e[1;31mError: jq not found\e[0m"
  32. exit 1
  33. fi
  34.  
  35. if ! command -v "java" &> "/dev/null"; then
  36. echo -e "\e[1;31mError: java not found\e[0m"
  37. exit 1
  38. fi
  39.  
  40. if ! command -v "su" &> "/dev/null"; then
  41. echo -e "\e[1;31mError: su not found\e[0m"
  42. exit 1
  43. fi
  44.  
  45. AAPT2_PATH=`command -v aapt2`
  46. AAPT2_ARGS="--custom-aapt2-binary $AAPT2_PATH"
  47. ANY_ARGS=$1
  48. CACHE_PATH="$WORKSPACE/revanced-cache"
  49. OPTIONS_PATH="$WORKSPACE/options.json"
  50. CURL_HEADER="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"
  51.  
  52. if [ ! -e "$WORKSPACE" ]; then
  53. mkdir -p $WORKSPACE
  54. fi
  55.  
  56. if [ -f "$OPTIONS_PATH" ]; then
  57. #echo "Removing $OPTIONS_PATH"
  58. rm -f $OPTIONS_PATH
  59. fi
  60. cat << EOF > $OPTIONS_PATH
  61. [ {
  62. "patchName" : "Theme",
  63. "options" : [ {
  64. "key" : "darkThemeBackgroundColor",
  65. "value" : "@android:color/system_neutral1_900"
  66. }, {
  67. "key" : "lightThemeBackgroundColor",
  68. "value" : "@android:color/system_neutral1_50"
  69. } ]
  70. } ]
  71. EOF
  72.  
  73. UMOUNT_SCRIPT_NAME="umount_revanced_${PACKAGE_NAME}.sh"
  74. UMOUNT_SCRIPT_PATH="${WORKSPACE}/${UMOUNT_SCRIPT_NAME}"
  75. if [ -f "$UMOUNT_SCRIPT_PATH" ]; then
  76. #echo "Removing $UMOUNT_SCRIPT_PATH"
  77. rm -f $UMOUNT_SCRIPT_PATH
  78. fi
  79. cat <<EOF > $UMOUNT_SCRIPT_PATH
  80. #!/usr/bin/env bash
  81. echo "Unmounting ..."
  82. su -mm -c 'am force-stop ${PACKAGE_NAME} && \\
  83. grep ${PACKAGE_NAME} /proc/mounts | \\
  84. while read -r line; do echo \$line | \\
  85. cut -d " " -f 2 | \\
  86. sed "s/apk.*/apk/" | \\
  87. xargs -r umount -l > /dev/null 2>&1; done'
  88. EOF
  89. chmod 755 $UMOUNT_SCRIPT_PATH
  90. $UMOUNT_SCRIPT_PATH
  91.  
  92. MOUNT_SCRIPT_NAME="mount_revanced_${PACKAGE_NAME}.sh"
  93. MOUNT_SCRIPT_PATH="${WORKSPACE}/${MOUNT_SCRIPT_NAME}"
  94. MOUNT_SCRIPT_ROOT_PATH="/data/adb/service.d/${MOUNT_SCRIPT_NAME}"
  95. if [ -f "$MOUNT_SCRIPT_PATH" ]; then
  96. #echo "Removing $MOUNT_SCRIPT_PATH"
  97. rm -f $MOUNT_SCRIPT_PATH
  98. fi
  99. cat <<EOF > $MOUNT_SCRIPT_PATH
  100. #!/system/bin/sh
  101. MAGISKTMP="\$(magisk --path)" || MAGISKTMP=/sbin
  102. MIRROR="\$MAGISKTMP/.magisk/mirror"
  103. while [ "\$(getprop sys.boot_completed | tr -d '\r')" != "1" ]; do sleep 1; done
  104.  
  105. base_path="/data/adb/${PACKAGE_NAME}.apk"
  106. stock_path=\$( pm path ${PACKAGE_NAME} | grep base | sed 's/package://g' )
  107.  
  108. chcon u:object_r:apk_data_file:s0 \$base_path
  109. mount -o bind \$MIRROR\$base_path \$stock_path
  110. EOF
  111. chmod 755 $MOUNT_SCRIPT_PATH
  112.  
  113. CLI_AUTHOR=${AUTHOR}
  114. if [ -z "$CLI_VERSION" ]; then
  115. CLI_VERSION="$(curl -s ${API_URL}/revanced-cli/releases/latest | grep "tag_name")"
  116. CLI_VERSION="${CLI_VERSION:16:-2}"
  117. fi
  118.  
  119. echo "revanced-cli --version: $CLI_VERSION"
  120. CLI_PATH="$WORKSPACE/revanced-cli-$CLI_VERSION-all.jar"
  121. if [ ! -f "$CLI_PATH" ]; then
  122. curl "https://github.com/${CLI_AUTHOR}/revanced-cli/releases/download/v$CLI_VERSION/revanced-cli-$CLI_VERSION-all.jar" -sSL -o "$CLI_PATH"
  123. fi
  124.  
  125. PATCHES_AUTHOR=${AUTHOR}
  126. if [ -z "$INTEGRATIONS_VERSION" ]; then
  127. INTEGRATIONS_VERSION="$(curl -s ${API_URL}/revanced-integrations/releases/latest | grep "tag_name")"
  128. INTEGRATIONS_VERSION="${INTEGRATIONS_VERSION:16:-2}"
  129. fi
  130.  
  131. echo "revanced-integrations --version: $INTEGRATIONS_VERSION"
  132. INTEGRATIONS_PATH="$WORKSPACE/revanced-integrations-$INTEGRATIONS_VERSION.apk"
  133. if [ ! -f "$INTEGRATIONS_PATH" ]; then
  134. curl "https://github.com/${PATCHES_AUTHOR}/revanced-integrations/releases/download/v$INTEGRATIONS_VERSION/revanced-integrations-$INTEGRATIONS_VERSION.apk" -sSL -o "$INTEGRATIONS_PATH"
  135. fi
  136.  
  137. if [ -z "$PATCHES_VERSION" ]; then
  138. PATCHES_VERSION="$(curl -s ${API_URL}/revanced-patches/releases/latest | grep "tag_name")"
  139. PATCHES_VERSION="${PATCHES_VERSION:16:-2}"
  140. fi
  141.  
  142. echo "revanced-patches --version: $PATCHES_VERSION"
  143. PATCHES_PATH="$WORKSPACE/revanced-patches-$PATCHES_VERSION.jar"
  144. PATCHES_JSON_PATH="$WORKSPACE/patches-$PATCHES_VERSION.json"
  145. if [ ! -f "$PATCHES_PATH" ]; then
  146. curl "https://github.com/${PATCHES_AUTHOR}/revanced-patches/releases/download/v$PATCHES_VERSION/revanced-patches-$PATCHES_VERSION.jar" -sSL -o "$PATCHES_PATH"
  147. fi
  148.  
  149. if [ ! -f "$PATCHES_JSON_PATH" ]; then
  150. curl "https://github.com/${PATCHES_AUTHOR}/revanced-patches/releases/download/v$PATCHES_VERSION/patches.json" -sSL -o "$PATCHES_JSON_PATH"
  151. fi
  152.  
  153. APK_SUPPORTED_VERSIONS="$(cat "$PATCHES_JSON_PATH" | \
  154. jq -r '.[]?.compatiblePackages[]? | select(.name == "'$PACKAGE_NAME'") | .versions[]?' | \
  155. sort -n | uniq)"
  156. echo "Supported versions($PACKAGE_NAME): $(echo $APK_SUPPORTED_VERSIONS)"
  157. APK_SUPPORTED_VERSION=$(echo "${APK_SUPPORTED_VERSIONS[*]}" | sort -n | tail -1)
  158. APK_INSTALLED_VERSION=$(echo $(su -c "dumpsys package $PACKAGE_NAME" | grep versionName | sort -n | tail -1) | sed -r "s/versionName=//")
  159. echo "Installed versions($PACKAGE_NAME): $APK_INSTALLED_VERSION"
  160. APK_DOWNLOAD_PATH="$WORKSPACE/$PACKAGE_NAME-$APK_SUPPORTED_VERSION.apk"
  161. if [ -z "$APK_VERSION" ] && [[ "$APK_SUPPORTED_VERSION" != "$APK_INSTALLED_VERSION" ]]; then
  162. APKMIRROR_URL="https://www.apkmirror.com/apk/$APKMIRROR_APP_DEVELOPER_NAME/$APKMIRROR_APP_NAME/$APKMIRROR_APP_NAME-${APK_SUPPORTED_VERSION//./-}-release/"
  163. APKMIRROR_URL="https://www.apkmirror.com$(curl $APKMIRROR_URL -fsSL -H "$CURL_HEADER" | tr '\n' ' ' | sed -n 's/href="/@/g; s;.*APK</span>[^@]*@\([^#]*\).*;\1;p')"
  164. echo "downloaded apk from: $APKMIRROR_URL"
  165. APKMIRROR_URL="https://www.apkmirror.com$(curl $APKMIRROR_URL -fsSL -H "$CURL_HEADER" | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p' | sed "s/amp;//")"
  166. echo "downloaded apk from: $APKMIRROR_URL"
  167. APKMIRROR_URL="https://www.apkmirror.com$(curl $APKMIRROR_URL -fsSL -H "$CURL_HEADER" | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p' | sed "s/amp;//")"
  168. echo "downloaded apk from: $APKMIRROR_URL"
  169. curl $APKMIRROR_URL -L -H "$CURL_HEADER" -o "$APK_DOWNLOAD_PATH"
  170. su -c "pm install -i com.android.vending $APK_DOWNLOAD_PATH"
  171. fi
  172.  
  173. PATCHES_JSON_TXT_PATH="$WORKSPACE/list-patches-$PATCHES_VERSION-$PACKAGE_NAME.txt"
  174. cat "$PATCHES_JSON_PATH" | \
  175. jq -r '.[] | select(.compatiblePackages[]?.name == "'$PACKAGE_NAME'") | .result = .name + ": " + .description | .result' \
  176. > "$PATCHES_JSON_TXT_PATH"
  177.  
  178. APK_PATH="$WORKSPACE/$PACKAGE_NAME.apk"
  179. su -mm -c "cp \$(pm path ${PACKAGE_NAME} | grep base | sed 's/package://g') ${APK_PATH} && \
  180. chown ${USERID} ${APK_PATH} && \
  181. chmod 644 ${APK_PATH}"
  182.  
  183. OUTPUT_PATH="$APK_PATH.rv-$TIMESTAMP.apk"
  184.  
  185. CLI_COMMAND=" \
  186. java \
  187. -jar $CLI_PATH \
  188. patch $APK_PATH \
  189. -b $PATCHES_PATH \
  190. -m $INTEGRATIONS_PATH \
  191. -o $OUTPUT_PATH \
  192. -r $CACHE_PATH \
  193. --options $OPTIONS_PATH \
  194. --exclusive \
  195. --mount \
  196. $AAPT2_ARGS \
  197. -i \"!Theme\" \
  198. -i \"Navigation buttons\" \
  199. -i \"!Minimized playback\" \
  200. -i \"Remember video quality\" \
  201. -i \"Video ads\" \
  202. -i \"Hide ads\" \
  203. -i \"Hide layout components\" \
  204. -i \"Comments\" \
  205. -i \"Hide info cards\" \
  206. -i \"Hide endscreen cards\" \
  207. -i \"Remove player controls background\" \
  208. -i \"Hide Shorts components\" \
  209. -i \"Playback speed\" \
  210. -i \"Copy video url\" \
  211. -i \"Hide breaking news shelf\" \
  212. -i \"Disable suggested video end screen\" \
  213. -i \"Disable rolling number animations\" \
  214. -i \"Change start page\" \
  215. $ANY_ARGS \
  216. "
  217.  
  218. #echo "Command:"
  219. COMMAND_TXT_PATH="$WORKSPACE/command-$TIMESTAMP.txt"
  220. echo "$CLI_COMMAND" | \
  221. sed -e 's/\ \+/\ /g' \
  222. > "$COMMAND_TXT_PATH"
  223.  
  224. echo
  225. cat $COMMAND_TXT_PATH
  226. echo
  227.  
  228. echo "Java:"
  229. bash -c "$CLI_COMMAND"
  230. rm -rf $CACHE_PATH
  231.  
  232. if [ ! -f "$OUTPUT_PATH" ]; then
  233. echo -e "$OUTPUT_PATH not exist"
  234. echo -e "Build failed"
  235. exit 1
  236. fi
  237.  
  238. $UMOUNT_SCRIPT_PATH
  239. chmod 644 $OUTPUT_PATH
  240. echo "Copying to root ..."
  241.  
  242. su -mm -c "cp ${MOUNT_SCRIPT_PATH} ${MOUNT_SCRIPT_ROOT_PATH} && \
  243. cp ${OUTPUT_PATH} /data/adb/${PACKAGE_NAME}.apk; \
  244. ${MOUNT_SCRIPT_ROOT_PATH}"
  245.  
  246. echo "Finished!"
  247.  
  248. exit 0
  249.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement