本帖最后由 名shu 于 2023-8-21 21:23 编辑
序言
在当今数字化时代,人们不断探索着如何利用技术来提升生产力和创造力。编程作为一项强大的技能,为我们创造了无限可能,而油猴(Tampermonkey)脚本则为浏览器增添了灵活性和个性化。
然而,对于许多人来说,编写油猴脚本可能并不是一项轻松的任务,尤其是对于那些刚刚踏入编程领域的人。在这样的背景下,人工智能的迅猛发展为我们提供了一种前所未有的方法来辅助编写油猴脚本,而ChatGPT正是这一领域的佼佼者。
探索创意的辅助利器
ChatGPT是由OpenAI开发的一种基于大规模预训练的语言模型,它可以理解并生成人类语言。这一技术的一个重要应用就是辅助编程工作。不论是初学者还是有经验的开发者,在编写油猴脚本时,可能会遇到各种问题,包括逻辑设计、语法问题以及特定功能的实现。在这些情况下,ChatGPT可以作为一个强大的合作伙伴,为你提供创意和解决方案。
跨越学习曲线的利器
编写油猴脚本对于新手而言可能是一项陌生的任务。语法、API调用、事件处理等等,这些概念可能会令人望而却步。然而,有了ChatGPT,你不再需要孤军奋战。通过向ChatGPT提问,你可以获得关于特定编程问题的解释、示例代码甚至是整体逻辑的建议。这有助于跨越陡峭的学习曲线,让编程变得更加亲近和友好。
如何利用ChatGPT辅助编写油猴脚本
使用ChatGPT来辅助编写油猴脚本并不复杂。首先,你需要一个可以访问ChatGPT的接口,可以是OpenAI的官方平台或者集成了ChatGPT的应用。然后,你可以提出类似于“我想为油猴脚本添加一个自动翻译功能,应该如何实现?”这样的问题。
ChatGPT会为你提供关于如何处理文本翻译、调用哪些API以及如何将脚本集成到油猴中的建议。
然而,在使用ChatGPT时,也需要保持一定的理性。尽管它可以提供有关编程的建议,但并不是绝对准确的。它的建议可能需要你自己进行验证和调整,以确保最终的脚本能够按照你的预期工作。
展望未来
随着人工智能技术的不断发展,ChatGPT在辅助编程领域的潜力将会不断增强。它将成为那些想要探索编程世界的人们的得力助手,为他们提供新颖的创意和解决方案。
同时,ChatGPT也将促进开发者之间的合作与交流,共同推动编程社区的繁荣发展。
总之,利用ChatGPT来辅助编写油猴脚本是一个令人兴奋的前景。它不仅为编程新手提供了更好的学习途径,也为有经验的开发者带来了更多的创意和灵感。让我们一同探索这个新领域,释放创造力,创造出更加个性化和强大的油猴脚本!
(以上内容由AI生成)
为什么选择ChatGPT?因为我只用过它和文心一言,就智能程度而言,文心一言逊了不止一筹
本帖主要介绍如何通过聊天来使AI帮助我们完成脚本的编写,以我找到的一个小说网站举例,我想要提取出当前正在看的小说章节名称与正文内容,应该如何实现?
防杠声明:本帖仅针对JS初学者作为辅助学习所用,能够熟练编写代码的大佬看个乐呵就行,AI对于篇幅较大的JS脚本编写常常会难以联系上下文理解用户的意思
正文
本文教程比较简单,仅做抛砖引玉之用
首先我们要明确我们写的这个脚本的目的是什么,要做什么?我们要写一个脚本,当识别到我们正在访问的网站为小说网站时,在控制台中打印出该小说的当前章节名以及正文内容
第一步,识别小说网站
[JavaScript] 纯文本查看 复制代码 // ==UserScript==
// [url=home.php?mod=space&uid=170990]@name[/url] 小说网站识别脚本
// [url=home.php?mod=space&uid=467642]@namespace[/url] your-namespace
// [url=home.php?mod=space&uid=1248337]@version[/url] 0.1
// @description 在小说网站上打印识别结果到控制台
// [url=home.php?mod=space&uid=195849]@match[/url] *://*/*
// [url=home.php?mod=space&uid=609072]@grant[/url] none
// ==/UserScript==
(function() {
'use strict';
// 定义小说网站的域名列表
const novelWebsites = [
'example.com', // 将这里替换为实际的小说网站域名
'novelwebsite.com',
// 添加更多小说网站的域名
];
// 获取当前网页的域名
const currentDomain = window.location.hostname;
// 判断当前域名是否在小说网站列表中
const isNovelWebsite = novelWebsites.includes(currentDomain);
if (isNovelWebsite) {
console.log('当前网站是小说网站!');
// 在这里可以执行更多操作,例如发送识别结果到服务器等
} else {
console.log('当前网站不是小说网站。');
}
})();
可以看到,AI优先给我们的代码是不完善的域名识别法,需要我们自己填写统计好的小说域名,我们可以让它自己完善一下
[JavaScript] 纯文本查看 复制代码 // ==UserScript==
// @name 小说网站识别脚本
// @namespace your-namespace
// @version 0.1
// @description 在小说网站上打印识别结果到控制台
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 定义小说网站的关键词列表
const novelKeywords = [
'小说',
'小说网',
'阅读',
// 添加更多小说关键词
];
// 获取页面标题和内容
const pageTitle = document.title;
const pageContent = document.body.textContent;
// 判断页面标题和内容中是否包含小说关键词
const containsNovelKeyword = (text) => {
for (const keyword of novelKeywords) {
if (text.includes(keyword)) {
return true;
}
}
return false;
};
// 判断当前页面是否为小说网站
const isNovelWebsite = containsNovelKeyword(pageTitle) || containsNovelKeyword(pageContent);
if (isNovelWebsite) {
console.log('当前网站可能是小说网站!');
// 在这里可以执行更多操作,例如发送识别结果到服务器等
} else {
console.log('当前网站不是小说网站。');
}
})();
好的,AI完善了代码并提出了免责声明
我们试着使用代码看看效果,新建油猴脚本并保存
随便看一部小说,控制台输出正确
下面添加新的需求,识别当前小说的章节名称
[JavaScript] 纯文本查看 复制代码 // ==UserScript==
// @name 小说网站识别与章节识别脚本
// @namespace your-namespace
// @version 0.1
// @description 在小说网站上打印识别结果与章节名称到控制台
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 定义小说网站的关键词列表
const novelKeywords = [
'小说',
'小说网',
'阅读',
// 添加更多小说关键词
];
// 定义章节名的正则表达式模式
const chapterPattern = /第(\d+)章/;
// 获取页面标题和内容
const pageTitle = document.title;
const pageContent = document.body.textContent;
// 判断页面标题和内容中是否包含小说关键词
const containsNovelKeyword = (text) => {
for (const keyword of novelKeywords) {
if (text.includes(keyword)) {
return true;
}
}
return false;
};
// 判断当前页面是否为小说网站
const isNovelWebsite = containsNovelKeyword(pageTitle) || containsNovelKeyword(pageContent);
if (isNovelWebsite) {
console.log('当前网站可能是小说网站!');
// 查找并打印章节名称
const match = chapterPattern.exec(pageContent);
if (match) {
const chapterName = match[0];
console.log('识别到的章节名称:', chapterName);
} else {
console.log('未能识别到章节名称。');
}
} else {
console.log('当前网站不是小说网站。');
}
})();
我们可以发现,AI想当然的将章节数理解为了数字,忽略了它是汉字的可能性,我们可以详细地描述要匹配的章节名称特征让AI修改正则表达式,也可以手动直接将正则表达式改为/第(.+)章(.+)/,运行如下
最后,我们需要识别出正文内容,并打印到控制台
[JavaScript] 纯文本查看 复制代码 // ==UserScript==
// @name 小说网站识别与章节识别与正文提取脚本
// @namespace your-namespace
// @version 0.1
// @description 在小说网站上打印识别结果、章节名称和正文内容到控制台
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 定义小说网站的关键词列表
const novelKeywords = [
'小说',
'小说网',
'阅读',
// 添加更多小说关键词
];
// 定义章节名的正则表达式模式
const chapterPattern = /第(.+)章(.+)/;
// 获取页面标题和内容
const pageTitle = document.title;
const pageContent = document.body.textContent;
// 判断页面标题和内容中是否包含小说关键词
const containsNovelKeyword = (text) => {
for (const keyword of novelKeywords) {
if (text.includes(keyword)) {
return true;
}
}
return false;
};
// 判断当前页面是否为小说网站
const isNovelWebsite = containsNovelKeyword(pageTitle) || containsNovelKeyword(pageContent);
if (isNovelWebsite) {
console.log('当前网站可能是小说网站!');
// 查找并打印章节名称
const match = chapterPattern.exec(pageContent);
if (match && match.length >= 3) {
const chapterName = match[1] + '章' + match[2];
console.log('识别到的章节名称:', chapterName);
// 提取正文内容
const contentElement = document.getElementById('content');
if (contentElement) {
const contentText = contentElement.textContent;
console.log('识别到的正文内容:', contentText);
} else {
console.log('未能识别到正文内容。');
}
} else {
console.log('未能识别到章节名称。');
}
} else {
console.log('当前网站不是小说网站。');
}
})();
多网站运行看看,成了!
结语
AI写脚本终究只是辅助,一般来说费尽心思的描述我想要的功能,它仍然有可能没理解到位,还是需要人为的去调整代码。
如果要写篇幅大一些的脚本的话,最好还是将功能拆分成一个个函数来让AI实现,一步步实现脚本,对小白来说,也是一种学习方式
抛砖引玉之见,希望本帖能过对各位有所帮助
这是一个我几乎完全借助AI辅助编写的看小说脚本,功能还不是很完善,可以自动记录上次看的进度
https://scriptcat.org/script-show-page/1237 |