爱笔记爱笔记

城通网盘文件过期自动提醒

# -*- 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

本原创文章未经允许不得转载 | 当前页面:爱笔记 » 城通网盘文件过期自动提醒