我正在尝试在我的Google驱动器中播放音乐文件,但它大约是300mb,因此Google不会让我直接使用此链接下载它。
https://drive.google.com/uc?export=download&id=12cpUAP0wy8jyMD4-rjKJ23bicCJ29Cs-
有一个“谷歌驱动器无法扫描此文件消息”并无论如何下载按钮。然后,我使用Chrome检查了下载任何按钮,并看到了这个链接:
https://drive.google.com/uc?export=download&confirm=9iBg&id=12cpUAP0wy8jyMD4-rjKJ23bicCJ29Cs-
所以我尝试使用下面的func播放音频并且它有效
audioPlayer = AVPlayer(url: url)
然而,来自下载的网址按钮仍然从confirm = 9iBg变为确认= ????这使得无法再次播放音频,除非我必须转到我的代码并手动更改该ID。这个问题有方法解决吗?谢谢!
答案 0 :(得分:0)
不幸的是,如果没有确认窗口就无法完成,很可能令牌&confirm=9iBg&id=12cpUAP0wy8jyMD4-rjKJ23bicCJ29Cs-
有一个到期日期,并且只能通过确认窗口续订。
答案 1 :(得分:0)
我今天在解决同样的问题时想出了一个解决方案。我正在使用 shell 从谷歌驱动器自动下载文件。关键是设置一个cookie,从第一次下载尝试结果html页面内容中动态获取确认码:
printf "${WHITE}Downloading ${fileNames[$i]}${NC}\n"
curl -L -c mycookie -o temp "https://drive.google.com/uc?export=download&id=${fileLinks[$i]}"
filesize=$(wc -c temp | awk '{print $1}')
if [ $filesize -gt 10000 ]; then
printf "Finish downloading\n"
mv temp "${fileNames[$i]}.tar.gz"
else
content=$(cat temp)
for (( j=0; j<$filesize-10; j++)); do
if [ "${content:$j:8}" == "confirm=" ]; then
for (( k=0; k<10; k++)); do
if [ "${content:$j+8+$k:1}" == "&" ]; then
token=${content:$j+8:$k}
fi
done
fi
done
printf "Confirm downloading with token ${token}\n"
curl -L -b mycookie -o "${fileNames[$i]}.tar.gz" "https://drive.google.com/uc?export=download&confirm=${token}&id=${fileLinks[$i]}"
rm mycookie
rm temp
fi