巧用ChatGPT改造代码 让PIX主题片刻同时支持本地链接和外部链接转化为卡片
本文是《技术相关(共38篇)》目录的第 4 篇。阅读本文前,建议先阅读本文前3篇文章:
本代码已经升级:
改造代码最开始的目的是看到其他hexo的网站上有“分享好物”的功能,可以推广但不限于淘宝、京东商品,我的是wordpress网站,搜索没有相关的插件,但也想搞一个,可惜没有成功。后来看到PIX自带的卡片功能,不过默认仅支持本地链接,包括文章、页面、片刻等,如果想分享好物或者好的链接地址,是无法转化为卡片的,所以就有了改造代码的想法。但是我对代码一窍不通,所以想到了用ChatGTP帮我改造。
一、改造代码的运行逻辑:
在现有的代码上新增判断,如果是本站链接,处理源代码不变;如果是外部链接,先分析外部链接源码,查找是否存在logo标签,有的话取logo标签值作为卡片图像,没有的话查找是否存在icon标签,有的话取icon标签值作为卡片图像,logo优先级大于icon,图像格式包括但不限于jpg/jpeg/gif/png/webp/svg等,查找是否存在title或者name标签,如果有取title或者name标签值作为卡片标题,查找是否存在des或者desc或者description标签,如果有取des或者desc或者description标签值作为卡片描述。
二、目前已知的BUG:
改造的代码并不完美,有一些外部网站,并不能获取信息。一种是像天猫、阿里巴巴1688这些使用动态的完全无法获取,及时获取了也会500、502错误造成自己的网站打不开或者缓慢,只能从数据库中删除相关网址;一种是获取不完全,就是图像、标题和描述三者只取一二,但是网址都可以获取,目前不清楚是何原因造成的,原以为是目标网址使用了CND或者防盗链,但都做了处理还是不行。
BUG注意事项在卡片页面已经做了提示。
三、改造过程:
涉及到以下文件:
1、在pix/inc目录下新增simple_html_dom.php、Debug.php、HtmlDocument.php、HtmlNode.php和constants.php,其中主要是simple_html_dom.php。
2、改造pix/inc/pix-type.php,所有的代码都在这里了。
查找以下代码,从这里开始,如果没有改动过文件,大概在65行:
// 获取卡片信息
function get_card_by_url($data) {
查找以下代码,从这里的上面结束,如果没有改动过文件,大概在171行,也就是改造结束在169行:
//音乐编辑---------------------------------------------------------------------------------------------------------------------------------
function audio_type_box(){
我们要改造的就是中间的代码,替换成以下代码:
这中间有一句替换成你自己的,其实我也不知道这个到底有用没有,本来是处理目标外部链接CDN和防盗链用的,但好像没啥效果,该不显示的还是不显示:
$proxy_script_url = 'https://proxyium.com/zh-CN/'; // 代理脚本的URL
四、改造效果:
彩蛋:如果觉得以上卡片宽度太窄,要和下面的点赞分享评论一样宽,只需要调整pix/inc/assets/css/main.css里的代码。
查找一下代码,大概在4326行:
.moment_card_item {
width: 100%;
max-width: 500px;
position: relative;
margin-bottom: 5px;
}
把max-width的值由原300px改为500px即可。
改造到此结束,用到的文件:
https://www.123pan.com/s/bqeA-kmj1H.html
提取码:V4Xr
您已阅读完《技术相关(共38篇)》目录的第 4 篇。请继续阅读本文后3篇文章:
麦涛
本来想在博客生成你这篇文章的卡片的,生成以后整个网站每次打开都好卡,只能想撤下了。😂
似水流年
这个看原网站的打开速度,并且有很大的几率生成不了卡片。