Twitter/X Media Downloader

Save Video/Photo by One-Click.

< Feedback on Twitter/X Media Downloader

Question/comment

§
Posted: 2025-04-27

我添加这段代码可以把这个插件的下载历史记录导出

首先打开编辑器,大概在39行的位置有这样一行代码:

GM_registerMenuCommand((this.language[navigator.language] || this.language.en).settings, this.settings);

然后在这行代码的下边添加这段代码:

        // --- 开始添加的代码 ---
        GM_registerMenuCommand('导出下载历史 (Markdown)', async () => {
          try {
            const history = await GM_getValue('download_history', []); // 添加默认值以防万一
            if (!history || !Array.isArray(history) || history.length === 0) {
              alert('没有找到下载历史记录或历史记录为空。');
              return;
            }

            const markdownContent = '# Twitter/X Media Downloader 下载历史\n\n' +
              history.map(id => `- [Tweet ${id}](https://x.com/i/web/status/${id})`).join('\n');

            const blob = new Blob([markdownContent], { type: 'text/markdown;charset=utf-8' });
            const link = document.createElement('a');
            link.href = URL.createObjectURL(blob);
            link.download = 'twitter_download_history.md';
            link.style.display = 'none';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
            URL.revokeObjectURL(link.href);
            alert(`已开始下载包含 ${history.length} 条记录的 Markdown 文件 (twitter_download_history.md)。`);
          } catch (error) {
            console.error('导出 Markdown 历史记录时出错:', error);
            alert('导出 Markdown 历史记录时出错,请查看控制台获取详细信息。');
          }
        });
        // --- 结束添加的代码 ---

最后的样子是这样的:图一

然后在油猴插件这里就可以下载历史记录了:图二

§
Posted: 2025-04-27

老哥,导出以后怎么添加到新的里面去呀。我用这个代码重新做了一个油猴插件进来。
https://pastebin.com/r53iy73V

§
Posted: 2025-04-27

老哥,导出以后怎么添加到新的里面去呀。我用这个代码重新做了一个油猴插件进来。
https://pastebin.com/r53iy73V

这个就是Markdown格式的超链接,格式是

- [Tweet 1870021655499870584](https://x.com/i/web/status/1870021655499870584)

你要不做个脚本处理一下,我只做了导出,没做任何导入设计,不过应该很方便

§
Posted: 2025-04-27

老哥,导出以后怎么添加到新的里面去呀。我用这个代码重新做了一个油猴插件进来。
https://pastebin.com/r53iy73V

这个就是Markdown格式的超链接,格式是

- [Tweet 1870021655499870584](https://x.com/i/web/status/1870021655499870584)

你要不做个脚本处理一下,我只做了导出,没做任何导入设计,不过应该很方便

哥我纯小白。。完全不会导入。。www

§
Posted: 2025-04-27

老哥,导出以后怎么添加到新的里面去呀。我用这个代码重新做了一个油猴插件进来。
https://pastebin.com/r53iy73V

这个就是Markdown格式的超链接,格式是

- [Tweet 1870021655499870584](https://x.com/i/web/status/1870021655499870584)

你要不做个脚本处理一下,我只做了导出,没做任何导入设计,不过应该很方便

用ds写了一个,能够成功导入,但是好像不起效果。。emmmm不懂了

// ==UserScript==
// 在原有的@grant部分添加:
// @grant GM_getValue
// @grant GM_setValue
// 新增菜单命令(在原有的导出代码附近添加):
GM_registerMenuCommand('导入下载历史 (Markdown)', async () => {
try {
const input = document.createElement('input');
input.type = 'file';
input.accept = '.md';

input.onchange = async (e) => {
const file = e.target.files[0];
if (!file) return;

const reader = new FileReader();
reader.onload = async (e) => {
try {
const content = e.target.result;
const existingHistory = await GM_getValue('download_history', []);
const newIds = [];

// 使用正则匹配所有status ID
const idRegex = /https:\/\/x\.com\/i\/web\/status\/(\d+)/g;
let match;
while ((match = idRegex.exec(content)) !== null) {
const id = match[1];
if (!existingHistory.includes(id)) {
newIds.push(id);
}
}

if (newIds.length === 0) {
alert('未找到有效的历史记录或所有记录已存在');
return;
}

const updatedHistory = [...existingHistory, ...newIds];
await GM_setValue('download_history', updatedHistory);

alert(`成功导入 ${newIds.length} 条记录,当前总记录数:${updatedHistory.length}`);
} catch (error) {
console.error('导入历史记录时出错:', error);
alert('文件解析失败,请确保选择正确的Markdown文件');
}
};

reader.readAsText(file);
};

input.click();
} catch (error) {
console.error('导入功能初始化失败:', error);
alert('导入功能发生错误,请查看控制台');
}
});

§
Posted: 2025-04-28

https://greasyfork.org/zh-CN/scripts/529453 不错的功能,我将添加到这个脚本内

Post reply

Sign in to post a reply.