SHZU_THEOL_Download

石河子大学THEOL在线教育平台文档下载,可无视下载权限,直接下载为PDF文件。

// ==UserScript==
// @name         SHZU_THEOL_Download
// @namespace    https://gitee.com/likaifeng012/shzu_theol_download
// @version      1.1
// @description  石河子大学THEOL在线教育平台文档下载,可无视下载权限,直接下载为PDF文件。
// @author       likaifeng
// @match        https://eol.shzu.edu.cn/meol/common/script/preview/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      Apache
// ==/UserScript==

(async () => {
    'use strict';

    // 定义下载按钮样式
    const iconStyle = {
        fontSize: '32px',
        position: 'fixed',
        top: '50%',
        right: '100px',
        transform: 'translateY(-50%)',
        color: '#fff',
        backgroundColor: '#007bff',
        borderRadius: '50%',
        padding: '15px',
        textDecoration: 'none',
        boxShadow: '0px 4px 8px rgba(0, 0, 0, 0.1)',
        zIndex: '9999'
    };

    // 创建下载按钮函数
    const createIcon = style => {
        const downloadIcon = document.createElement('a');
        downloadIcon.innerHTML = '⬇';
        Object.assign(downloadIcon.style, style);
        return downloadIcon;
    };

    // 获取页面标题和链接参数
    const pageTitle = document.title;
    const urlParams = new URLSearchParams(window.location.search);
    const resId = urlParams.get('resid');
    const lid = urlParams.get('lid');

    // 如果资源ID和LID存在,则进行下载操作
    if (resId && lid) {
        try {
            // 构建下载链接
            const downloadLink = `https://eol.shzu.edu.cn/meol/analytics/resPdfShow.do?resId=${resId}&lid=${lid}`;
            // 使用 fetch API 获取文件数据
            const response = await fetch(downloadLink);
            // 将文件数据转换为 Blob 对象
            const blob = await response.blob();
            // 创建下载按钮
            const downloadIcon = createIcon(iconStyle);
            // 生成 Blob URL
            const objectURL = URL.createObjectURL(blob);
            // 设置下载按钮链接和文件名
            downloadIcon.href = objectURL;
            downloadIcon.setAttribute('download', `${pageTitle}.pdf`);
            // 将下载按钮添加到页面
            document.body.appendChild(downloadIcon);
        } catch (error) {
            console.error('下载失败:', error);
        }
    } else {
        console.error('资源ID或LID参数缺失');
    }
})();