Mapaler / EhTagTranslator

将e绅士页面TAG换成中文,最全数据库。
GNU General Public License v3.0
538 stars 60 forks source link

使用油猴子来加载样式 #21

Closed xioxin closed 7 years ago

xioxin commented 7 years ago

19

实现一键更新样式 点击生成CSS,生成完成后自动保存 设置中增加“使用内置样式注入器” 选项,可以手动关闭 在E站中增加构建者的UI

因为之前在Chrome下开发的 今天拿FireFox测试结果一塌糊涂,研究了半天终于把兼容搞好了

⚠️注意:之前的配置参数将会丢失,记得备份

你们最好测试一下 再合并 https://github.com/xioxin/EhTagTranslator/raw/master/EhTagBuilder.user.js

image image

OpportunityLiu commented 7 years ago

我这儿没啥问题

xioxin commented 7 years ago

这次升级 配置文件会失效 这样会不会让用户一脸懵逼?

OpportunityLiu commented 7 years ago

image 这才是一脸懵逼

xioxin commented 7 years ago

哈哈哈 我在里站调的样式 忘记了适配表站了 这就去改

xioxin commented 7 years ago

表站样式已经修好

Mapaler commented 7 years ago

我和老婆在三亚,明天拍婚纱照,你们自己先搞。🏖️

xioxin commented 7 years ago

@Mapaler 那我点合并了 被秀了一脸 造成一万点伤害

Mapaler commented 7 years ago

推荐用Firefox开发,因为更遵守W3C,拿到Chrome一般也可以用,反过来就不行。

也没必要说是升级,直接当多另一个版本就行了。

OpportunityLiu commented 7 years ago

为什么页面会变长??

OpportunityLiu commented 7 years ago

而且底下啥都没有? default default

xioxin commented 7 years ago

某一个标签里面的内容过多吧 看了是长筒袜

Mapaler commented 7 years ago

用火狐开发者工具最好先进开发者工具设置打开代码草稿纸,比每次粘贴好,还能看到错误信息。

Mapaler commented 7 years ago

今天看到Stylish官网有用油猴来添加css的功能

看了下是这样一堆代码

xioxin commented 7 years ago

这段代码没有安装Stylish的情况下依旧可以使用几乎和我写的差不多

xioxin commented 7 years ago

能给个地址吗 我看看

Mapaler commented 7 years ago

https://userstyles.org/styles/137583 每个样式都有这个入口的 油猴和Stylish好像是同一个作者,所以这应该是钦定的写法

Mapaler commented 7 years ago

我刚才看了你的脚本了,方便是很方便,要是一开始就做成这样这个项目可能风格会完全不一样。

但是我考虑了一下这样会不会搞得复杂了,需要同时考虑如何解析生成CSS和输出到页面两个步骤,需要控制的开关太多。

在原版脚本里只加入保存CSS的功能,单独做一个只负责读取CSS的脚本在e站使用,开关交由用户自己用油猴完成,可以在显示CSS脚本上加一个你有多久没更新数据库了的消息提示,这样开发难度降低了。并且用户希望获取翻译更新的话,就必须来项目页面,可以增加项目的活跃度,刺激新的用户贡献翻译,不然他们将永远只会自动更新而不会来这个项目。

这样包括天国的JS版(不存在的)也可以做成这样的

xioxin commented 7 years ago

那我去掉E站生成css的功能 开关已经有了 image

xioxin commented 7 years ago

获取wiki版本有没有什么思路

Mapaler commented 7 years ago

格式版本的话在row里面,具体有没有修改的话那就是git拉取版本。直接做个定期检查更新就行了。

xioxin commented 7 years ago

好的 看尝试实现一下

Mapaler commented 7 years ago

每次获取数据保存一个时间戳,每次初始化的时候看看当前时间减时间戳过了多久,满足时间条件就在网页里插入更新连接就行了(跳转到项目页面)

Mapaler commented 7 years ago

https://github.com/Mapaler/EhTagTranslator/wiki/_history 找了一下可以在这个页面获取wiki提交历史,也就可以记录hash值,最新hash值变了就说明有变化。

xioxin commented 7 years ago

哦这个可以

xioxin commented 7 years ago

想拿到 wiki 提交次数 有什么思路吗

xioxin commented 7 years ago

想拿到 wiki 提交次数 有什么思路吗

Mapaler commented 7 years ago

还是只有那个页面,要不自己写一个git,否则自己想办法

xioxin commented 7 years ago

https://raw.githubusercontent.com/wiki/Mapaler/EhTagTranslator/rows.md https://raw.githubusercontent.com/wiki/Mapaler/EhTagTranslator/Home.md 这两个可以取到 wiki的原始md数据

但是其他的均无法获取 有什么头绪吗 比如 https://raw.githubusercontent.com/wiki/Mapaler/EhTagTranslator/group.md

在自己的项目的wiki均没有问题 不清楚是啥问题

xioxin commented 7 years ago

没事了 发现嵌套了文件夹

Mapaler commented 7 years ago

我当初试验了,嵌套文件夹对于前端没有区别,所以为了方便git管理,我就把具体的翻译部分放到了文件夹里。

OpportunityLiu commented 7 years ago

