mirror of
https://github.com/CoolnsX/repos_scripts.git
synced 2026-06-17 07:22:12 +05:30
feat: ani-new: mp4upload provider, android mpv compatibility, episode url fetching fix
This commit is contained in:
+13
@@ -44,6 +44,19 @@ error_linux() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
player_droid() {
|
player_droid() {
|
||||||
|
file="/storage/emulated/0/.mpv/mpv.config.mp4"
|
||||||
|
if [ ! -w "$file" ]; then
|
||||||
|
printf "\033[1;31mCannot write\033[0m → $file\n"
|
||||||
|
printf "\033[1;36mRun:\033[0m termux-setup-storage\n\n"
|
||||||
|
printf "\033[1;36mThen:\033[0m\n"
|
||||||
|
printf "- allow storage permission\n"
|
||||||
|
printf "- add → include='$file'\n"
|
||||||
|
printf " MPV → Settings > Advanced > mpv.conf\n"
|
||||||
|
|
||||||
|
else
|
||||||
|
mkdir -p "$(printf '%s' "$file" | sed 's|[^/]*$||')"
|
||||||
|
printf "%s" "$3" | sed 's| --|\n|g; s|^--||g' > "$file"
|
||||||
|
fi
|
||||||
am start --user 0 -a android.intent.action.VIEW -d "$1" -n is.xyz.mpv/.MPVActivity -e "title" "$2" >/dev/null 2>&1
|
am start --user 0 -a android.intent.action.VIEW -d "$1" -n is.xyz.mpv/.MPVActivity -e "title" "$2" >/dev/null 2>&1
|
||||||
#am start --user 0 -a android.intent.action.VIEW -d "$1" -n org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity -e "title" "$2" >/dev/null 2>&1
|
#am start --user 0 -a android.intent.action.VIEW -d "$1" -n org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity -e "title" "$2" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,19 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
# shellcheck disable=SC1091,SC1090
|
||||||
process_response() {
|
process_response() {
|
||||||
# check data is encrypted, if not, return it as it is
|
|
||||||
if ! printf '%s' "$1" | grep -q '"tobeparsed"';then
|
|
||||||
data=$(printf '%s' "$1" | tr '{}' '\n' | sed 's|\\u002F|\/|g;s|\\||g' | sed -nE 's|.*sourceUrl":"--([^"]*)".*sourceName":"([^"]*)".*|\2 :\1|p')
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# decrypt the data
|
|
||||||
enc_data_base64=$(printf "%s" "$1" | sed -nE 's|.*"tobeparsed":"([^"]*)".*|\1|p')
|
enc_data_base64=$(printf "%s" "$1" | sed -nE 's|.*"tobeparsed":"([^"]*)".*|\1|p')
|
||||||
iv="$(printf '%s' "$enc_data_base64" | base64 -d | dd bs=1 skip=1 count=12 2>/dev/null | od -An -tx1 | tr -d ' \n')00000002"
|
iv="$(printf '%s' "$enc_data_base64" | base64 -d | dd bs=1 skip=1 count=12 2>/dev/null | od -An -tx1 | tr -d ' \n')00000002"
|
||||||
[ "${#iv}" != 32 ] && error_$os "IV not present in response, maybe the episode not released..?" && exit 0
|
[ "${#iv}" != 32 ] && error_$os "IV not present in response, maybe the episode not released..?" && exit 0
|
||||||
data="$(printf '%s' "$enc_data_base64" | base64 -d | dd bs=1 skip=13 2>/dev/null | openssl enc -d -aes-256-ctr -K "a254aa27c410f297bd04ba33a0c0df7ff4e706bf3ae27271c6703f84e750f552" -iv "$iv" -nosalt -nopad 2>/dev/null | tr '{}' '\n' | sed 's|\\u002F|\/|g;s|\\||g' | sed -nE 's|.*"sourceUrl":"--([^"]*)".*"sourceName":"([^"]*)".*|\2 :\1|p')"
|
data="$(printf '%s' "$enc_data_base64" | base64 -d | dd bs=1 skip=13 2>/dev/null | openssl enc -d -aes-256-ctr -K "a254aa27c410f297bd04ba33a0c0df7ff4e706bf3ae27271c6703f84e750f552" -iv "$iv" -nosalt -nopad 2>/dev/null | tr '{}' '\n' | sed 's|\\u002F|\/|g;s|\\||g' | sed -nE 's|.*"sourceUrl":"([^"]*)".*"sourceName":"([^"]*)".*|\2 :\1|p')"
|
||||||
|
}
|
||||||
|
|
||||||
|
hex_decrypt() {
|
||||||
|
printf '%s' "$1" | sed 's/../&\n/g' | sed 's/^--$/\n/g;s/^79$/A/g;s/^7a$/B/g;s/^7b$/C/g;s/^7c$/D/g;s/^7d$/E/g;s/^7e$/F/g;s/^7f$/G/g;s/^70$/H/g;s/^71$/I/g;s/^72$/J/g;s/^73$/K/g;s/^74$/L/g;s/^75$/M/g;s/^76$/N/g;s/^77$/O/g;s/^68$/P/g;s/^69$/Q/g;s/^6a$/R/g;s/^6b$/S/g;s/^6c$/T/g;s/^6d$/U/g;s/^6e$/V/g;s/^6f$/W/g;s/^60$/X/g;s/^61$/Y/g;s/^62$/Z/g;s/^59$/a/g;s/^5a$/b/g;s/^5b$/c/g;s/^5c$/d/g;s/^5d$/e/g;s/^5e$/f/g;s/^5f$/g/g;s/^50$/h/g;s/^51$/i/g;s/^52$/j/g;s/^53$/k/g;s/^54$/l/g;s/^55$/m/g;s/^56$/n/g;s/^57$/o/g;s/^48$/p/g;s/^49$/q/g;s/^4a$/r/g;s/^4b$/s/g;s/^4c$/t/g;s/^4d$/u/g;s/^4e$/v/g;s/^4f$/w/g;s/^40$/x/g;s/^41$/y/g;s/^42$/z/g;s/^08$/0/g;s/^09$/1/g;s/^0a$/2/g;s/^0b$/3/g;s/^0c$/4/g;s/^0d$/5/g;s/^0e$/6/g;s/^0f$/7/g;s/^00$/8/g;s/^01$/9/g;s/^15$/-/g;s/^16$/./g;s/^67$/_/g;s/^46$/~/g;s/^02$/:/g;s/^17$/\//g;s/^07$/?/g;s/^1b$/#/g;s/^63$/\[/g;s/^65$/\]/g;s/^78$/@/g;s/^19$/!/g;s/^1c$/$/g;s/^1e$/&/g;s/^10$/\(/g;s/^11$/\)/g;s/^12$/*/g;s/^13$/+/g;s/^14$/,/g;s/^03$/;/g;s/^05$/=/g;s/^1d$/%/g;' | tr -d '\n'
|
||||||
}
|
}
|
||||||
|
|
||||||
domain="allanime.day"
|
domain="allanime.day"
|
||||||
refer="https://allmanga.to"
|
refer="https://youtu-chan.com"
|
||||||
run_file="${TMPDIR:-/tmp}/${0##*/}_run"
|
run_file="${TMPDIR:-/tmp}/${0##*/}_run"
|
||||||
agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/14$(head /dev/urandom | tr -dc '5-9' | cut -c1).0.0.0 Safari/537.36"
|
agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/14$(head /dev/urandom | tr -dc '5-9' | cut -c1).0.0.0 Safari/537.36"
|
||||||
debug=$2
|
debug=$2
|
||||||
@@ -25,8 +23,6 @@ search() { curl -sLXPOST -e "$refer" -H "Content-Type: application/json" "https:
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod +x "$run_file"
|
chmod +x "$run_file"
|
||||||
|
|
||||||
# shellcheck disable=SC1091,SC1090
|
|
||||||
. "$run_file"
|
. "$run_file"
|
||||||
|
|
||||||
case $(uname -o) in
|
case $(uname -o) in
|
||||||
@@ -36,12 +32,11 @@ case $(uname -o) in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
os="linux"
|
os="linux"
|
||||||
download_dir="$HOME/Downloads"
|
download_dir="${XDG_DOWNLOAD_DIR:-$HOME/Downloads}"
|
||||||
terminal="setsid -f ${TERMINAL:-foot} -e"
|
terminal="setsid -f ${TERMINAL:-foot} -e"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# shellcheck disable=SC1091,SC1090
|
|
||||||
. "$(dirname "$0")"/.functions
|
. "$(dirname "$0")"/.functions
|
||||||
|
|
||||||
trap "exit 0" INT HUP
|
trap "exit 0" INT HUP
|
||||||
@@ -63,36 +58,41 @@ printf "%s\n" "$url" | while read -r id title; do
|
|||||||
[ -n "$debug" ] && printf "\n\033[1;36m title\033[0m : %s\n" "$title"
|
[ -n "$debug" ] && printf "\n\033[1;36m title\033[0m : %s\n" "$title"
|
||||||
|
|
||||||
#shellcheck disable=SC2016
|
#shellcheck disable=SC2016
|
||||||
process_response "$(curl -e "$refer" -sLX POST -H "Content-Type: application/json" "https://api.${domain}/api" -A "$agent" --data '{"variables":{"showId":"'"$id"'","episodeString":"'"$ep_no"'","translationType":"sub","countryOrigin":"ALL"},"query":"query ($showId: String!, $translationType: VaildTranslationTypeEnumType!, $episodeString: String!) { episode( showId: $showId translationType: $translationType episodeString: $episodeString ) { episodeString sourceUrls }}"}')"
|
process_response "$(curl -e "$refer" -sG -A "$agent" -H "Origin: $refer" "https://api.${domain}/api" --data-urlencode 'variables={"showId":"'"$id"'","translationType":"sub","episodeString":"'"$ep_no"'"}' --data-urlencode 'extensions={"persistedQuery":{"version":1,"sha256Hash":"d405d0edd690624b66baba3068e0edc3ac90f1597d898a1ec8db4e5c43c00fec"}}')"
|
||||||
|
|
||||||
|
[ -n "$debug" ] && printf "\n\033[1;36m Providers\033[0m : %s\n\n" "$data"
|
||||||
|
|
||||||
info_$os "Fetching Embed links"
|
info_$os "Fetching Embed links"
|
||||||
|
|
||||||
printf 'sharepoint\tS-mp4\nYoutube\tYt-mp4\nhianime\tLuf-Mp4\n' | while read -r provider_name provider_regex; do
|
printf 'sharepoint\tS-mp4\nYoutube\tYt-mp4\nmp4upload\tMp4\n' | while read -r provider_name provider_regex; do
|
||||||
info_$os "Fetching $provider_name links"
|
info_$os "Fetching $provider_name links"
|
||||||
provider_id="$(printf "%s" "$data" | sed -n "/$provider_regex :/p" | cut -d':' -f2 | sed 's/../&\n/g' | sed 's/^79$/A/g;s/^7a$/B/g;s/^7b$/C/g;s/^7c$/D/g;s/^7d$/E/g;s/^7e$/F/g;s/^7f$/G/g;s/^70$/H/g;s/^71$/I/g;s/^72$/J/g;s/^73$/K/g;s/^74$/L/g;s/^75$/M/g;s/^76$/N/g;s/^77$/O/g;s/^68$/P/g;s/^69$/Q/g;s/^6a$/R/g;s/^6b$/S/g;s/^6c$/T/g;s/^6d$/U/g;s/^6e$/V/g;s/^6f$/W/g;s/^60$/X/g;s/^61$/Y/g;s/^62$/Z/g;s/^59$/a/g;s/^5a$/b/g;s/^5b$/c/g;s/^5c$/d/g;s/^5d$/e/g;s/^5e$/f/g;s/^5f$/g/g;s/^50$/h/g;s/^51$/i/g;s/^52$/j/g;s/^53$/k/g;s/^54$/l/g;s/^55$/m/g;s/^56$/n/g;s/^57$/o/g;s/^48$/p/g;s/^49$/q/g;s/^4a$/r/g;s/^4b$/s/g;s/^4c$/t/g;s/^4d$/u/g;s/^4e$/v/g;s/^4f$/w/g;s/^40$/x/g;s/^41$/y/g;s/^42$/z/g;s/^08$/0/g;s/^09$/1/g;s/^0a$/2/g;s/^0b$/3/g;s/^0c$/4/g;s/^0d$/5/g;s/^0e$/6/g;s/^0f$/7/g;s/^00$/8/g;s/^01$/9/g;s/^15$/-/g;s/^16$/./g;s/^67$/_/g;s/^46$/~/g;s/^02$/:/g;s/^17$/\//g;s/^07$/?/g;s/^1b$/#/g;s/^63$/\[/g;s/^65$/\]/g;s/^78$/@/g;s/^19$/!/g;s/^1c$/$/g;s/^1e$/&/g;s/^10$/\(/g;s/^11$/\)/g;s/^12$/*/g;s/^13$/+/g;s/^14$/,/g;s/^03$/;/g;s/^05$/=/g;s/^1d$/%/g;' | tr -d '\n' | sed "s/\/clock/\/clock\.json/")"
|
provider_id="$(printf "%s" "$data" | sed -n "/$provider_regex :/p" | cut -d':' -f2-)"
|
||||||
[ -z "$provider_id" ] && continue
|
[ -z "$provider_id" ] && continue
|
||||||
if printf '%s' "$provider_id" | grep -q "https:"; then
|
|
||||||
provider_video=$provider_id
|
case $provider_name in
|
||||||
else
|
mp4upload)
|
||||||
response=$(curl -e "$refer" -A "$agent" -s "https://${domain}${provider_id}")
|
provider_video=$(curl -sLk "$provider_id" -A "$agent" -e "$refer" | sed -nE 's|.* src: "([^"]*)"|\1|p')
|
||||||
provider_video=$(printf '%s' "$response" | sed 's|},{|\n|g' | sed -nE 's|.*link":"([^"]*)".*"resolutionStr":"([^"]*)".*|\1|p;s|.*hls","url":"([^"]*)".*"hardsub_lang":"en-US".*|\1|p' | head -1)
|
refer="$provider_id"
|
||||||
if [ "$provider_name" = "hianime" ]; then
|
;;
|
||||||
subtitle=$(printf '%s' "$response" | sed -nE 's|.*"subtitles":\[\{"lang":"en","label":"English","default":"default","src":"([^"]*)".*|\1|p')
|
Youtube)
|
||||||
domain=$(printf '%s' "$response" | sed -nE 's|.*"Referer":"https://([^"]*)",.*|\1|p')
|
provider_video=$(hex_decrypt "$provider_id")
|
||||||
fi
|
;;
|
||||||
fi
|
*)
|
||||||
|
provider_id="$(hex_decrypt "$provider_id" | sed "s/\/clock/\/clock\.json/")"
|
||||||
|
provider_video=$(curl -e "$refer" -A "$agent" -s "https://${domain}${provider_id}" | sed 's|},{|\n|g' | sed -nE 's|.*link":"([^"]*)".*"resolutionStr":"([^"]*)".*|\1|p;s|.*hls","url":"([^"]*)".*"hardsub_lang":"en-US".*|\1|p' | head -1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
[ -z "$provider_video" ] && continue
|
[ -z "$provider_video" ] && continue
|
||||||
[ -n "$debug" ] && printf "\033[1;32m %s\033[0m : %s\n" "$provider_name" "$provider_video" && continue
|
[ -n "$debug" ] && printf "\033[1;32m %s\033[0m : %s\n\033[1;32m Referrer\033[0m : %s\n" "$provider_name" "$provider_video" "$refer" && continue
|
||||||
info_$os "$provider_name links fetched.."
|
info_$os "$provider_name links fetched.."
|
||||||
choice=$(printf "stream\ndownload\ncast\nnext_mirror\nnext_anime" | menu_$os "??" '' "2")
|
choice=$(printf "stream\ndownload\ncast\nnext_mirror\nnext_anime" | menu_$os "??" '' "2")
|
||||||
[ -z "$choice" ] && break
|
[ -z "$choice" ] && break
|
||||||
case $choice in
|
case $choice in
|
||||||
stream)
|
stream)
|
||||||
info_$os "opening $title" "mpv"
|
info_$os "opening $title" "mpv"
|
||||||
subs_flag=
|
|
||||||
[ -n "$subtitle" ] && subs_flag="--sub-file=$subtitle"
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
player_$os "$provider_video" "$title" "--referrer=https://$domain $subs_flag"
|
player_$os "$provider_video" "$title" "--referrer='$refer' --tls-verify=no"
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
cast)
|
cast)
|
||||||
@@ -105,10 +105,9 @@ printf "%s\n" "$url" | while read -r id title; do
|
|||||||
;;
|
;;
|
||||||
download)
|
download)
|
||||||
info_$os "Downloading $title" "downloader"
|
info_$os "Downloading $title" "downloader"
|
||||||
[ -n "$subtitle" ] && curl -s "$subtitle" -o "$download_dir/$title.vtt"
|
|
||||||
case $provider_video in
|
case $provider_video in
|
||||||
*m3u*) $terminal hls -ro "$download_dir/$title" "$provider_video" || error_$os "Downloading failed $title" ;;
|
*m3u*) $terminal hls -ro "$download_dir/$title" "$provider_video" || error_$os "Downloading failed $title" ;;
|
||||||
*) $terminal aria2c -U "$agent" --check-certificate=false -d "$download_dir" --summary-interval=0 -x 16 -s 16 --referer="https://$domain" "$provider_video" -o "$title.mp4" --download-result=hide || error_$os "Downloading failed $title" ;;
|
*) $terminal aria2c -U "$agent" --check-certificate=false -d "$download_dir" --summary-interval=0 -x 16 -s 16 --referer="$refer" "$provider_video" -o "$title.mp4" --download-result=hide || error_$os "Downloading failed $title" ;;
|
||||||
esac
|
esac
|
||||||
info_$os "Episode Downloaded $title"
|
info_$os "Episode Downloaded $title"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user