# -*- coding:utf-8 -*-
import json
import time
import requests
def get_folder_list(folder_id, session):
"""https://openapi.ctfile.com/docs/ctfile-open-api/ctfile-open-api-1c9m8uh3njlcv"""
url = "https://rest.ctfile.com/v1/public/folder/list"
payload = {
"folder_id": folder_id,
"session": session
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
return json.loads(response.text)
def get_file_list(folder_id, session):
"""https://openapi.ctfile.com/docs/ctfile-open-api/ctfile-open-api-1c9kitkmo2gm8"""
url = "https://rest.ctfile.com/v1/public/file/list"
payload = {
"filter": "null",
"folder_id": folder_id,
"orderby": "old",
"start": "0",
"session": session
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
return json.loads(response.text)
def get_file_share(ids, session):
"""https://openapi.ctfile.com/docs/ctfile-open-api/ctfile-open-api-1c9m38pqjn58v"""
url = "https://rest.ctfile.com/v1/public/file/share"
payload = {
"ids": ids,
"session": session
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
return json.loads(response.text)
def get_file_meta(file_id, session):
"""https://openapi.ctfile.com/docs/ctfile-open-api/ctfile-open-api-1c9m87jmretn1"""
url = "https://rest.ctfile.com/v1/public/file/meta"
payload = {
"file_id": file_id,
"session": session
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
return json.loads(response.text)
def get_all_file_id(session):
all_file_id = []
folder_id_list = ["d0"]
while True:
if not folder_id_list:
break
else:
for i in folder_id_list:
folder_id_list.remove(i)
file_list = get_file_list(i, session)
for file_item in file_list["results"]:
if file_item["key"][:1] == 'd':
folder_id_list.append(file_item["key"])
else:
all_file_id.append(file_item["key"])
return all_file_id
if __name__ == '__main__':
"""
城通网盘的配置信息
开放接口登录密钥:login_key
过期时间:expiration_time (例子:expiration_time = "2022-05-20 13:14:20")
"""
# 开放接口登录密钥
login_key = "你的密钥"
# 过期时间
expiration_time = "密钥的过期时间"
files = get_all_file_id(login_key)
temp_file_ids = []
for item in files:
file_meta = get_file_meta(item, login_key)
days = (file_meta["del_time"] - round(time.time())) // 86400
if days <= 10:
temp_file_ids.append(item)
msg_str = ""
if temp_file_ids:
share_list = get_file_share(temp_file_ids, login_key)
temp_str = ""
for item in share_list["results"]:
temp_str += f'{item["name"]}:{item["weblink"]}\n'
msg_str += temp_str
key_days = (time.mktime(time.strptime(expiration_time, "%Y-%m-%d %H:%M:%S")) - round(time.time())) // 86400
if key_days <= 10:
msg_str += f"警告:距离login_key过期还剩 {key_days} 天"
"""
通知提醒
msg_str为需要发送的消息,自行实现消息发送
"""
# 可自己选择消息提醒的方式
print(msg_str)
来自
https://blog.csdn.net/qq_41730930/article/details/113105474
爱笔记