banner
sakiko🐘

sakiko🐘

可怜的孩子 不再胆怯
twitter
twitter
discord server

雲伺服器自動追番

這半年來我都是在次元圖書館追番的,但前段時間她好像出了點問題導致番劇不更新了,於是就逼著自己弄了這個追番工具小祥の小窩

小窩搭建的那幾天真的是磕磕絆絆渾渾噩噩,不過當問題一點點解決時真的很高興,希望這些快樂能通過這個小文章傳達出去,其實自己也是很享受這個過程的

這個小窩的材料是:

  • 一個每月 3 刀的 1 核 1G、硬盤 10G、月流量 500G、帶寬 50Mbps 的伺服器,安裝了寶塔面板
  • 一個在 porkbun 買的.top 域名,首年 1.6 刀續費 4.9 刀
  • 一顆勇敢的心

這個小窩的構造是:

  • 使用 Rclone 掛載 Onedrive 用於儲存番劇
  • qBittorrent 通過 RSS 自動下載番劇
  • 配置 qBittorrent 下載完成後自動上傳到 Onedrive
  • 最後使用 AList 掛載 Onedrive 在 Web 端展示

這個小窩的搭建過程是:

獲取微軟 E5 帳號,配置 onedrive#

參考

白嫖微軟 E5 開發者 免費使用 Office 正版、OneDrive 5T 儲存空間! PDF

微軟的 E5 開發者帳號可以白嫖 onedrive 的儲存空間 5T*26(主帳號和 25 個子帳號都有 5T)

申請 E5 開發者帳號#

進入官網點擊 joinnow 進行申請 https://developer.microsoft.com/en-us/microsoft-365/dev-program ,跟著引導走就好了

image-20231201130634905

申請完成後就會跳轉至這個介面

image-20231201133121617

在這裡就可以看到剛剛申請的開發者帳號主帳號,“用戶名 @域.onmicrosoft.com”

配置子帳戶與 onedrive#

(其實直接用主帳戶也可以,但是感覺新建一個子帳戶會比較好)

現在進入 Microsoft 365 admin center 用戶管理頁面
https://admin.microsoft.com/#/users

image-20231201135840739

點擊 Add a user 即可添加子帳戶

image-20231201142400248

然後這個 Assign product licenses 我也不清楚怎麼填,其實我的子帳戶是自動創建,我看它是這麼填的

image-20231201142839550

後面直接點 Next 直至完成添加

添加子帳戶後,點擊子帳戶,在彈出的帳戶管理頁面再點擊 OneDrive,找到 Storage used 並點擊 Edit 即可將空間設置為 5T。創建用戶時的默認空間為 1T,也可以點擊 Manage default storage 進行修改

image-20231201141527828

現在使用子帳戶登錄 onedrive,就可以看到 5T 空間了

image-20231202103427211

關於 E5 續訂問題#

E5 開發者帳號首次訂閱將會獲得 90 天的訂閱時間,續訂無硬性條件,關鍵是看微軟的算法是否會認為我們是在進行開發活動。

後面使用的 rclone 和 alist 每天上傳下載番劇都要調用自己創建應用的 api,所以自動續訂成功率應該還是很高的

如果自動續訂失敗,也還有 30 天的數據保留期,可以再申請一個 E5 帳號轉存一下,或者也可以聯繫我幫忙存()。好像續訂失敗 60 天之後就可以再次申請 E5 帳號

關閉 microsoft authenticator 驗證#

在帳號創建之後,登錄時可能會出現這個介面

Pasted image 20231110230940

Office365 強制 Microsoft Authenticator 驗證登錄如何關閉_office365 雙重驗證_高遠科技 - Project 軟件服務的博客 - CSDN 博客
參考上面這個,但是設置介面應該是改了,又重新摸索了一遍

Microsoft 365 admin center的菜單中點擊 Show all,找到Identity

image-20231201150626196

點擊後即進入了Microsoft Entra 管理中心

image-20231201151733639

找到 標識 - 概述 - 屬性,然後在頁面最後點擊【管理安全默認值】將其設置為已禁用

image-20231201151834072

此時再登錄就不會出現 microsoft authenticator 驗證登錄了

