从cloud mail ru下载网盘文件的脚本

把以下的脚本,保存为一个dl.sh的命令脚本,在linux下面,命令行下面,可以用这个脚本下载比较大的网盘文件

#!/usr/bin/env bash

# IMPORTANT: mail.ru sometimes changes internals, not too much, but script must be changed. 
#
# If this script does not work:
#   - see forks, may be there is a fix already,
#   - if not, please post patch in comments or create a working fork of this gist.
# Thank you!

# ВАЖНО. mail.ru время от времени меняет внутрянку, не очень сильно, но требуется адаптация скрипта.
# Если скрипт не работает, просьба разместить патч в комментариях или сделать работающий форк.

# 2021-05-26 updated: don't make an API call
# 2021-05-26 updated: mail.ru doesn't require token now
# 2018-06-18 updated: mail.ru changed internals
# 2017-09-22 original idea: https://novall.net/itnews/bash-skript-dlya-skachivaniya-fajlov-s-mail-ru-cherez-konsol-linux.html

URL="$1"
DST_FILE="$2"

[ -z "$DST_FILE" ] && {
    echo "Syntax: `basename $0` <url> <dst_file>" >&2
    echo "Example: `basename $0` https://cloud.mail.ru/public/BeAr/3s8QfYgLj /path/to/my/file.rar" >&2
    exit 1
}

htmlPage=$(wget --quiet -O - "$URL")
cloudSettings=$(echo "$htmlPage" | sed -n "/window.cloudSettings/,/};<\/script>/p")
unset htmlPage
[[ "$cloudSettings" == *"\"not_exists\""* ]] && {
	echo "Error: file does not exist" >&2
	exit 1
}

function getStorageUrl() {
	echo "$cloudSettings" | sed -n "/weblink_get/,/]/p" | fgrep -m 1 "url" | cut -d "\"" -f 4
}

function getFilePath() {
    local srcUrl="$1"
    echo "$srcUrl" | awk -F '/public/' '{print $2}'
}

storageUrl=$(getStorageUrl "$URL")
filePath=$(getFilePath "$URL")

wget --continue --no-check-certificate --referer="$URL" "$storageUrl/$filePath" -O "$DST_FILE"

然后记得chmod +x ./dl.sh

使用方法,很简单:

./dl.sh  https://cloud.mail.ru/public/KD2U/tLtSmEw2d obb.zip

分类: 默认 标签: 发布于: 2021-11-23 14:32:23, 更新于: 2021-11-23 14:32:54