闲时无聊写的【阿里云盘页面资源采集工具】

        因为阿里云盘资源页面取网页源码获取不到资源信息,全都是js,所以才尝试用py写一个小工具用来取资源名和下载链接试试,代码只写了主要的思路,然后加了一个简单的UI界面(用到QtPy6),免费分享出来,希望对py小白有一定的学习价值。(代码不多,就不加注释了)

#阿里云盘资源页采集测试片段 By:FNingNet

from tkinter import messagebox
import pyperclip
import requests
import json
import sys

from PyQt6 import QtCore, QtGui, QtWidgets

#"XXXX"请替换成自己的DOMAIN_ID即可,否则只能在header中自己抓SHARE_TOKEN,然后手动填入
get_share_token_url = "https://XXXX.api.aliyunpds.com/v2/share_link/get_share_token" #"XXXX"请替换成自己的DOMAIN_ID即可,否则只能在header中自己抓SHARE_TOKEN,然后手动填入

#爬取

def get_aliyun(share_id,parent_file_id,x_share_token):

    url = "https://api.aliyundrive.com/adrive/v2/file/list_by_share"

    payload = "{\"share_id\":\""+share_id+"\",\"parent_file_id\":\""+parent_file_id+"\",\"limit\":200,\"image_thumbnail_process\":\"image/resize,w_256/format,jpeg\",\"image_url_process\":\"image/resize,w_1920/format,jpeg/interlace,1\",\"video_thumbnail_process\":\"video/snapshot,t_1000,f_jpg,ar_auto,w_256\",\"order_by\":\"name\",\"order_direction\":\"DESC\"}"

    headers = {
    'Content-Type': 'text/plain',
    'x-share-token': x_share_token
    }

    response = requests.request("POST", url, headers=headers, data=payload)

    result = response.json()

    items = result['items']

    info = ""

    for i in items:

        ali_name = i['name']

        ali_file_id = i['file_id']

        ali_share_id = i['share_id']

        ali_type = i['type']

        if ali_type == 'folder':

            ali_pre = "【文件夹】"

            info = info + f"资源名称:{ali_pre}{ali_name} \n资源地址:https://www.aliyundrive.com/s/{ali_share_id}/folder/{ali_file_id} \n----------\n"

        else:

            ali_pre = "【文件】"

            info = info + f"资源名称:{ali_pre}{ali_name} \n----------\n"

    return info