有区别的,_Sidebar.md、_Footer.md 会在就近位置寻找,可以通过文件夹来实现不同的页面有不同的Sidebar 和 Footer https://github.com/OpportunityLiu/exviewer/wiki https://github.com/OpportunityLiu/exviewer/wiki/%E4%B8%BB%E9%A1%B5 我这个中文和英文右栏不一样就是这么做的

Mapaler commented 7 years ago

还有这种操作?可是你是怎么发现的?

OpportunityLiu commented 7 years ago

试图搞多语言的时候试出来的,不过这样就无法在线编辑,只能用git,因为在线编辑的URL是没有目录信息的,只能访问到其中一个_Sidebar

xioxin commented 7 years ago

刚准备告诉你 我写了个新的 在我fork的new分支下

https://github.com/xioxin/EhTagTranslator/blob/new/EhTagBuilder.user.js

用的mvvm做的ui ui模板分离

数据是直接解析md源码 现在只写了获取数据 和生成css

Mapaler commented 7 years ago

我搞不来,你的代码太高端了,看得累……你就不能换个js的名字吗,当作其他的版本就可以了啊

xioxin commented 7 years ago

换 回主分支再换

Mapaler commented 7 years ago

你新代码都是ES6、7的吧,会不会在浏览器支持上还需要一定的普及?(P.S.好像ES8已经出来了)

我不是给了你编辑权限的吗,你可以直接在原项目添加分支测试,好处就是可以切换分支后刷新网页就可以测试不同版本了,现在这样有点麻烦。我刚才把直接传Greasy Fork的webhook也先删了,你之前编辑那个版本虽然能用,但是我觉得还是把更新的流量引导到项目来。

火狐用户数据文件夹下“gm_scripts”文件夹内就是所有的GM代码,我先用GM添加一个EhTagBuilder脚本,然后把项目克隆进去,编辑好后直接提交就可以。测试其他版本,只需要git切换检出到对应版本,刷新网页就可以了,不需要在不同窗口复制粘贴。

Mapaler commented 7 years ago

火狐默认gm文件在%AppData%\Mozilla\Firefox\Profiles\用户随机id\gm_scripts

可以用"E:\Program Files\Mozilla\Firefox\firefox.exe" -no-remote -ProfileManager来创建自己的用户信息,需要移动位置的话把旧的文件夹移到新的地方,创建一个新的用户把文件夹设为新的地方就可以了,这样就不怕重装电脑了。

xioxin commented 7 years ago

等下 我先修改下 很简单就能去掉那个界面

xioxin commented 7 years ago

好了 只是去掉了 没有加入引流相关的按钮和界面

Mapaler commented 7 years ago

我不准备在Builder上做显示功能,毕竟是叫Builder的。我是准备做一个专门的小脚本只负责读取储存的CSS添加到页面,Builder只负责添加CSS到储存。分开干事情互不影响,也不需要多余的判断。我准备先搞起来

你先只管把你的想法直接从头实现为一个新的脚本,作为一个新的实现,到时候让用户自己选择体验就行了,毕竟差异太大了不敢直接替换主脚本。

xioxin commented 7 years ago

插件数据存储是互动通的吗

Mapaler commented 7 years ago

不是互通的吗?这个我还真不知道,我以为是和本地储存一样的

xioxin commented 7 years ago

根据一般浏览器的安全套路 一般是不通的吧 没做过实验

本地存储跨域名也不互通的

Mapaler commented 7 years ago

测试了下还真是不通的…… 本地储存是不同域名不通,但是不同脚本可以共用。 GM_setValue是不同域名可以共同,但是不同脚本不通,尴尬……

xioxin commented 7 years ago

有个参数是 @namespace 命名空间 不知道是不是一样的命名空间 数据能共用 (猜测)

Mapaler commented 7 years ago

同样的命名空间除了在Greasy Fork上可以查找同一作者的脚本外毫无用处(目前发现)

刚才做了两个脚本

// ==UserScript==
// @name        test1
// @namespace   http://www.mapaler.com/
// @include     https://github.com/Mapaler/EhTagTranslator/settings/hooks
// @include     https://greasyfork.org/zh-CN/users/webhook-info
// @version     1.0.0
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_listValues
// ==/UserScript==

GM_setValue("value1","dsffdsf");
console.log(GM_getValue("value1"));
console.log("test1",GM_listValues());
// ==UserScript==
// @name        test2
// @namespace   http://www.mapaler.com/
// @include     https://github.com/Mapaler/EhTagTranslator/settings/hooks
// @include     https://greasyfork.org/zh-CN/users/webhook-info
// @version     1.0.0
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_listValues
// ==/UserScript==

console.log("test2",GM_listValues());

测试了,两个页面的输出结果都是

dsffdsf                                         test1.user.js:13:1
test1 Array [ "value1" ]                 test1.user.js:14:1
test2 Array [  ]                             test2.user.js:12:1

也就是两个脚本的数据库不通用。

xioxin commented 7 years ago

这就很尴尬了 我再想想有没有别的办法

xioxin commented 7 years ago

想了半天感觉还是写一起吧

Mapaler commented 7 years ago

我觉得的理想状态是这个样子,这样谁都不需要自己编一套显示脚本,只管维护构建部分就行了,但是既然数据库不能通用就很尴尬了。 -1

所以我觉得,直接传统脚本就还是按照传统的方式去做,不做页面内直接显示,直接把你的脚本作为新的实现与传统脚本平行存在比较好。