Rclone 掛載 onedrive#

參考

Linux 上使用 Rclone 掛載 OneDrive 或 GoogleDrive 並設置開機自啟 - 知乎 PDF

在 Debian/Ubuntu 上使用 rclone 掛載 OneDrive 網盤 - Rat's Blog PDF

Rclone 進階使用教程 – 自建私有 API 掛載 OneDrive | 安雲網 – AnYun.ORG PDF

可以使用 Rclone 自帶的 api(id 和密鑰留空),也可以自建 api 來掛載。自建 api 應該更有助於 E5 續訂

Windows 電腦上下載 Rclone 用於獲取 token,下載地址https://rclone.org/downloads/

Linux 上安裝 Rclone:curl https://rclone.org/install.sh | bash

自建私有 API#

自建私有 API 主要是要拿到客戶端 ID:client_id客戶端密鑰:client_secret

登錄進入 https://portal.azure.com/#home ,注意分清主帳號與子帳號,要掛載哪個帳號的 onedrive 就用哪個

搜索應用註冊,點擊 服務 - 應用註冊,點擊新註冊。
名稱填寫 rclone(隨便起)
受支持的帳戶類型:任何組織目錄 (...) 中的帳戶和個人 Microsoft 帳戶 (...),
重定向 URI:Web http://localhost

Pasted image 20231119113214

完成註冊後得到應用程序 (客戶端) ID(client_id

image-20231201180737360

再選擇 "證書和密碼",點擊 "新客戶端密碼",說明隨便寫可以為空,選擇時間為最長的那個,點擊 "添加"

image-20231201181420468

之後就得到客戶端密碼 client_secret

image-20231201182019817

(注:client_secret 是 “值” 而不是 “機密 ID”,在添加之後密碼之後會消失,請及時記錄下來)

設置 API 權限
點擊API 權限,點擊 "Microsoft Graph",添加Files.ReadFiles.ReadWriteFiles.Read.AllFiles.ReadWrite.Alloffline_accessUser.Read這些權限(可以搜索添加)。

image-20231201182619972

點擊更新權限後,再確認一下權限

Pasted image 20231119121121

Rclone 使用自建 api 掛載 onedrive#

獲取 token

在本地電腦上下載 rclone。以 Windows 為例子,解壓並進入rclone.exe所在文件夾,在資源管理器地址欄輸入cmd,回車就會在當前路徑打開命令提示符。

使用上一步獲取的客戶端 ID:client_id客戶端密鑰:client_secret,替換以下命令中的Client_IDClient_secret並執行。
rclone authorize "onedrive" "Client_ID" "Client_secret"

在瀏覽器彈出的微軟登錄窗口登錄並授權後(注意分清登錄的帳號),命令提示符窗口會出現token,複製並保存好

Rclone 連接配置

在 linux 中輸入命令rclone config並根據提示進行設置
TIPS: 因為 RCLONE 會時不時進行更新,當你看到這篇教程時菜單選項可能已經發生了略微的改動,但大致思路不會變,不要無腦照搬操作。)

[root@xxxxxxx ~]# rclone config
2023/11/10 11:51:37 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n #這裡輸入n創建一個連接

Enter name for new remote.
name> onedrive #輸入名稱,這裡用onedrive(可隨意填寫) 

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
....
31 / Microsoft OneDrive
   \ (onedrive)
....
Storage> 31 #選擇31,Microsoft OneDrive ,注意該序列號會隨時變化,看清楚再填

Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id> xxxx-xxx #!!!填寫自建API的客戶端ID:client_id

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> xxxx-xxx #!!!填寫自建API的客戶端密鑰:client_secret

Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own string value.
Press Enter for the default (global).
 1 / Microsoft Cloud Global
   \ (global)
 2 / Microsoft Cloud for US Government
   \ (us)
 3 / Microsoft Cloud Germany
   \ (de)
 4 / Azure and Office 365 operated by Vnet Group in China
   \ (cn)
region> 1 #直接回車或填1

Edit advanced config?
y) Yes
n) No (default)
y/n> n #直接回車或填n

Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> n #填n

Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
        rclone authorize "onedrive"