#UI界面

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(741, 660)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("C:/Users/JIAN/Desktop/fengning_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
        self.centralwidget.setEnabled(True)
        self.centralwidget.setMinimumSize(QtCore.QSize(0, 618))
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(parent=self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(10, 60, 721, 211))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.groupBox.setFont(font)
        self.groupBox.setObjectName("groupBox")
        self.label_x_share_token = QtWidgets.QLabel(parent=self.groupBox)
        self.label_x_share_token.setGeometry(QtCore.QRect(11, 166, 121, 21))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_x_share_token.setFont(font)
        self.label_x_share_token.setObjectName("label_x_share_token")
        self.label_share_id = QtWidgets.QLabel(parent=self.groupBox)
        self.label_share_id.setGeometry(QtCore.QRect(11, 86, 121, 21))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_share_id.setFont(font)
        self.label_share_id.setObjectName("label_share_id")
        self.label_parent_file_id = QtWidgets.QLabel(parent=self.groupBox)
        self.label_parent_file_id.setGeometry(QtCore.QRect(11, 126, 121, 21))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_parent_file_id.setFont(font)
        self.label_parent_file_id.setObjectName("label_parent_file_id")
        self.lineEdit_share_id = QtWidgets.QLineEdit(parent=self.groupBox)
        self.lineEdit_share_id.setGeometry(QtCore.QRect(130, 80, 511, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.lineEdit_share_id.setFont(font)
        self.lineEdit_share_id.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
        self.lineEdit_share_id.setStatusTip("")
        self.lineEdit_share_id.setWhatsThis("")
        self.lineEdit_share_id.setAccessibleName("")
        self.lineEdit_share_id.setAccessibleDescription("")
        self.lineEdit_share_id.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
        self.lineEdit_share_id.setInputMask("")
        self.lineEdit_share_id.setText("")
        self.lineEdit_share_id.setObjectName("lineEdit_share_id")
        self.lineEdit_parent_file_id = QtWidgets.QLineEdit(parent=self.groupBox)
        self.lineEdit_parent_file_id.setGeometry(QtCore.QRect(130, 120, 511, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.lineEdit_parent_file_id.setFont(font)
        self.lineEdit_parent_file_id.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
        self.lineEdit_parent_file_id.setText("")
        self.lineEdit_parent_file_id.setObjectName("lineEdit_parent_file_id")
        self.lineEdit_x_share_token = QtWidgets.QLineEdit(parent=self.groupBox)
        self.lineEdit_x_share_token.setGeometry(QtCore.QRect(130, 160, 511, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.lineEdit_x_share_token.setFont(font)
        self.lineEdit_x_share_token.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
        self.lineEdit_x_share_token.setToolTipDuration(-1)
        self.lineEdit_x_share_token.setText("")
        self.lineEdit_x_share_token.setObjectName("lineEdit_x_share_token")
        self.pushButton_Share_id = QtWidgets.QPushButton(parent=self.groupBox)
        self.pushButton_Share_id.setGeometry(QtCore.QRect(650, 80, 61, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_Share_id.setFont(font)
        self.pushButton_Share_id.setObjectName("pushButton_Share_id")
        self.pushButton_Parent_file_id = QtWidgets.QPushButton(parent=self.groupBox)
        self.pushButton_Parent_file_id.setGeometry(QtCore.QRect(650, 120, 61, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_Parent_file_id.setFont(font)
        self.pushButton_Parent_file_id.setObjectName("pushButton_Parent_file_id")
        self.pushButton_X_share_token = QtWidgets.QPushButton(parent=self.groupBox)
        self.pushButton_X_share_token.setGeometry(QtCore.QRect(650, 160, 61, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_X_share_token.setFont(font)
        self.pushButton_X_share_token.setObjectName("pushButton_X_share_token")
        self.label_Share_URL = QtWidgets.QLabel(parent=self.groupBox)
        self.label_Share_URL.setGeometry(QtCore.QRect(11, 46, 121, 21))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_Share_URL.setFont(font)
        self.label_Share_URL.setObjectName("label_Share_URL")
        self.lineEdit_Share_URL = QtWidgets.QLineEdit(parent=self.groupBox)
        self.lineEdit_Share_URL.setGeometry(QtCore.QRect(130, 40, 511, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        self.lineEdit_Share_URL.setFont(font)
        self.lineEdit_Share_URL.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
        self.lineEdit_Share_URL.setStatusTip("")
        self.lineEdit_Share_URL.setWhatsThis("")
        self.lineEdit_Share_URL.setAccessibleName("")
        self.lineEdit_Share_URL.setAccessibleDescription("")
        self.lineEdit_Share_URL.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
        self.lineEdit_Share_URL.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
        self.lineEdit_Share_URL.setInputMask("")
        self.lineEdit_Share_URL.setText("")
        self.lineEdit_Share_URL.setObjectName("lineEdit_Share_URL")
        self.pushButton_Share_URL = QtWidgets.QPushButton(parent=self.groupBox)
        self.pushButton_Share_URL.setGeometry(QtCore.QRect(650, 40, 61, 31))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_Share_URL.setFont(font)
        self.pushButton_Share_URL.setObjectName("pushButton_Share_URL")
        self.label_x_share_token.raise_()
        self.label_share_id.raise_()
        self.label_parent_file_id.raise_()
        self.lineEdit_share_id.raise_()
        self.lineEdit_parent_file_id.raise_()
        self.lineEdit_x_share_token.raise_()
        self.pushButton_Share_id.raise_()
        self.pushButton_Parent_file_id.raise_()
        self.pushButton_X_share_token.raise_()
        self.label_Share_URL.raise_()
        self.pushButton_Share_URL.raise_()
        self.lineEdit_Share_URL.raise_()
        self.groupBox_2 = QtWidgets.QGroupBox(parent=self.centralwidget)
        self.groupBox_2.setGeometry(QtCore.QRect(10, 270, 721, 331))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.groupBox_2.setFont(font)
        self.groupBox_2.setObjectName("groupBox_2")
        self.textEdit_result = QtWidgets.QTextEdit(parent=self.groupBox_2)
        self.textEdit_result.setGeometry(QtCore.QRect(10, 30, 701, 291))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textEdit_result.setFont(font)
        self.textEdit_result.setObjectName("textEdit_result")
        self.pushButton_tijiao = QtWidgets.QPushButton(parent=self.centralwidget)
        self.pushButton_tijiao.setGeometry(QtCore.QRect(10, 610, 151, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_tijiao.setFont(font)
        self.pushButton_tijiao.setObjectName("pushButton_tijiao")
        self.pushButton_qingkong = QtWidgets.QPushButton(parent=self.centralwidget)
        self.pushButton_qingkong.setGeometry(QtCore.QRect(280, 610, 151, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_qingkong.setFont(font)
        self.pushButton_qingkong.setObjectName("pushButton_qingkong")
        self.pushButton_fuzhi = QtWidgets.QPushButton(parent=self.centralwidget)
        self.pushButton_fuzhi.setGeometry(QtCore.QRect(570, 610, 151, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_fuzhi.setFont(font)
        self.pushButton_fuzhi.setObjectName("pushButton_fuzhi")
        self.label = QtWidgets.QLabel(parent=self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 0, 721, 51))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(23)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "阿里云采集助手-By FNingNet"))
        self.groupBox.setTitle(_translate("MainWindow", "变量设置:"))
        self.label_x_share_token.setText(_translate("MainWindow", "X_share_token:"))
        self.label_share_id.setText(_translate("MainWindow", "Share_id:"))
        self.label_parent_file_id.setText(_translate("MainWindow", "Parent_file_id:"))
        self.lineEdit_share_id.setPlaceholderText(_translate("MainWindow", "请输入share_id"))
        self.lineEdit_parent_file_id.setPlaceholderText(_translate("MainWindow", "请输入parent_file_id"))
        self.lineEdit_x_share_token.setPlaceholderText(_translate("MainWindow", "请输入x_share_token"))
        self.pushButton_Share_id.setText(_translate("MainWindow", "Ctrl+V"))
        self.pushButton_Parent_file_id.setText(_translate("MainWindow", "Ctrl+V"))
        self.pushButton_X_share_token.setText(_translate("MainWindow", "Ctrl+V"))
        self.label_Share_URL.setText(_translate("MainWindow", "Share_URL:"))
        self.lineEdit_Share_URL.setPlaceholderText(_translate("MainWindow", "请输入阿里云资源主目录url"))
        self.pushButton_Share_URL.setText(_translate("MainWindow", "解析"))
        self.groupBox_2.setTitle(_translate("MainWindow", "采集结果:"))
        self.textEdit_result.setPlaceholderText(_translate("MainWindow", "此处显示采集结果"))
        self.pushButton_tijiao.setText(_translate("MainWindow", "提  交"))
        self.pushButton_qingkong.setText(_translate("MainWindow", "清  空"))
        self.pushButton_fuzhi.setText(_translate("MainWindow", "复  制"))
        self.label.setText(_translate("MainWindow", "阿里云资料采集助手"))

    #按钮槽参数

        self.pushButton_tijiao.clicked.connect(self.pushButton_tijiao_clicked)

        self.pushButton_qingkong.clicked.connect(self.pushButton_qingkong_clicked)

        self.pushButton_fuzhi.clicked.connect(self.pushButton_fuzhi_clicked)

        self.pushButton_Share_id.clicked.connect(self.pushButton_Share_id_clicked)

        self.pushButton_Parent_file_id.clicked.connect(self.pushButton_Parent_file_id_clicked)

        self.pushButton_X_share_token.clicked.connect(self.pushButton_X_share_token_clicked)

        self.pushButton_Share_URL.clicked.connect(self.pushButton_Share_URL_clicked)

    def pushButton_tijiao_clicked(self):
       
       share_id = self.lineEdit_share_id.text()

       parent_file_id = self.lineEdit_parent_file_id.text()

       x_share_token = self.lineEdit_x_share_token.text()

       result = get_aliyun(share_id,parent_file_id,x_share_token)

       self.textEdit_result.setText(result)

    def pushButton_qingkong_clicked(self):
        
        self.textEdit_result.setText("")

    def pushButton_fuzhi_clicked(self):
    
        self.textEdit_result.selectAll()

        self.textEdit_result.copy()

    def pushButton_Share_id_clicked(self):

        self.lineEdit_share_id.setText(pyperclip.paste())

    def pushButton_Parent_file_id_clicked(self):

        self.lineEdit_parent_file_id.setText(pyperclip.paste())

    def pushButton_X_share_token_clicked(self):

        self.lineEdit_x_share_token.setText(pyperclip.paste())

    def pushButton_Share_URL_clicked(self):

        Share_URL = self.lineEdit_Share_URL.text()

        Share_URL = Share_URL.strip()

        Share_id_start = Share_URL.find("/s/") + 3

        Share_id_end = Share_URL.find("/folder/")

        share_id = Share_URL[Share_id_start:Share_id_end]

        Parent_file_id_start = Share_URL.find("/folder/") + 8

        Parent_file_id_end = len(Share_URL)

        Parent_file_id = Share_URL[Parent_file_id_start:Parent_file_id_end]

        self.lineEdit_share_id.setText(share_id)

        self.lineEdit_parent_file_id.setText(Parent_file_id)

        get_share_token_response = get_share_token(share_id)

        self.lineEdit_x_share_token.setText(get_share_token_response)


def get_share_token(share_id):

        get_share_token_payload = json.dumps({"share_id": share_id})

        get_share_token_headers = {'Content-Type': 'application/json'}

        get_share_token_response = requests.post(url=get_share_token_url, headers=get_share_token_headers, data=get_share_token_payload)

        data = json.loads(get_share_token_response.text)

        share_token = data.get('share_token')

        return share_token

#显示可视化界面

if __name__ == "__main__":
   
   app = QtWidgets.QApplication(sys.argv)

   MainWindow = QtWidgets.QMainWindow()

   ui = Ui_MainWindow()

   ui.setupUi(MainWindow)

   MainWindow.show()

   sys.exit(app.exec())

需要打包成exe可执行文件的话,我是安装的pyinstaller,还有py最新版本可能不能安装pyinstaller,会因为最新版本的py取消了imp支持库的问题而报错,建议安装之前的版本,我是用的py3.7。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FNingNet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值