// ==UserScript==
// @name toutiao download images and record links
// @name:zh-CN 头条下载图片,头条记录已访问链接并添加readed类
// @namespace http://yourwebsite.com
// @version 1.2
// @license MIT
// @description 记录已访问链接并为它们添加readed类
// @author Your Name
// @match https://www.toutiao.com*
// @match https://www.toutiao.com/w/*
// @match https://www.toutiao.com/article*
// @match https://www.toutiao.com/trending*
// @grant GM_addStyle
// @grant GM_download
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.9.1/jszip.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js
// @downloadURL https://update.greasyfork.icu/scripts/477228/toutiao%20download%20images%20and%20record%20links.user.js
// @updateURL https://update.greasyfork.icu/scripts/477228/toutiao%20download%20images%20and%20record%20links.meta.js
// ==/UserScript==
(function() {
'use strict';
// 等待页面加载完毕
window.addEventListener('load', function() {
// 获取包含文本内容的
元素 找到div元素
const articleDiv = document.querySelector('div.article-content');
if (articleDiv==null) {
const articleDiv = document.querySelector('div.article');
}
// 检查是否找到了div元素
if (articleDiv) {
// 获取div内的文本内容
const textContent = articleDiv.textContent;
console.log('文章内容:', textContent);
// 创建一个Blob对象并保存到本地文件
var blob = new Blob([textContent], { type: 'text/plain' });
var a = document.createElement('a');
a.href = window.URL.createObjectURL(blob);
a.download = 'text_content.txt'; // 文件名
a.style.display = 'none';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
} else {
console.log('找不到文章内容的div元素');
}
// 获取所有链接
var links = document.querySelectorAll('a.article-item');
// 从localStorage中获取已访问链接的列表
var visitedLinks = JSON.parse(localStorage.getItem('visitedLinks')) || [];
// 遍历所有链接
links.forEach(function(link) {
var href = link.href;
// 检查链接是否已经访问过
if (visitedLinks.includes(href)) {
// 添加readed类
link.classList.add('readed');
} else {
// 如果未访问过,添加点击事件处理程序来记录访问
link.addEventListener('click', function() {
visitedLinks.push(href);
localStorage.setItem('visitedLinks', JSON.stringify(visitedLinks));
});
}
});
// 查找包含图片的容器元素
var imageContainer = document.querySelector('.image-list'); // 请替换为实际的容器选择器
var imageContainer2 = document.querySelector('.article-content');
if (imageContainer) {
// 查找容器内的所有图片元素
var imageElements = imageContainer.querySelectorAll('img');
// 遍历图片元素并下载图片
imageElements.forEach(function(imageElement, index) {
var imgUrl = imageElement.src;
var fileName = 'image_' + index + '.jpg'; // 图片文件名,可以根据需要修改
// 使用 GM_download 下载图片
GM_download({
url: imgUrl,
name: fileName,
onerror: function(error) {
console.error('下载图片失败:', error);
},
onload: function() {
console.log('下载图片成功:', fileName);
}
});
});
}
if (imageContainer2) {
// 查找容器内的所有图片元素
var imageElements2 = imageContainer2.querySelectorAll('img');
// 遍历图片元素并下载图片
imageElements2.forEach(function(imageElement, index) {
var imgUrl = imageElement.src;
var fileName = 'image_' + index + '.jpg'; // 图片文件名,可以根据需要修改
// 使用 GM_download 下载图片
GM_download({
url: imgUrl,
name: fileName,
onerror: function(error) {
console.error('下载图片失败:', error);
},
onload: function() {
console.log('下载图片成功:', fileName);
}
});
});
}
});
// 添加自定义CSS样式
GM_addStyle('.readed { color: #999 !important; text-decoration: line-through !important; }');
})();