-
-
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" |
I was getting a "not premium error" for the website token. Maybe they have updated it recently. Checked from loading their site. As of now, "abcde" works fine.
@asifajrof changed again, how did you find it?
yup, at least for now it's fghij
.
I found it by loading the page in my browser. Use the inspect tool and check in the networks tab.
I think gofile may have updated their API again, even using the new websiteToken I'm getting the notPremium
error when using getContent
its agh3456fg
now
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.
Thank you, it helps a lot :)