TeStore最初诞生于博友蚂蚱(ShingChi)13年底创建的GitHub组织Typecho-Fans(以下简称TF),当时那里主要用于存放肥皂群40412938大大们的各种插件主题作品。14年我加入时为群设计了logo和主页,后来随着几位元老管理都不再活跃TF也归于沉寂。

typecho_fans.png

17年我又重新整理其中的部分作品,发现车坤的AppStore在几经调整后也关闭了源站。与TeStore一样,没了抓取和储存zip包的服务端,似乎所有非官方扩展商店都难逃寿终正寝的结局。


后来在翻看他们的代码时,一段简单的正则匹配表格部分偶然间启发到了我。因为TF的README文档就是用表格来记录作品信息的,如果直接抓取其内容做列表数据,那稳定的GitHub岂不就能做永久服务端了?虽然要人工手写但更新频率也不高,TF便是这么记过来的,以Markdown语法的确简单易行。这样作者们主动更新表格,其他成员随时补充,有点像wiki接力的意思。

testore_logo.png

于是乎在此理念的驱动下,我把尘封已久的TeStore又拿出来仔细翻新了一遍。除配合表格内容更新为5栏列表并用releases实现各个zip包的单独寄存外,还在原作基础上大幅改进了安装机制,可以适应不同打包情况做到准确解压。由于GitHub国内访问速度时有波动,页面我做了ajax加载效果,完成即可在本地生成缓存,之后无论分页还是搜索便能飞速响应;再加上些图标标记和版本升级提示效果……如此这般,Typecho首个免服务端插件商店终于被我满血复活~

testore_v1.1.1_thumb.png

由于所有插件信息都读取自TF目录下的两个MD格式文档,也算是让这个GitHub上最大的非官方Typecho组织有了新的使命与动力。过去由群内作者自发上传的近百款插件主题被重新定位为“社区维护版”,以和外部仅登记下载链接的插件或其他修改分支相区别,其实也更符合TF这些年偶尔有多人自发翻新其中老作品的实际效用。现在那些能保持活跃的新作更多被鼓励仅添加信息到TESTORE.md里,即只需按格式写入稳定的zip包下载地址就能让用户在TeStore里一键安装到了。

当然,TF的插件目录依然接受新作上传。如README.md里注明的,由于组织内源码可由所有成员任意修改,如果作者不在意或已放弃维护,存在这里可能是个不错的主意。虽然实际参与接力维护的人还不多,也已经有好几个多作者署名使老插件重生的成功案例了。“社区维护版”的可用指数更高,或许对插件数量一般的Typecho是个好现象。

testore.md_head.png

承蒙70和版主大大关照,新版TeStore在官方论坛发布后马上即被提为置顶。目前在大家的热心提交下收录插件总数已经达到220余款。我也在今年回归后决定继续大幅更新一波,修复上一版遗留的bug,重点改善下读取速度的问题——


目前除TF外插件作品集中地还有官方GitHub的plugins目录、wiki的插件列表和小夜的插件专题站等。

之前同名插件安装只走第一款的bug现在已经连同非管理员可查看列表页等安全问题一并修复。1.1.4版中从按钮样式到操作提交及反馈效果都回归原汁原味的系统风格;解压缩功能也抛弃掉庞大陈旧的pclzip库使用原生的ZipArchive方法,在格式判断与升级清理等方面增加了更严谨的处理。

最新版的显著改变在于针对国内用户反应GitHub有时被墙造成难以使用的问题开始全面整合jsDelivrGitCDN两家镜像代理服务。开启后不仅列表数据几乎能做到秒读,zip包也会优先下载TF内加速专用目录ZIP_CDN下的镜像文件地址,使响应速度和成功率大幅提高。所以大家登记插件信息时最好也在ZIP_CDN里放一份zip(重名插件用名称_作者名区别),这样就能让开启相关功能的小伙伴们加速下载了。


强烈推荐使用jsDelivr,因为是官方主打的镜像功能,国内节点很多;GitCDN虽然由CloudFlare赞助但脚本是个人作者写的,稳定性和同步速度表现不甚理想。

以上便是大致的更新说明了。今后这个基于TF目录文档的数据源能否保持长期可用还需要大家共同监督与维护,希望新版TeStore能长期造福于TE用户吧!有问题或建议可以提issues,我会在有余力的情况下继续跟进插件与TF目录的维护工作。:)


附件 TeStore_v1.1.5.zip (138.9 KB, 下载次数: 4976, 最后修改: 2020-06-14 11:05)


特别鸣谢——


神龙见首不见尾的原作者zhulin3141

帮忙为新版测试的康康YinHeng89


Changlog

1.1.5
修正非CDN下表格源码解析bug;
作者信息全取html提高兼容性;
本地信息过滤标签提高准确性;
列表页筛选功能支持作者名称。

1.1.4
列表顶部可分标签显示已安装;
列表图标改为清晰的SVG格式;
美化按钮样式点击提示插件名;
安装删除由ajax改为同步post;
使用系统反馈效果移除sticky;
安装增加目录检测和升级清理;
用PHP原生解压缩移除pclzip;
data移入cacert转为常规目录。


1.1.3
优化代码清除冗余增强可读性;
修正路由访问漏洞提高安全性;
修复同名插件只安装第1个bug;
可选jsDelivr/GitCDN镜像加速;
表格或zip为raw地址自动加速;
加速时优先下载ZIP_CDN文件;
API检测ZIP_CDN目录支持缓存。

1.1.2
新增cURL下载方式选项与验证;
cURL方式下支持SSL证书识别;
使用转码hack改善中文兼容性;
修正解析http源主页链接问题;
修正作者链接为空时报错问题。

1.1.1
修正PHP7兼容和DOM编码问题;
修正多人作者时链接解析问题;
修正父文件夹/单文件插件判断;
优化报错反馈和缺省筛选效果。

1.1.0
用PHP DOM解析HTML表格作源;
异步加载列表并更新缓存逻辑;
按字母排序且已安装自动提前;
支持列表的分页和按简介筛选;
支持附加图标和提醒版本升级;
安装可递归扫描智能判断路径;
优化ajax效果增加action校验。

(Last modified: 2020-06-14 11:04)