-
-
Save shawnli87/d416b7c9030293cabfcf4c225cdc5a15 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
url="$1" | |
#prompt for url if not provided | |
until [ ! -z "$url" ] ; do | |
read -p "url=" url | |
done | |
id=$(sed 's|.*gofile.io/d/||g' <<< "$url") | |
echo "Downloading $id" | |
#get guest account token for url and cookie | |
token=$(curl -s 'https://api.gofile.io/createAccount' | jq -r '.data.token' 2>/dev/null) | |
[ "$?" -ne 0 ] && echo "Creating guest account failed, please try again later" | |
#get website token for url | |
websiteToken=$(curl -s 'https://gofile.io/dist/js/alljs.js' | grep 'fetchData.wt' | awk '{ print $3 }' | jq -r) | |
[ "$?" -ne 0 ] && echo "Getting website token failed, please try again later" | |
#get content info from api | |
resp=$(curl 'https://api.gofile.io/getContent?contentId='"$id"'&token='"$token"'&wt='"$websiteToken"'&cache=true' 2>/dev/null) | |
code="$?" | |
#prompt for password if required | |
if [[ $(jq -r '.status' <<< "$resp" 2>/dev/null) == "error-passwordRequired" ]] ; then | |
until [ ! -z "$password" ] ; do | |
read -p "password=" password | |
password=$(printf "$password" | sha256sum | cut -d' ' -f1) | |
resp=$(curl 'https://api.gofile.io/getContent?contentId='"$id"'&token='"$token"'&wt='"$websiteToken"'&cache=true&password='"$password" 2>/dev/null) | |
code="$?" | |
done | |
fi | |
#verify content info was retrieved successfully | |
[ "$code" -ne 0 ] && echo "URL unreachable, check provided link" && exit 1 | |
#create download folder | |
mkdir "$id" 2>/dev/null | |
cd "$id" | |
#load the page once so download links don't get redirected | |
curl -H 'Cookie: accountToken='"$token" "$url" -o /dev/null 2>/dev/null | |
[ "$?" -ne 0 ] && echo "Loading page failed, check provided link" | |
for i in $(jq '.data.contents | keys | .[]' <<< "$resp"); do | |
name=$(jq -r '.data.contents['"$i"'].name' <<< "$resp") | |
url=$(jq -r '.data.contents['"$i"'].link' <<< "$resp") | |
#download file if not already downloaded | |
if [ ! -f "$name" ] ; then | |
echo | |
echo "Downloading $name" | |
curl -H 'Cookie: accountToken='"$token" "$url" -o "$name" | |
[ "$?" -ne 0 ] && echo "Downloading ""$filename"" failed, please try again later" && rm "$filename" | |
fi | |
done | |
echo | |
echo | |
echo "Note: gofile.io is entirely free with no ads," | |
echo "you can support it at https://gofile.io/donate" |
agh3456fg
Good looking out, thank you!
Fixed the websiteToken issues and added enhancements to bring the script more in line with my Zsh version (i.e. error checking, encrypted folders)
Thanks!
jq: error (at :1): null (null) has no keys
any clue?
jq: error (at :1): null (null) has no keys any clue?
I'm getting the same error
is there a way to download a certain file within the folder? using the certain content id?
is there a way to download a certain file within the folder? using the certain content id?
@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?
is there a way to download a certain file within the folder? using the certain content id?
@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?
im using headless vps, is there a way tho for a single file?
is there a way to download a certain file within the folder? using the certain content id?
@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?
im using headless vps, is there a way tho for a single file?
@tmatzxzone No
is there a way to download a certain file within the folder? using the certain content id?
@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?
im using headless vps, is there a way tho for a single file?
@tmatzxzone No
alrite, i just add the file name that i dont need to download so it skip the download LUL, thx for the script tho
is there a way to download a certain file within the folder? using the certain content id?
im using headless vps, is there a way tho for a single file?
alrite, i just add the file name that i dont need to download so it skip the download LUL, thx for the script tho
I used another parameter to explicitly mention the filenames that i wanted to download. its not a full proof solution, but it works. you may check this fork
is there a way to download a certain file within the folder? using the certain content id?
@tmatzxzone The whole point of using the script is to download multiple files at the same time. Why wouldn't you just use the browser for individual files?
im using headless vps, is there a way tho for a single file?
@tmatzxzone No
alrite, i just add the file name that i dont need to download so it skip the download LUL, thx for the script tho
Try this my fork
they just updated their API
A fork to work with the API update, but it is also heavily modified. Take and adapt what you need.
its
agh3456fg
now