找回密码
 立即注册
搜索
查看: 2467|回复: 13

[原创] 令S1正确显示AA的油猴脚本

[复制链接]
     
发表于 2021-1-2 10:17 | 显示全部楼层 |阅读模式
本帖最后由 冰箱研会长e-3M 于 2021-1-12 21:43 编辑

https://greasyfork.org/zh-CN/scripts/420012-aa-for-s1
不需要手动输入了...

-------------

删除了GITHUB和GITEE的仓库, 下面的链接基本都作废了.
这里可以安装最新版
试着用XPATH重新写了一遍, 有好好在工作呢(

  1. // ==UserScript==
  2. // @name         AA for S1
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.3
  5. // @updateURL    https://gitee.com/Arxher/AA-For-Stage1st/raw/main/AA4S1.user.js
  6. // @downloadURL  https://gitee.com/Arxher/AA-For-Stage1st/raw/main/AA4S1.user.js
  7. // @description  Modify Stage1 text property for AA
  8. // @author       冰箱研会长
  9. // @match        https://bbs.saraba1st.com/2b/*
  10. // @grant        GM_addStyle
  11. // ==/UserScript==

  12. var AA_author_array = new Array("冰箱研会长e-3M","冰箱研会长");

  13. function getElementByXpath(path) {
  14.     return document.evaluate(path, document, null,
  15.                              XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  16. }

  17. function Reset_BlockCode(NodeRoot){
  18.     var CodeBlocks = NodeRoot.getElementsByClassName("blockcode");
  19.     if(CodeBlocks){
  20.         for(var i = 0; i < CodeBlocks.length;i++){
  21.             var CodeBlock=CodeBlocks[i];
  22.             CodeBlock.style.fontSize="12px";
  23.             CodeBlock.style.lineHeight="22px";
  24.             CodeBlock.style.fontFamily="Monaco, Consolas, Lucida Console, Courier New, serif";
  25.             CodeBlock.style.whiteSpace = "normal";
  26.         }
  27.     }

  28. }

  29. function Reset_BlockQuote(NodeRoot){
  30.     var QuoteBlocks = NodeRoot.getElementsByClassName("blockquote");
  31.     if(QuoteBlocks){
  32.         for(var i = 0; i < QuoteBlocks.length;i++){
  33.             var QuoteBlock=QuoteBlocks[i];
  34.             QuoteBlock.style.fontSize="12px";
  35.             QuoteBlock.style.lineHeight="22px";
  36.             QuoteBlock.style.fontFamily="Monaco, Consolas, Lucida Console, Courier New, serif";
  37.             QuoteBlock.style.whiteSpace = "pre-wrap";
  38.         }
  39.     }

  40. }

  41. function AAPosts_Modifier(){
  42.     var PostLists = getElementByXpath(`/html/body/div[8]/div[4]/div[2]`);
  43.     if(PostLists){
  44.         //existence check
  45.         if(PostLists.id == `mdly`){
  46.             //if this is your thread, the xpath of threadlist will be 8 4 3
  47.             //8 4 2 will have id "mdly"
  48.             PostLists = getElementByXpath(`/html/body/div[8]/div[4]/div[3]`);
  49.             if(PostLists){
  50.                 //check if new postlists exist, if so, append normal procedure but for 842
  51.                 var PostCounter = 1;
  52.                 while(getElementByXpath(`/html/body/div[8]/div[4]/div[3]/div[${PostCounter}]`)){
  53.                     var PostAuthor = getElementByXpath(`/html/body/div[8]/div[4]/div[3]/div[${PostCounter}]/table/tbody/tr[1]/td[1]/div/div[1]/div/a`);
  54.                     if(PostAuthor){
  55.                         if( AA_author_array.includes(PostAuthor.innerText) ){
  56.                             var ReplyBox = getElementByXpath(`/html/body/div[8]/div[4]/div[3]/div[${PostCounter}]/table/tbody/tr[1]/td[2]/div[2]/div/div[1]/table/tbody/tr/td`);
  57.                             ReplyBox.style.fontSize = "14px";
  58.                             ReplyBox.style.lineHeight = "8px";
  59.                             ReplyBox.style.fontFamily = "aahub, MS PGothic";
  60.                             ReplyBox.style.whiteSpace = "pre";
  61.                             Reset_BlockCode(ReplyBox);
  62.                             Reset_BlockQuote(ReplyBox);

  63.                         }
  64.                     }
  65.                     PostCounter = PostCounter + 1;
  66.                 }
  67.             }
  68.         }else{
  69.             //this is not your thread, so normal 842 will be active
  70.             var PostCounter = 1;
  71.             while(getElementByXpath(`/html/body/div[8]/div[4]/div[2]/div[${PostCounter}]`)){
  72.                 var PostAuthor = getElementByXpath(`/html/body/div[8]/div[4]/div[2]/div[${PostCounter}]/table/tbody/tr[1]/td[1]/div/div[1]/div/a`);
  73.                 if(PostAuthor){
  74.                     if( AA_author_array.includes(PostAuthor.innerText) ){
  75.                         var ReplyBox = getElementByXpath(`/html/body/div[8]/div[4]/div[2]/div[${PostCounter}]/table/tbody/tr[1]/td[2]/div[2]/div/div[1]/table/tbody/tr/td`);
  76.                         ReplyBox.style.fontSize = "14px";
  77.                         ReplyBox.style.lineHeight = "8px";
  78.                         ReplyBox.style.fontFamily = "aahub, MS PGothic";
  79.                         ReplyBox.style.whiteSpace = "pre";
  80.                         Reset_BlockCode(ReplyBox);
  81.                         Reset_BlockQuote(ReplyBox);
  82.                     }
  83.                 }
  84.                 PostCounter = PostCounter + 1;
  85.             }
  86.         }
  87.     }
  88. }

  89. AAPosts_Modifier();

复制代码


-------------------
项目GITHUB地址

一键安装! GITEE版本无需翻墙, 就是可能我会忘记同步, 所以版本有落后一点...
一键安装!可能需要翻墙
请先确认浏览器有安装Tampermonkey或者其他userscript引擎.

简单更新了一下, 之前的版本启用之后,“对整个S1的影响, 不可估量”,
所以这次的版本的逻辑就是
1. 建立一个 "发布AA的人" 的id列表
2. 找到他们发的贴子
3. 对他们的帖子内容进行修饰
学习JS已经半天的我给出的代码是这样的, 诸君感觉有喷点不用藏着掖着, 指出来就当帮我进步了.
  1. // ==UserScript==
  2. // @name         AA for S1
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.g
  5. // @description  Modify Stage1 text property for AA
  6. // @author       冰箱研会长
  7. // @match        https://bbs.saraba1st.com/2b/*
  8. // @grant        GM_addStyle
  9. // ==/UserScript==

  10. var AA_author_array = new Array("冰箱研会长e-3M","冰箱研会长");
  11. // 在这里加入发布AA的人的ID

  12. function AAPosts_Modifier(NodeRoot){
  13.     var PostLists = NodeRoot.getElementById("postlist");
  14.     var PostTables = PostLists.getElementsByClassName("plhin");
  15.     for (var i=0;i< PostTables.length;i++){
  16.         var PostTable = PostTables[i];
  17.         if(AA_author_array.includes( PostTable.getElementsByClassName("pls favatar")[0].
  18.            getElementsByClassName("authi")[0].
  19.            getElementsByTagName("a")[0].
  20.            innerText)){
  21.             //PostTable.getElementsByClassName("t_fsz")[0].style.color = "#022c80";
  22.             PostTable.getElementsByClassName("t_fsz")[0].style.fontSize = "14px";
  23.             PostTable.getElementsByClassName("t_fsz")[0].style.lineHeight = "8px";
  24.             PostTable.getElementsByClassName("t_fsz")[0].style.fontFamily = "aahub, MS PGothic";
  25.             PostTable.getElementsByClassName("t_fsz")[0].style.whiteSpace = "pre";
  26.             Reset_BlockCode(PostTable.getElementsByClassName("t_fsz")[0]);
  27.         }
  28.     }
  29. }

  30. //专门用来重置代码块的函数... 这个实现直觉上让我觉得好笨
  31. function Reset_BlockCode(NodeRoot){
  32.     var CodeBlocks = NodeRoot.getElementsByClassName("blockcode");
  33.     for(var i = 0; i < CodeBlocks.length;i++){
  34.         var CodeBlock=CodeBlocks[i];
  35.         //CodeBlock.style.color="#022c80";
  36.         CodeBlock.style.fontSize="12px";
  37.         CodeBlock.style.lineHeight="22px";
  38.         CodeBlock.style.fontFamily="Monaco, Consolas, Lucida Console, Courier New, serif";
  39.         CodeBlock.style.whiteSpace = "normal";
  40.     }
  41. }

  42. AAPosts_Modifier(document)
复制代码



---因为/[page/]标签会刷新掉脚本做的修改所以手动打出来的更新分界线---


本来是不想发这个帖子, 想着日后真的要弄一个AA串的话, 就写在主楼的,
但是我在编辑草稿(测试)的时候点错直接发出来了, 所以将错就错了...

脚本是很简单的, 用GM_addStyle方法把S1的t_fsz的 样式 修改为适合显示AA的样式就完事了.
脚本一共用了两个字体AAHUB和MS PGothic, 后者系统应该会自带.

现在, 没弄明白的是启用脚本之后, 代码块的行距会变得异常的大, CSS我不是了解的很清楚, 不知道有没有巨巨指教一下

代码如下:
  1. // ==UserScript==
  2. // @name         AA for S1
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.e
  5. // @description  Modify Stage1 text property for AA
  6. // @author       冰箱研会长
  7. // @match        https://bbs.saraba1st.com/2b/*
  8. // @grant        GM_addStyle
  9. // ==/UserScript==

  10. GM_addStyle ( `
  11.     .t_fsz {
  12.   font-family: aahub,MS PGothic;
  13.   white-space: pre;
  14.   font-size: 14px;
  15.   line-height: 8px;
  16.     }
  17. `);
复制代码

去TamperMoneky里新建脚本, 复制粘贴之后刷新页面, 应该就可以看到下方正确显示的AA画了.
(PC ONLY)




 i|  | i| /                 _ -ニニ=- _              //                        __
 i|  |  ∨                _-ニニニニニニ- _        , /         |、                ―=ミ 、
 i|  |  |                 j/ニニニニニニニニ- __    _,/ /           _jニ〉           ./        \
 i|  |  |               _-ニニニニニ-=<_¨⌒ ー==‐/ /       __ -ニア           /     ̄ ̄>x、
  :,  i|  |               〈ニニニニニ=-----――へ、_/ /_  -=ニニニニニニア         / /  _/-=ニニニ\
  ′ ,  ∨/            , ヘ_jニニニ‐'"  ___ -=ニア'厂/ /ニニニニニニニニア       _/ / . /ニニ=-   ̄ ̄`
  ∧ ∨ ∨/        / /)=ァ ̄_ -ニニニニニニ=‐'"  ∨./ニニニニニニ=- ----=<_ ̄ ̄  < //-  ̄  -===―'⌒
  /∧ ∨ ∨/       _j _∠斗ニニ=-―――<_ 、   / /¨ -弌ニニア´ __ z―――  __`弌ix、 `く _ -ニ- __¨__<ニニ
        、  ∨/   _厂ア´-ニニニニ- i圦. \ 、\ ( ̄    ' /   _厂  _  ___/  /ア´/⌒)x マ_)hx \_/ニニニニニ
      、\ 弌__,厂 -=ニニニ厂     |   、(\xf示ト、   j// ̄x┐ /⌒ア´   ノ  |/___/⌒)x ( ̄)x  ⌒!~ <ニニニニ
       \  、弌ニニニニア /  i|. j_x=、/  Vソ| iト、  |(__厂  j/ . イ     ∠  ア⌒丁>=- 寸{ }i  ∧    `寸ニニ
 __  -=ニ)hx 寸ニニニニ7j| ./ i|  圦 v)       | l|个  |  \./ / /    /  ∠=-  厂ニ/ ,i  V ∧  |ニ 〈\  寸ニ
  ` -ニニニニニ)hx 寸-¨下弌i|/  八    、     乂V   、  / / ./    / ∠ --=<ニ/_∠i|   〈ニ|  .|ニ |ニニ⌒ニニ
    `¨¨¨¨¨¨弌ニニ)x 寸∧ニニ寸ニ‐| 厂个  _`_/ __j/ 厂- _ | i| \/     j'" __       ̄\|  i|ニ|  i|ニ |ニニニニニ
           ^寸ニ)x 寸ニニニニ{ 〈ニア  厂⌒j厂/ .イニニニ! {  |      く\/ニニ7⌒>x  /  八i   |ニ  マニニニニ
       x/ ̄ ̄  ⌒)x`弌-=ニニ {〈  {  _/Z  / i|ニ( ̄`寸x `く|      ( -ニニニニ|/ /∨   /ニ|  !'   ノニニニニ
___)\_ ( 〈      / /)hx `弌i厂) Ⅵ j厂 ____/} 厂}\  `⌒>圦        ___`寸ニ| j=-   イ ∨   _ イニニニニニ
ニニニ-_ `弌L_  / ̄_ イ厂 i|)hx `弌x\ ̄     /]/ニ〈  {\ [/ /ノ `、      弌=-  __(ニニニ|    ,ニニニニニニ厂
寸ニニニニ-_ 寸/  /ア´ /   |  { ≧=-  _`  __  [_/.ア^弌_ \{/ {ノ   \       ー― (_厂〉 |     /ニニニニ-  j/
 マニニニニ} 乂 //i|  {   .〉i圦   i|   ≧=― / |/   、 ⌒7  〈    /〉 )hx__            イニノ   ⌒!ニ=-    /
.  マニニ[__] |i/ 乂!   、  八_jk   |      _/ /    / i|  ノ__/〈 /ニニニ=- __ 彡  /    __ノ/⌒>    /
  .}ニニニニ| i〈 ( ゝ ト、 \[ ̄,ノ、\ _____厂_∧  、 /  /| 〈⌒ア  寸ニニニ| マニニニ| jN/     |_ア^>'"   _ <
  .}ニニニニ| |个x弌=--=彡厂ア二\ \―― ア //ニi\___j{  i||  /⌒ix  `弌ニニ| マニ=- /       L=-    <  ̄ ̄
  ./ニニニニi| |ニニ{≧z--<ニ/     > `ー//i |ニニニ八 i|| 寸-x 寸=-  ___.  -=彡 >'" __/ ir‐=<    \
 /ニニニ厂 ̄ ]寸_乂_厂ア/     /厂ア/| .人寸ニニ{  \   、 寸ニx `ー=====―'"´____  ア⌒i|  |     \     、
./ニニニニニ≧=-----=≦ニ′     |∧[/} j 寸 7^弌乂_  \  \`弌ニ=------=≦ニニニjア     |ト、    \   `、
ニニニニニニニニニニニニ{       |    / {   ̄`寸ix ` -\  \  弌x ` <  /  _  -='"       八 \    `、  j!
`寸ニニニニニニニニニ厂/    i|   |   .∧ {    ⌒ -ニ=- 寸x、`   ⌒ ̄  ̄ ̄ ̄__∠/       イ    `、    V∧|
\ 寸ニニニニニニニニ/ i|     i|__  -=-   {\       `弌\_>ニ=――――   __彡'     _ -ニ         ∨|
ニニ)x  -==ニニニニニ/____jL -==-⌒  、    `、  \  ̄ ̄ ̄ アZ-=≦ニニニア´ /ニア´    ∠=-ニニ   、 }     Ⅵ
ニニニ=―    __  ィ⌒厂      ,     、  `、   `¨¨ア¨¨⌒ `寸ニニア´ /ニア´    _. 彡ニニニニ〉  ∨ ∧     jノ
≧=――――=⇒'" /   |         ′     丶、 `、   /   、    i|ニニア ∠=‐'"  _ -ニニニニニニニ/   /__  ∧  |
ニニニニニア´   ./  |       ',     /{  `、 /|    `、  /-ア '"´   _-ニニニニニニニニニア}    「⌒∨|  |
`マニニニニi{    ′           、  /  乂  ∨|     `弌/   _ -ニニニニニニニニニニア }    |   j__厂
. }ニニニニ 、  ,    iL___       `弌{      ̄  八    厂   _ -ニニニニニニニニニニニイ   j/⌒´
  マニニニニ\ {     「 ̄\        ___j         /    /  _ -ニニニニニニニニニニ> '| ノ
   寸ニニニニ/` {    __〉   丶、___厂           /    /_ -ニニニニニニニニニニ‐ .ノ  ∧
    `  ―=/  ー< ̄∧     __/   __     ,___//ニニ‐   ̄ ̄   ー‐   ∠_/
.        〈____厂 ̄  、  〈::::/   /::::\  , -====j /=-
                /\ ∧:'   /::::::::::::::::>'

             ,.-、                  ,,-‐、
            |  :`ヽ、    ,..--..,, ,,.--‐'"  |
                |    ゞ''""        ヾ  /
               !  ,.'                 |
           ‐‐┼-               ;
           ‐┼-   ●       ●  ー┼-
            .‐十            ‐┼-
              - ヽ、  (_人_)      ゙メ、
         _______  ` 、  ヽ_ノ      /
      /       \/ ヽ       /、
     / ,.. -‐‐- 、   \           ヽ
     }∠,..艦__これ_ \    \          `、
    /.:.:.:./ \|\:.:.:.\\    ,       / ./|
   .(二)i:/n    n\i:.:.:.:.i‘,  }     ./ ./ .|
.    i:人| U    U  l:.:.:Λ:‘,/     ./ ./  |
  <人(         u ,':.:./´ヽ:.:´      ./ ./  |
   /:.个: . __▽__ ,./:∠:.ヽ ヽ    ./ ./  .|
    {:.:.:‘,  ....| |  |    ヽ  ヽ _ノ ./   .|
   人:.:.:.:     .| |   |  ノi:.:.ヽ _ _ ノ     |
    `¨¨´.  .| |   |  `、_,.ノ         |
          | |  |                   |
          | |   |              |
          | |   |                |
         _| |_   ',            |
        く´ヽ| |/`ゝ  、              /
       | |`-∞-´{`l  {   ┬┬┬┬  ,′
       ヽ!__   ___{O  |   .| .|| |  ,
       ノ | | ̄| | |ヽ  |   | .|| .|  .|
       \|_|_|_|_|_/   }   | || .|  |
        |_| |_|    ノ  |  ヽ_`|  ヽ──、
        」.| 」.|    ` ー┘   `└一 ' ̄ ̄´


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1战斗力 +1 收起 理由
酥蕤 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
发表于 2021-1-2 10:18 | 显示全部楼层
回复

使用道具 举报

发表于 2021-1-2 11:14 来自手机 | 显示全部楼层
手机端看就是一团乱码
回复

使用道具 举报

     
发表于 2021-1-2 11:18 | 显示全部楼层
S1间距还是太大,AA看着跟糊了一样
回复

使用道具 举报

     
 楼主| 发表于 2021-1-2 11:23 | 显示全部楼层
恶魔娘阿洛 发表于 2021-1-2 11:18
S1间距还是太大,AA看着跟糊了一样

是的 其实字距还好说 行距真的大了一截 角色脖子都会变长....
回复

使用道具 举报

     
发表于 2021-1-2 11:36 来自手机 | 显示全部楼层
实话说还是很反人类啊,都2021年了不能整点正常的图吗
回复

使用道具 举报

     
发表于 2021-1-2 11:38 来自手机 | 显示全部楼层
楼主试过开着脚本浏览其它正常帖子吗
平时还是要禁用,看AA时再开

评分

参与人数 1战斗力 +1 收起 理由
冰箱研会长e-3M + 1 更新了 不影响发布者以外的人的帖子.

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2021-1-2 12:52 | 显示全部楼层
酥蕤 发表于 2021-1-2 11:38
楼主试过开着脚本浏览其它正常帖子吗
平时还是要禁用,看AA时再开

平时还是要禁用的, 特定帖子开一下..
我是JS小白, 等我升升级说不定就能写出来更人性化的脚本了.
回复

使用道具 举报

     
发表于 2021-1-2 15:00 | 显示全部楼层
冰箱研会长e-3M 发表于 2021-1-2 11:23
是的 其实字距还好说 行距真的大了一截 角色脖子都会变长....

我没理解,行距大了的话你降低line-height不就行了吗?
回复

使用道具 举报

     
 楼主| 发表于 2021-1-2 15:03 | 显示全部楼层
cxf5102 发表于 2021-1-2 15:00
我没理解,行距大了的话你降低line-height不就行了吗?

是啊... 我做的就是
1. 改变字体
2. 调整到合适的大小
3. 调整行距

1 2 可以在discuz内部完成
3 需要脚本
但我想直接用脚本一起实现了... 这样咋说... 方便点吧
顺便学学JS DOM?
回复

使用道具 举报

     
发表于 2021-1-2 15:05 | 显示全部楼层
赶2ch超5ch指日可待啊

评分

参与人数 1战斗力 +1 收起 理由
冰箱研会长e-3M + 1 “指日可待! 指日可待!”

查看全部评分

回复

使用道具 举报

     
发表于 2021-1-2 15:27 | 显示全部楼层
呃,我直接理解错你的意思了。如果是你想解决代码块行距太大的问题的话,你加入下面的样式即可。
.pl .blockcode ol li {
    white-space: inherit;
}
原因在于你加入的样式使得代码块中行末的<br>多生成了一行。只要你让white-space: pre不影响到代码块的内容就可以了。

评分

参与人数 1战斗力 +1 收起 理由
冰箱研会长e-3M + 1

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2021-1-2 15:42 | 显示全部楼层
cxf5102 发表于 2021-1-2 15:27
呃,我直接理解错你的意思了。如果是你想解决代码块行距太大的问题的话,你加入下面的样式即可。
.pl .bloc ...

感谢> <
原来是white-space的问题, 这下解决了
回复

使用道具 举报

     
发表于 2021-1-2 19:22 | 显示全部楼层
s1未来的野田大神,慢慢升起

评分

参与人数 1战斗力 +1 收起 理由
冰箱研会长e-3M + 1 野田, 永远的神

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-7-17 16:44 , Processed in 0.059899 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表