Then paste the result.
Enter a value.
config_token> #填寫剛才獲取的token

Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
Press Enter for the default (onedrive).
 1 / OneDrive Personal or Business
   \ (onedrive)
 2 / Root Sharepoint site
   \ (sharepoint)
   / Sharepoint site name or URL
 3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite
   \ (url)
 4 / Search for a Sharepoint site
   \ (search)
 5 / Type in driveID (advanced)
   \ (driveid)
 6 / Type in SiteID (advanced)
   \ (siteid)
   / Sharepoint server-relative path (advanced)
 7 | E.g. /teams/hr
   \ (path)
config_type> 1 #填1選擇OneDrive

Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (xxxxxx).
 1 / OneDrive (business)
   \ (xxxxxx)
config_driveid> 1 #根據提示選擇1即可

Drive OK?

Found drive "root" of type "business"
URL: https://xxxx-my.sharepoint.com/personal/xxx_xxxx_onmicrosoft_com/Documents

y) Yes (default)
n) No
y/n> y #填y

Configuration complete.
Options:
- type: onedrive
- token: {"access_token":xxxxxxxxx}
- drive_id: xxxxxx
- drive_type: business
Keep this "onedrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y #填y

Current remotes:

Name                 Type
====                 ====
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q #選擇q退出

掛載 OneDrive

創建掛載目錄,根據個人喜好選位置,我選擇在了 /home/onedrive

#新建本地文件夾,路徑自己定,即下面的LocalFolder
mkdir /home/onedrive

#掛載為磁碟,下面的DriveName、Folder、LocalFolder參數根據說明自行替換
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

#我的命令是
rclone mount onedrive:/ /home/onedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

DriveName為初始化配置填的nameFolderOneDrive裡的文件夾,LocalFolderVPS上的本地文件夾。

如果掛載過程中出現NOTICE: One drive root 'test': poll-interval is not supported by this remote錯誤,可以無視該錯誤。

如果出現含有 "fusermount3" 的報錯,則要安裝 fuse3:yum install fuse3

執行掛載命令後,在新終端窗口輸入df -h命令查看

image-20231202102411407

確保掛載成功後,ctrl+c停止或關閉執行掛載命令的窗口,開始設置開機自啟

開機自啟#

適用於使用systemctl命令的 linux

#將後面修改成你上面手動運行命令中,除了rclone的全部參數
command=" mount onedrive:/ /home/onedrive  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000"
#以下是一整條命令,一起複製到SSH客戶端運行
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target

[Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF

啟動:systemctl start rclone
設置開機自啟: systemctl enable rclone
重啟:systemctl restart rclone
停止:systemctl stop rclone
狀態:systemctl status rclone

重啟一下,如果沒問題的話,rclone 掛載 onedrive 就完成啦

安裝配置 qBittorrent-nox#

參考

qBittorrent+Rclone 實現自動上傳到 Onedrive,Google Drive 等儲存,並自動刪除本地文件 – 極客軒 PDF

yum 安裝的 qb 版本太低(AutoBangumi 會連不上,困擾了好久),而編譯安裝太麻煩好像還需要大內存,所以使用可執行版的 qb。這是上面的文章提到的
Releases · userdocs/qbittorrent-nox-static

安裝 qbittorrent-nox#

#下載
wget "https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-4.6.0_v2.0.9/x86_64-qbittorrent-nox"
#移動到程序目錄並重命名qbittorrent-nox
mv ./x86_64-qbittorrent-nox /usr/bin/qbittorrent-nox
#賦予執行權
chmod a+x /usr/bin/qbittorrent-nox

初始化 qb

完成後執行命令qbittorrent-nox,輸入 y 並回車以確認使用協議。訪問 http://伺服器公網IP地址:8080 來控制 qb,要開放 8080 端口

輸入 Web UI 的初始用戶名 admin 和初始密碼 adminadmin登錄。然後馬上重新設置新用戶名和密碼並保存

image-20231202113937707

如果一切正常,在終端Ctrl + C停止 qb,開始設置開機自啟

設置開機自啟

cat > /etc/systemd/system/qbittorrent.service << EOF
[Unit]
Description=qBittorrent Daemon Service
After=network.target

[Service]
LimitNOFILE=512000
User=root
ExecStart=/usr/bin/qbittorrent-nox
ExecStop=/usr/bin/killall -w qbittorrent-nox

[Install]
WantedBy=multi-user.target

EOF

啟動:systemctl start qbittorrent
設置開機自啟: systemctl enable qbittorrent

現在 qBittorrent-nox 的安裝就基本完成了,以下是根據自己情況的一些設置

配置 qBittorrent-nox

開放 qb 的監聽端口

image-20231202114747908

image-20231202115159633

下載 - 為所有文件預分配磁碟空間,以防止下載空間不夠

速度 - 全局速度限制,限制一下下載速度,防止後面設置的自動上傳 onedrive 跟不上下載速度

BitTorrent-Torrent 排隊,設置最大活動下載數為 1

BTTracker:https://github.com/XIU2/TrackersListCollection/blob/master/README-ZH.md

下載完成後自動上傳#

準備自動上傳腳本

自動上傳腳本:qBittorrent+Rclone 實現自動上傳到 Onedrive,Google Drive 等儲存,並自動刪除本地文件 – 極客軒

為了將番劇保存在合適的目錄,我又做了一點修改:qb_auto.sh

按照自己的信息修改腳本上面的配置,然後將腳本上傳到伺服器,我保存在了/root/qbauto/qb_auto.sh

還要給腳本執行權限 chmod a+x /root/qbauto/qb_auto.sh

#!/bin/bash
torrent_name=$1
content_dir=$2
root_dir=$3
save_dir=$4
files_num=$5
torrent_size=$6
file_hash=$7
qb_version="4.6.0"    # 改成你的qbit版本
qb_username="xxxxxx"    # qbit用戶名
qb_password="xxxxxxxxx"    # qbit密碼
qb_web_url="http://localhost:8080"    # qbit webui地址
leeching_mode="true"    # 吸血模式,true下載完成後自動刪除本地種子和文件
log_dir="/root/qbauto"    # 日誌輸出目錄
rclone_dest="onedrive"    # rclone配置的儲存名
rclone_parallel="32"    # qbit上傳線程,默認4
auto_del_flag="rclone"    # 添加標籤或者分類來標識已上傳的種子 v4.0.4+版本添加標籤“rclone”,低版本通過添加分類“rclone”標識
# 改上面的那些參數即可

# 2023-11-15, 由Sakiko添加
# 雲盤的保存路徑,用主機上的下載路徑截取出雲盤的保存路徑
# 如下載路徑為/root/Downloads/Sakiko/Bangumi/xxx,則將截取出/Sakiko/Bangumi/xxx,並會以此路徑保存在雲盤
# 可根據自己的下載路徑修改“/root/Downloads”
rclone_dest_save_dir=${save_dir#*/root/Downloads}

 
if [ ! -d ${log_dir} ]
then
        mkdir -p ${log_dir}
fi
 
version=$(echo $qb_version | grep -P -o "([0-9]\.){2}[0-9]" | sed s/\\.//g)
 
function qb_login(){
        if [ ${version} -gt 404 ]
        then
                qb_v="1"
                cookie=$(curl -i --header "Referer: ${qb_web_url}" --data "username=${qb_username}&password=${qb_password}" "${qb_web_url}/api/v2/auth/login" | grep -P -o 'SID=\S{32}')
                if [ -n ${cookie} ]
                then
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 登錄成功!cookie:${cookie}" >> ${log_dir}/autodel.log
 
                else
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 登錄失敗!" >> ${log_dir}/autodel.log
                fi
        elif [[ ${version} -le 404 && ${version} -ge 320 ]]
        then
                qb_v="2"
                cookie=$(curl -i --header "Referer: ${qb_web_url}" --data "username=${qb_username}&password=${qb_password}" "${qb_web_url}/login" | grep -P -o 'SID=\S{32}')
                if [ -n ${cookie} ]
                then
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 登錄成功!cookie:${cookie}" >> ${log_dir}/autodel.log
                else
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 登錄失敗" >> ${log_dir}/autodel.log
                fi
        elif [[ ${version} -ge 310 && ${version} -lt 320 ]]
        then
                qb_v="3"
                echo "陳年老版本,請及時升級"
                exit
        else
                qb_v="0"
                exit
        fi
}
 
 
 
function qb_del(){
        if [ ${leeching_mode} == "true" ]
        then
                if [ ${qb_v} == "1" ]
                then
                        curl -X POST -d "hashes=${file_hash}&deleteFiles=true" "${qb_web_url}/api/v2/torrents/delete" --cookie ${cookie}
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 刪除成功!種子名稱:${torrent_name}" >> ${log_dir}/qb.log
                elif [ ${qb_v} == "2" ]
                then
                        curl -X POST -d "hashes=${file_hash}&deleteFiles=true" "${qb_web_url}/api/v2/torrents/delete" --cookie ${cookie}
                else
                        curl -X POST -d "hashes=${file_hash}&deleteFiles=true" "${qb_web_url}/api/v2/torrents/delete" --cookie ${cookie}
                        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 刪除成功!種子文件:${torrent_name}" >> ${log_dir}/qb.log
                        echo "qb_v=${qb_v}" >> ${log_dir}/qb.log
                fi
        else
                echo "[$(date '+%Y-%m-%d %H:%M:%S')] 不自動刪除已上傳種子" >> ${log_dir}/qb.log
        fi
}

# 2023-11-15, 由Sakiko注釋
# function rclone_copy(){
#         if [ ${type} == "file" ]
#         then
#                 rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file  ${log_dir}/qbauto_copy.log "${content_dir}" ${rclone_dest}:/qbit/)
#         elif [ ${type} == "dir" ]
#         then
#                 rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file ${log_dir}/qbauto_copy.log "${content_dir}"/ ${rclone_dest}:/qbit/"${torrent_name}")
#         fi
# }

# 2023-11-15, 由Sakiko添加
# 修改rclone_copy函數,使其在雲盤上傳時,保存在自定義自動截取後的下載路徑rclone_dest_save_dir
function rclone_copy(){
        if [ ${type} == "file" ]
        then
                rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file  ${log_dir}/qbauto_copy.log "${content_dir}" ${rclone_dest}:"${rclone_dest_save_dir}"/)
        elif [ ${type} == "dir" ]
        then
                rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file ${log_dir}/qbauto_copy.log "${content_dir}"/ ${rclone_dest}:"${rclone_dest_save_dir}"/"${torrent_name}")
        fi
}


function qb_add_auto_del_tags(){
        if [ ${qb_v} == "1" ]
        then
                curl -X POST -d "hashes=${file_hash}&tags=${auto_del_flag}" "${qb_web_url}/api/v2/torrents/addTags" --cookie "${cookie}"
        elif [ ${qb_v} == "2" ]
        then
                curl -X POST -d "hashes=${file_hash}&category=${auto_del_flag}" "${qb_web_url}/command/setCategory" --cookie ${cookie}
        else
                echo "qb_v=${qb_v}" >> ${log_dir}/qb.log
        fi
}
 
if [ -f "${content_dir}" ]
then
   echo "[$(date '+%Y-%m-%d %H:%M:%S')] 類型:文件" >> ${log_dir}/qb.log
   type="file"
   rclone_copy
   qb_login
   qb_add_auto_del_tags
   qb_del
#   rm -rf ${content_dir}
elif [ -d "${content_dir}" ]
then 
   echo "[$(date '+%Y-%m-%d %H:%M:%S')] 類型:目錄" >> ${log_dir}/qb.log
   type="dir"
   rclone_copy
   qb_login
   qb_add_auto_del_tags
   qb_del
#   rm -rf ${content_dir}
else
   echo "[$(date '+%Y-%m-%d %H:%M:%S')] 未知類型,取消上傳" >> ${log_dir}/qb.log
fi
 
echo "種子名稱:${torrent_name}" >> ${log_dir}/qb.log
echo "內容路徑:${content_dir}" >> ${log_dir}/qb.log
echo "根目錄:${root_dir}" >> ${log_dir}/qb.log
echo "保存路徑:${save_dir}" >> ${log_dir}/qb.log
echo "文件數:${files_num}" >> ${log_dir}/qb.log
echo "文件大小:${torrent_size}Bytes" >> ${log_dir}/qb.log
echo "HASH:${file_hash}" >> ${log_dir}/qb.log
echo "Cookie:${cookie}" >> ${log_dir}/qb.log
echo -e "-------------------------------------------------------------\n" >> ${log_dir}/qb.log

配置 qb 自動上傳

來到 qbit 設置,下載選項,找到 torrent 完成時運行外部程序,勾選,填入下面的命令,/root/qbauto/qb_auto.sh 是我腳本的地址,改成你自己的,最後保存即可

bash /root/qbauto/qb_auto.sh  "%N" "%F" "%R" "%D" "%C" "%Z" "%I"

image-20231202140049439

到此已經實現了自動上傳的功能,可以下個磁力試試啦

有一點需要道歉,一直在吸血真的對不起捏,硬碟真的太小了🥺,加硬碟每月還要多花 1 刀😢

通過 RSS 下載番劇#

其實現在我也用 AutoBangumi 進行下載。不過作者發推說擔心法律之類的問題,有點愧疚,還是低調一點使用比較好。

AB 也不是必須的,qb 也有 RSS 訂閱功能,只是會麻煩一點

主要使用以下番劇下載站點:

一,蜜柑計劃
網站地址 : https://mikanani.me/ https://mikanime.tv/

二,動漫花園
網站地址 : https://share.dmhy.org/

【網站收藏夾】番劇下載站點推薦

通過蜜柑計劃下載番劇

通過首頁的鏈接或者搜搜進入番劇的頁面,選擇心儀的字幕組(個人喜歡 ANI),

image-20231202155743825

然後點擊 RSS 圖標並在跳轉的頁面複製地址

image-20231202160042198

打開自己的 qb,點擊右上角 RSS,再點擊新 RSS 訂閱,輸入剛才複製的鏈接並確定

image-20231202174134105

RSS 訂閱添加完畢之後,再點擊右上角的 RSS 下載器,點擊加號添加下載規則並取名

image-20231202175759335

RSS 訂閱添加完畢之後,點擊規則進行設置。設置保存目錄,選擇正確的訂閱源應用規則。
還要設置必須不含\d+-\d防止其下載合集(雖然蜜柑的 [ANI] 一般沒合集但還是加上比較好)

image-20231202190613753

點擊保存後右側就會出現匹配的番劇並開始下載。

下載完成後,自動上傳腳本上傳就會根據我設置的保存路徑上傳到 onedrive 的/Sakiko/Bangumi/狩龍人拉格納/Season 1目錄裡。

RSS 訂閱源更新間隔 默認是 30 分鐘,可以在 選項 - RSS 裡設置。每 30 分鐘就會檢查番劇更新並下載

簡繁篩選

蜜柑中有的字幕組簡體繁體都有,此時設置必須包含簡體即可。更複雜的篩選可使用正則表達式

動漫花園番劇下載

動漫花園要靈活使用搜索篩選番劇獲取 RSS

image-20231202192855184

安裝配置 AList 掛載 onedrive#

Home | AList 文檔

安裝#

根據官網的教程安裝,我是使用 Docker 安裝的

官網教程:https://alist.nn.ci/zh/guide/install/docker.html

# docker-cli
docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest

# 安裝完成後需手動設置密碼
# 隨機生成一個密碼
docker exec -it alist ./alist admin random
# 手動設置一個密碼,`NEW_PASSWORD`是指你需要設置的密碼
docker exec -it alist ./alist admin set NEW_PASSWORD

安裝後訪問 http://伺服器公網IP地址:5244 來登錄 Alist,用戶名為 admin,密碼為剛才設置的

image-20231202194715507

登錄後點擊頁面下方的管理即可再次設置用戶名密碼,還可以設置圖標、標題

掛載 onedrive#

官網教程:https://alist.nn.ci/zh/guide/drivers/onedrive.html

在 AList 管理頁面選擇儲存,點擊添加,驅動選擇 Onedrive 即可看到下面的頁面

image-20231202201004366

這麼多選項之中,需要自己獲取的主要是客戶端 ID、客戶端密鑰、刷新令牌

這些東西就和上面 Rclone 掛載 onedrive 中的東西是一個性質,要像上面一樣創建應用來獲取。

還是有一點不一樣的,主要還是看官網教程 https://alist.nn.ci/zh/guide/drivers/onedrive.html ,註冊應用時重定向 URL 為 https://alist.nn.ci/tool/onedrive/callback

註冊應用後得到了客戶端 ID、客戶端密鑰,再在https://alist.nn.ci/tool/onedrive/request 填寫即可獲得刷新令牌

現在即可開始onedrive 添加內容填寫

驅動		onedrive
掛載路徑	/onedrive	#即掛載到AList界面的/onedrive目錄下
序號		默認為0
備註		
緩存過期時間	默認為30
Web代理	默認為關
WebDAV策略	默認為302重定向
下載代理URL		默認為空
排序		默認為空
排序方式	默認為空
提取文件夾	默認為空
啟用簽名	默認為關
根文件夾路徑	/	#即掛載onedrive的根路徑/到AList界面的/onedrive目錄下(上面設置的掛載路徑)
地區		全球
是否Sharepoint	否
客戶端ID	填寫剛才獲取的
客戶端密鑰	填寫剛才獲取的
重定向Uri	https://alist.nn.ci/tool/onedrive/callback
刷新令牌	填寫剛才獲取的
站點ID	默認為空
分片大小	默認為5

點擊添加,完成

image-20231202205435281

現在訪問首頁即可看到 onedrive 文件夾

image-20231202210120707

遊客配置#

現在自己的 AList 只能登錄後查看,通過配置遊客帳戶不登錄就可以查看

在 AList 管理頁面選擇用戶,然後啟用 guest 遊客帳戶即可

image-20231202210750990

通過設置基本路徑可以讓指定的目錄為主頁,現在遊客看的目錄就是 Sakiko

image-20231202211052419

至於下面的介紹,在 onedrive 裡的 / Sakiko 目錄裡上傳一個 readme.md 就可以了

到現在都是還在用 ip + 端口號訪問,配置反向代理就可以通過域名訪問了

配置反向代理映射域名#

還是看 AList 官方的教程:https://alist.nn.ci/zh/guide/install/reverse-proxy.html

使用寶塔面板的話很簡單,可以模仿著給 qbittorrent 也弄一下

最終的效果就是這樣,可以在線觀看或下載,速度是比較快的,因為其不走伺服器的流量而是直接從 Onedrive 下載(好像是 WebDAV 策略 302 重定向?),這一點非常好

image-20231202212136159

F-_m7xZaYAE0LgZ

其他#

在 qb 無下載時重啟#

我一直是在寶塔面板設置了周一凌晨重啟伺服器,但如果 qb 還有下載任務就可能出問題,

於是在重啟腳本裡判斷下載目錄裡還有沒有文件,沒有文件即代表沒有下載任務,再重啟

#!/bin/bash  
  
folder="/root/Downloads"  
files=$(find "$folder" -type f)  

echo "$(date +%Y-%m-%d)"
if [ -n "$files" ]; then  
    echo "疑似正在下載:"  
    echo "$files"  
    echo "取消重啟"
else  
    echo "狀態正常,進行重啟"  
    reboot
fi

解決 Alist 打開頁面緩慢#

Alist 管理後台 - 設置 - 全局,將自定義頭部內容替換成阿里雲 CDN 解決 Alist 打開頁面緩慢、加載慢 - 哔哩哔哩

原頭部:<script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.replaceAll"></script>
阿里雲:<script src="https://polyfill.alicdn.com/v3/polyfill.min.js?features=String.prototype.replaceAll"></script>

後記#

啊,終於寫完了,其中肯定還會有許多 baka 的地方吧,還希望大家能教我。

小窩的靈感正是來自次元圖書館館長的我的追番解決方案,當時看到時是有點被小小的震撼到的。其實這段時間之前我連 docker 都不知道,這個小窩與這個小文章真的讓我學到了很多,讓我給 xlog 配置了域名,又讓我弄了 MetaMask 錢包,終於讓我向著憧憬的靠近了一點

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。