├── .gitignore
├── README.md
├── dist
├── dmm-plus-sc.user.js
├── dmm-plus-sc.user.js.map
├── esunbank.user.js
├── esunbank.user.js.map
├── fuck-u-fb-share.user.js
├── fuck-u-fb-share.user.js.map
├── gamer-auto-signin.user.js
├── gamer-auto-signin.user.js.map
├── gitee-plus.user.js
├── gitee-plus.user.js.map
├── masiro-moe.user.js
├── masiro-moe.user.js.map
├── mastodon-plus.user.js
├── mastodon-plus.user.js.map
├── novel-plus-sc.user.js
├── novel-plus-sc.user.js.map
├── pan-baidu-block-or-expire.user.js
├── pan-baidu-block-or-expire.user.js.map
├── pan-baidu-download.user.js
├── pan-baidu-download.user.js.map
├── shimo-im-discuz.user.js
├── shimo-im-discuz.user.js.map
├── syosetu-list-number.user.js
├── syosetu-list-number.user.js.map
├── test-test-sc.user.js.map
├── tieba-harmony.user.js
├── tieba-harmony.user.js.map
├── ux-tweak-sc.user.js
├── ux-tweak-sc.user.js.map
├── youtube-plus-sc.user.js
└── youtube-plus-sc.user.js.map
├── gulpfile.js
├── lib
├── color
│ └── tag.ts
├── comic
│ ├── font.ts
│ ├── novel.ts
│ └── style.ts
├── core
│ ├── demo.ts
│ ├── index.ts
│ ├── metadata.ts
│ ├── plus.ts
│ └── tpl
│ │ ├── .gitignore
│ │ ├── demo.ts
│ │ ├── index.user.ts
│ │ └── metadata.ts
├── dom
│ ├── disable_nocontextmenu.ts
│ ├── filter
│ │ └── link.js
│ ├── iframe.ts
│ └── img
│ │ └── size.ts
├── event
│ ├── dom.js
│ └── done.ts
├── func
│ ├── .gitignore
│ ├── array
│ │ └── unique.ts
│ ├── copy.ts
│ ├── debounce.js
│ ├── html.ts
│ ├── open.ts
│ └── parse_url.ts
├── greasemonkey
│ ├── gm
│ │ ├── api.ts
│ │ ├── menu.ts
│ │ └── xhr.ts
│ ├── index.ts
│ ├── match.ts
│ ├── metadata.ts
│ ├── uf.ts
│ └── web
│ │ └── xhr.ts
├── jquery
│ ├── event.js
│ ├── event
│ │ ├── capture.ts
│ │ ├── hotkey.js
│ │ └── key.js
│ ├── global.ts
│ ├── history.state.js
│ ├── jquery.color.js
│ ├── onscreen.js
│ ├── push.js
│ ├── scrollTo.js
│ └── scrollTo.ts
├── promise
│ ├── index.ts
│ └── wait.js
└── site
│ ├── .gitignore
│ ├── baidu
│ ├── pan
│ │ └── index.ts
│ └── tieba
│ │ └── index.ts
│ ├── discuz
│ └── index.ts
│ ├── gamer
│ └── signin.ts
│ ├── index.ts
│ ├── iqing
│ └── signin.ts
│ ├── pixiv
│ └── index.ts
│ └── youtube
│ └── index.ts
├── package.json
├── readme
├── dmhy001.jpg
├── dmhy002.jpg
├── firefox57
│ ├── 2018-03-01-12-07-32-3.jpg
│ └── greasemonkey.md
├── fuck-u-fb-share.md
├── fuck-u-fb-share.png
├── gitee-plus.md
├── images
│ ├── 2017-11-24-16-11-30-2.jpg
│ ├── 2018-03-08-22-12-26-2.jpg
│ ├── 2018-03-18-05-09-21-1.jpg
│ ├── 2018-03-18-05-11-14-2.jpg
│ ├── ShareX_2019-03-17-03-17-28-.png
│ ├── ShareX_2019-03-17-03-25-00-.png
│ ├── gitee-plus
│ │ ├── 001.png
│ │ ├── 002.png
│ │ ├── 003.png
│ │ └── 2018-08-17-22-30-34-24.png
│ ├── image.png
│ ├── image_1.png
│ ├── image_2.png
│ ├── image_3.png
│ ├── image_4.png
│ ├── image_5.png
│ ├── novel-plus-sc
│ │ ├── 2017-12-06-16-31-05-1.png
│ │ ├── 2017-12-06-17-24-01-4.png
│ │ ├── 2017-12-07-08-24-33-5.jpg
│ │ └── 2017-12-07-15-04-47-6.png
│ └── syosetu-list-number
│ │ ├── 2018-07-14-17-58-13-4.png
│ │ ├── 2018-07-15-18-35-07-3.png
│ │ └── 2018-08-13-00-38-39-17.png
├── masiro-moe.md
├── novel-plus-sc.md
├── pan-baidu-block-or-expire.md
├── shimo-im-discuz.md
├── syosetu-list-number.jpg
├── syosetu-list-number.md
├── tieba-harmony.md
├── userscript.md
└── ux-tweak-sc.md
├── script
└── create.ts
├── src
├── dmm-plus-sc
│ ├── _fake.ts
│ ├── dmm
│ │ └── games.ts
│ ├── games
│ │ ├── canvas.ts
│ │ ├── gadgets.ts
│ │ └── pc-play.ts
│ ├── global
│ │ ├── iframe.ts
│ │ ├── script.ts
│ │ └── webgl_dmm.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── esunbank
│ ├── esunbank
│ │ └── ebank.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── fuck-u-fb-share
│ ├── facebook
│ │ └── 2017.11.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── gamer-auto-signin
│ ├── .gitignore
│ ├── gamer
│ │ └── ajax.ts
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── novel
│ │ └── sfacg.ts
├── gitee-plus
│ ├── .gitignore
│ ├── base
│ │ └── gitee-plus.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── masiro-moe
│ ├── .gitignore
│ ├── base
│ │ └── masiro-moe.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── mastodon-plus
│ ├── .gitignore
│ ├── base
│ │ └── mastodon-plus.ts
│ ├── global
│ │ └── profile.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── novel-plus-sc
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── site
│ │ ├── baidu
│ │ └── tieba.ts
│ │ ├── dmzj.ts
│ │ ├── gamer
│ │ └── home.ts
│ │ ├── lightnovel
│ │ └── discuz.ts
│ │ ├── sfacg
│ │ └── book.ts
│ │ └── syosetu.ts
├── pan-baidu-block-or-expire
│ ├── .gitignore
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── site
│ │ └── pan.baidu.ts
├── pan-baidu-download
│ ├── .gitignore
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── site
│ │ └── pan.baidu.ts
├── shimo-im-discuz
│ ├── .gitignore
│ ├── base
│ │ └── shimo-im-discuz.ts
│ ├── index.js
│ ├── index.user.ts
│ └── lib
│ │ └── metadata.ts
├── syosetu-list-number
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── site
│ │ ├── .gitignore
│ │ ├── kakuyomu.jp.ts
│ │ ├── mitemin.ts
│ │ └── syosetu.ts
├── tieba-harmony
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ │ └── metadata.ts
│ └── tieba
│ │ └── tieba.ts
├── ux-tweak-sc.adblock
│ └── facebook.txt
├── ux-tweak-sc
│ ├── .gitignore
│ ├── _fake.js
│ ├── acg
│ │ ├── 2dfan.js
│ │ ├── 3dmgame.js
│ │ ├── baidu
│ │ │ ├── safecheck.ts
│ │ │ └── tieba.ts
│ │ ├── blog.reimu.net.js
│ │ ├── dlsite.js
│ │ ├── dmm.js
│ │ ├── gamer.com.tw.js
│ │ ├── gamme.js
│ │ ├── getchu.js
│ │ ├── guildwars2
│ │ │ ├── forum.2017.js
│ │ │ ├── forum.js
│ │ │ └── wiki.js
│ │ ├── gw2bltc.js
│ │ ├── movie
│ │ │ ├── u2mtv.ts
│ │ │ └── yahoo.ts
│ │ ├── qoo-app.js
│ │ ├── qtfy.eu.js
│ │ ├── reddit.js
│ │ ├── taptap.ts
│ │ └── vsgames.js
│ ├── adult
│ │ └── up01.js
│ ├── anti-adblock
│ │ └── epinv.js
│ ├── art
│ │ ├── danbooru.donmai.us.ts
│ │ ├── deviantart.js
│ │ ├── pixiv.ts
│ │ └── pixivision.ts
│ ├── bbs
│ │ └── ptt.js
│ ├── blog
│ │ ├── blog.xuite.js
│ │ ├── dulfy.js
│ │ ├── jianshu.js
│ │ ├── juejin.im.js
│ │ ├── oneapm.js
│ │ └── steachs.js
│ ├── code
│ │ ├── gitee.ts
│ │ ├── github.ts
│ │ ├── greasyfork.js
│ │ ├── npmjs.js
│ │ ├── segmentfault.ts
│ │ ├── sourceforge.js
│ │ └── stackoverflow.js
│ ├── comic
│ │ ├── 999comic.js
│ │ ├── alphapolis.co.jp.js
│ │ ├── backup
│ │ │ └── lhscan.ts
│ │ ├── book.dmm.co.jp.ts
│ │ ├── comic-walker.js
│ │ ├── comico.js
│ │ ├── dm5.js
│ │ ├── dmzj.js
│ │ ├── exhentai.js
│ │ ├── ikanman.js
│ │ ├── lhscans.ts
│ │ ├── manben.js
│ │ ├── manhuadui.ts
│ │ ├── manhuaren.ts
│ │ ├── nhentai.js
│ │ ├── rawdevart.ts
│ │ ├── wnacg.js
│ │ └── yoedge.ts
│ ├── content
│ │ └── farm
│ │ │ └── fun01.cc.js
│ ├── dict
│ │ ├── .gitignore
│ │ └── edu
│ │ │ ├── cwn.ling.sinica.ts
│ │ │ └── dict.revised.moe.ts
│ ├── global
│ │ ├── discuz.js
│ │ ├── mediawiki.js
│ │ ├── pagination.js
│ │ ├── pagination
│ │ │ ├── page.js
│ │ │ ├── pagination.active.js
│ │ │ └── srp_pagination.js
│ │ ├── social.js
│ │ └── video.js
│ ├── google
│ │ ├── drive.js
│ │ └── search.js
│ ├── index.js
│ ├── index.user.js
│ ├── lib
│ │ ├── demo.js
│ │ └── metadata.js
│ ├── novel
│ │ ├── .gitignore
│ │ ├── esjzone.ts
│ │ ├── iqing.ts
│ │ ├── lightnovel.cn.ts
│ │ ├── masiro.moe.ts
│ │ ├── syosetu.ts
│ │ └── wenku8.ts
│ ├── other
│ │ └── jetbrains
│ │ │ └── jetbrains.ts
│ ├── p2p
│ │ └── wetransfer.ts
│ ├── shop
│ │ ├── pchome.js
│ │ ├── pchome
│ │ │ └── ecvip.ts
│ │ ├── post
│ │ │ ├── kerrytj.ts
│ │ │ └── post
│ │ │ │ └── gov
│ │ │ │ └── tw
│ │ │ │ └── pstmail.js
│ │ └── yahoo
│ │ │ ├── buy.js
│ │ │ └── mall.js
│ ├── social
│ │ ├── facebook.js
│ │ └── weibo.js
│ ├── torrent
│ │ ├── dmhy.js
│ │ ├── jandown.js
│ │ └── nyaa.js
│ └── wiki
│ │ ├── moegirl.ts
│ │ └── wikipedia.js
└── youtube-plus-sc
│ ├── _fake.ts
│ ├── global
│ └── script.ts
│ ├── index.js
│ ├── index.user.ts
│ ├── lib
│ └── metadata.ts
│ └── youtube
│ ├── 2016
│ ├── my_video.ts
│ ├── upload.ts
│ └── watch.ts
│ └── 2016.ts
├── test
├── _local-dev.ts
└── match.test.d.ts
├── tsconfig.json
└── webpack.config.js
/README.md:
--------------------------------------------------------------------------------
1 | # gm-user-scripts
2 |
3 | > 各種網站 UX 優化 與 搭配某些插件/行為時的簡化動作
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | * [ux-tweak-sc](readme/ux-tweak-sc.md)
12 |
13 | * [novel-plus-sc](readme/novel-plus-sc.md)
14 |
15 | * [fuck-u-fb-share](readme/fuck-u-fb-share.md)
16 |
17 | * [其他](dist/)
18 |
19 |
--------------------------------------------------------------------------------
/lib/color/tag.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/14/014.
3 | */
4 |
5 | export const tag = [
6 | '#906',
7 | '#66F',
8 | '#800',
9 | '#C60',
10 | '#EAEA00',
11 | '#006',
12 | '#360',
13 | ];
14 |
15 | export default exports;
16 |
--------------------------------------------------------------------------------
/lib/comic/font.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/5/005.
3 | */
4 |
5 | export const font = {
6 |
7 | NotoSansSC: {
8 | name: 'Noto Sans SC',
9 | webfont: '//fonts.googleapis.com/earlyaccess/notosanssc.css',
10 | },
11 |
12 | NotoSansTC: {
13 | name: 'Noto Sans TC',
14 | webfont: '//fonts.googleapis.com/earlyaccess/notosanstc.css',
15 | },
16 |
17 | NotoSansJP: {
18 | name: 'Noto Sans JP',
19 | webfont: '//fonts.googleapis.com/earlyaccess/notosansjp.css',
20 | },
21 |
22 | cwtexyen: {
23 | name: 'cwtexyen',
24 | webfont: '//fonts.googleapis.com/earlyaccess/cwtexyen.css',
25 | },
26 |
27 | };
28 |
29 | export const webfont = {
30 | NotoSansCJKSC: ['Noto Sans CJK SC', font.NotoSansSC, font.NotoSansTC, font.NotoSansJP],
31 | NotoSansCJKTC: ['Noto Sans CJK TC', font.NotoSansTC, font.NotoSansSC, font.NotoSansJP],
32 | NotoSansCJKJP: ['Noto Sans CJK JP', font.NotoSansJP, font.NotoSansSC, font.NotoSansTC],
33 | };
34 |
35 | export function getFontName(name): string
36 | {
37 | if (webfont[name])
38 | {
39 | return webfont[name].reduce(function (a, b)
40 | {
41 | a.push(typeof b == 'string' ? b : b.name);
42 |
43 | return a;
44 | }, []).join('');
45 | }
46 |
47 | return _(name);
48 |
49 | function _(name)
50 | {
51 | return font[name].name;
52 | }
53 | }
54 |
55 | export default font;
56 |
--------------------------------------------------------------------------------
/lib/comic/novel.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/5/005.
3 | */
4 |
5 | import font from './font';
6 |
7 | let o = {
8 |
9 | body_light_on: {
10 | 'background-color': '#e6d7bd',
11 | color: '#131d24',
12 | },
13 |
14 | body_light_off: {
15 | 'background-color': '#4f535b',
16 | color: '#rgb(221, 221, 221)',
17 | },
18 |
19 | _setting: {
20 | line: 31,
21 | char: 23,
22 | lh: 1.25,
23 |
24 | fontSize: 14,
25 | fontFamily: `Consolas, ${font.NotoSansSC.name}, Microsoft Yahei UI, sans-serif`,
26 |
27 | lineHeight(fontSize = o._setting.fontSize, ln = o._setting.lh)
28 | {
29 | return Math.ceil(fontSize * ln);
30 | },
31 | },
32 |
33 | font_style: {
34 | fontSize: 14,
35 | fontFamily: `Consolas, ${font.NotoSansSC.name}, ${font.NotoSansTC.name}, Microsoft Yahei UI, sans-serif`,
36 | 'text-shadow': '0 0.5px 0 rgba(228, 228, 228, 0.8), 0 0 1px rgba(0, 0, 0, 0.75)',
37 | },
38 |
39 | };
40 |
41 | (o as any).default = o;
42 |
43 | export = o;
44 |
--------------------------------------------------------------------------------
/lib/core/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/23/023.
3 | */
4 |
5 | export interface IMetadata
6 | {
7 | name?: string;
8 | name_en?: string;
9 |
10 | desc?: string;
11 | desc_en?: string;
12 |
13 | icon?: string;
14 |
15 | grant?: string[];
16 |
17 | metadata?: string;
18 | }
19 |
20 | export default exports;
21 |
--------------------------------------------------------------------------------
/lib/core/plus.ts:
--------------------------------------------------------------------------------
1 | import { IExports, requireScript } from './index';
2 | import * as UF from '../greasemonkey/gm/menu';
3 | import { hasGrant } from '../greasemonkey/metadata';
4 |
5 | export function registerGlobalMenu(uxid: string, exports: IExports, $jq?: JQueryStatic)
6 | {
7 | let index = requireScript(uxid, 'index');
8 |
9 | if (hasGrant(index.metadata.grant, 'registerMenuCommand'))
10 | {
11 | UF.registerMenuCommand({
12 | id: uxid,
13 | key: 'debug jquery',
14 | }, async (options) =>
15 | {
16 | try
17 | {
18 | _print_jquery('null', null);
19 | _print_jquery('global', global);
20 | _print_jquery('window', window);
21 | _print_jquery('window.self', window.self);
22 | _print_jquery('unsafeWindow', unsafeWindow);
23 | }
24 | catch (e)
25 | {
26 | console.error(e);
27 | }
28 |
29 | try
30 | {
31 | // @ts-ignore
32 | if (typeof exportFunction != 'undefined')
33 | {
34 | // @ts-ignore
35 | console.info('exportFunction', exportFunction);
36 | }
37 | }
38 | catch (e)
39 | {
40 | console.error(e);
41 | }
42 |
43 | try
44 | {
45 | let _jQuery = await import('../jquery/global');
46 |
47 | _print_jquery('jquery/global', _jQuery);
48 | }
49 | catch (e)
50 | {
51 | console.error(e);
52 | }
53 | });
54 | }
55 | else
56 | {
57 | console.info(uxid, `registerMenuCommand = false`);
58 | }
59 | }
60 |
61 | function _print_jquery(label, where)
62 | {
63 | console[('groupCollapsed' in console) ? 'groupCollapsed' : 'group'](label);
64 |
65 | try
66 | {
67 | console.info(label, where);
68 |
69 | if (where === null)
70 | {
71 | console.info(`$`, $, $ && $.fn && $.fn.jquery);
72 | console.info(`jQuery`, jQuery, jQuery && jQuery.fn && jQuery.fn.jquery);
73 | }
74 | else
75 | {
76 | console.info(`${label}.$`, where.$, where.$ && where.$.fn && where.$.fn.jquery);
77 | console.info(`${label}.jQuery`, where.jQuery, where.jQuery && where.jQuery.fn && where.jQuery.fn.jquery);
78 | }
79 | }
80 | catch (e)
81 | {
82 | console.error(`${label}`, e.toString());
83 | }
84 |
85 | // @ts-ignore
86 | console.groupEnd(label);
87 | }
88 |
89 | export default exports as typeof import('./plus');
90 |
--------------------------------------------------------------------------------
/lib/core/tpl/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/lib/core/tpl/demo.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | //'http*://www.gamer.com.tw/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | //
48 | ])
49 | .prop('target', '_blank')
50 | ;
51 | },
52 |
53 | adblock(_url_obj = global._url_obj)
54 | {
55 | //
56 | },
57 |
58 | clearly(_url_obj = global._url_obj, _dom_list = null)
59 | {
60 | let _dom = $(_dom_list);
61 |
62 | _dom = _dom
63 | .add([
64 | //
65 | ].join())
66 | ;
67 |
68 | return _dom;
69 | },
70 |
71 | };
72 |
73 | export = o as IDemo;
74 |
--------------------------------------------------------------------------------
/lib/core/tpl/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 | });
20 |
--------------------------------------------------------------------------------
/lib/core/tpl/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '';
6 | export const desc_en = desc;
7 |
8 | export const icon = '';
9 |
10 | export const grant = [
11 | //
12 | ];
13 |
14 | /**
15 | * <%= token %>
16 | *
17 | * @type {string}
18 | */
19 | export const metadata = `// ==UserScript==
20 | // @name <%= index.id %>
21 | // @name:en <%= index.name_en %>
22 | // @name:ja <%= index.name_ja %>
23 | // @name:zh <%= index.name %>
24 | // @namespace <%= index.namespace %>
25 | // @author <%= index.author %>
26 | //
27 | // @description <%= index.desc %>
28 | // @description:en <%= index.desc_en %>
29 | // @description:ja <%= index.desc_ja %>
30 | // @description:zh <%= index.desc %>
31 | //
32 | // @version <%= pkg.version %>
33 | //
34 | // @grant <%= index.grant %>
35 | // g_r_a_n_tnone
36 | //
37 | // @icon <%= index.icon %>
38 | //
39 | // noframes
40 | // @encoding utf-8
41 | //
42 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
43 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
44 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
45 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
46 | //
47 | // @include <%= index.include %>
48 | //
49 | // @match <%= index.match %>
50 | //
51 | // @exclude <%= index.exclude %>
52 | //
53 | // ==/UserScript==
54 | `;
55 |
56 | export default metadata;
57 |
--------------------------------------------------------------------------------
/lib/dom/filter/link.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/13/013.
3 | */
4 |
5 | module.exports = function _uf_dom_filter_link(_dom, _content, mode)
6 | {
7 | if (Array.isArray(_dom))
8 | {
9 | let _dom_new = $();
10 |
11 | $.each(_dom, function (index, value)
12 | {
13 | _dom_new = _dom_new.add(value)
14 | });
15 |
16 | _dom = _dom_new;
17 | }
18 |
19 | if (_content)
20 | {
21 | _dom = $(_dom, _content);
22 | }
23 | else
24 | {
25 | _dom = $(_dom);
26 | }
27 |
28 | _dom = _dom.filter('a[href]').not('[href^="javascript:"], [href^="#"], [href=""]');
29 |
30 | return _dom;
31 | };
32 |
--------------------------------------------------------------------------------
/lib/dom/iframe.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | export function transparent(iframe)
6 | {
7 | iframe = $(iframe);
8 |
9 | iframe
10 | .attr('frameBorder', 0)
11 | .attr('allowTransparency', true)
12 | .css({
13 | backgroundColor: 'transparent',
14 | border: '0 none transparent',
15 | outline: '0 none transparent',
16 | })
17 | ;
18 |
19 | return iframe;
20 | }
21 |
22 | export default transparent;
23 |
--------------------------------------------------------------------------------
/lib/event/dom.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/14/014.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports.DOMNodeInserted = 'DOMNodeInserted';
8 | module.exports.page = 'keydown.page';
9 |
--------------------------------------------------------------------------------
/lib/event/done.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/13/013.
3 | */
4 |
5 | interface Iexports
6 | {
7 | _uf_done(event: JQueryEventObject|Event, mode?: boolean);
8 | _uf_done2(event: JQueryEventObject|Event, mode?: boolean);
9 |
10 | default(event: JQueryEventObject|Event, mode?: boolean);
11 | }
12 |
13 | function _uf_done(event: JQueryEventObject|Event, mode?: boolean)
14 | {
15 | event.stopPropagation();
16 | if (!mode) event.preventDefault();
17 | }
18 |
19 | function _uf_done2(event: JQueryEventObject|Event, mode?: boolean)
20 | {
21 | //event.stopPropagation();
22 | event.stopImmediatePropagation();
23 |
24 | if (!mode) event.preventDefault();
25 | }
26 |
27 | Object.assign(_uf_done, {
28 | _uf_done,
29 | _uf_done2,
30 | default: _uf_done,
31 | }) as Iexports;
32 |
33 | export = _uf_done;
34 |
--------------------------------------------------------------------------------
/lib/func/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 | *.d.ts
4 |
--------------------------------------------------------------------------------
/lib/func/array/unique.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | export function array_unique(array: any[])
6 | {
7 | return array.filter(function (el, index, arr)
8 | {
9 | return index == arr.indexOf(el);
10 | });
11 | }
12 |
13 | export default array_unique;
14 |
--------------------------------------------------------------------------------
/lib/func/copy.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/7/9/009.
3 | */
4 |
5 | export function copyonclick(id: string)
6 | {
7 | return [
8 | `event.preventDefault()`,
9 | `var copyArea = document.getElementById('${id}')`,
10 | `try{copyArea.select();}catch(e){console.error(e)}`,
11 | `try{window.getSelection().removeAllRanges();}catch(e){}`,
12 | `try{var range = document.createRange();range.selectNode(copyArea);window.getSelection().addRange(range)}catch(e){console.error(e)}`,
13 | `try{document.execCommand('Copy')}catch(e){console.error(e)}`,
14 | `return false`
15 | ].join(';')
16 | }
17 |
18 | export function copyElem(copyArea: HTMLElement)
19 | {
20 | try
21 | {
22 | window.getSelection().removeAllRanges();
23 | }
24 | catch (e)
25 | {}
26 | try
27 | {
28 | // @ts-ignore
29 | copyArea.select();
30 | }
31 | catch (e)
32 | {
33 | console.error(e)
34 | }
35 | try
36 | {
37 | let range = document.createRange();
38 | range.selectNode(copyArea);
39 | window.getSelection().addRange(range)
40 | }
41 | catch (e)
42 | {
43 | console.error(e)
44 | }
45 |
46 | try
47 | {
48 | document.execCommand('Copy')
49 | }
50 | catch (e)
51 | {
52 | console.error(e)
53 | }
54 | }
55 |
56 | export default exports as typeof import('./copy');
57 |
--------------------------------------------------------------------------------
/lib/func/debounce.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/15/015.
3 | */
4 |
5 | module.exports = Function.prototype.debounce = function (threshold)
6 | {
7 | let callback = this;
8 | let timeout;
9 | return function ()
10 | {
11 | let context = this, params = arguments;
12 | clearTimeout(timeout);
13 | timeout = setTimeout(function ()
14 | {
15 | callback.apply(context, params);
16 | }, threshold);
17 | };
18 | };
19 |
--------------------------------------------------------------------------------
/lib/func/html.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/5/29/029.
3 | */
4 |
5 | import { minify, Options as IMinifyOptions } from 'html-minifier';
6 |
7 | export function minifyHTML(html, options: IMinifyOptions = {}, logError: boolean | number = true): string
8 | {
9 | let err;
10 |
11 | options = Object.assign({
12 | collapseWhitespace: true,
13 | preserveLineBreaks: true,
14 | conservativeCollapse: true,
15 | caseSensitive: true,
16 | }, options);
17 |
18 | try
19 | {
20 | let ret = minify(html, options);
21 |
22 | return ret;
23 | }
24 | catch (e)
25 | {
26 | err = e;
27 |
28 | if (logError)
29 | {
30 | if (logError < 0)
31 | {
32 | console.error('[minifyHTML]', err.toString());
33 | }
34 | else
35 | {
36 | console.error('[minifyHTML]', err.toString().split(/[\r\n]/)[0]);
37 | }
38 | }
39 | }
40 |
41 | return html;
42 | }
43 |
44 | export default minifyHTML
45 |
--------------------------------------------------------------------------------
/lib/func/open.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/10/12/012.
3 | */
4 |
5 | export function open(url: string, target?: string, attr?: string, ...argv)
6 | {
7 | return window.open(url, target, attr, ...argv);
8 | }
9 |
10 | export function openInBackground(url: string, target?: string, attr?: string, ...argv)
11 | {
12 | let opener = window;
13 | let win = open(url, target, attr, ...argv);
14 |
15 | setTimeout(function ()
16 | {
17 | try
18 | {
19 | opener.focus()
20 | }
21 | catch (e)
22 | {}
23 | }, 200);
24 |
25 | return win;
26 | }
27 |
28 | open.open = open;
29 | open.openInBackground = openInBackground;
30 | open.default = open;
31 |
32 | export default open
33 |
--------------------------------------------------------------------------------
/lib/greasemonkey/gm/api.ts:
--------------------------------------------------------------------------------
1 | import api = require('greasemonkey/lib/api')
2 | export = api
3 |
--------------------------------------------------------------------------------
/lib/greasemonkey/gm/menu.ts:
--------------------------------------------------------------------------------
1 | import menu = require('greasemonkey/lib/menu')
2 | export = menu
3 |
--------------------------------------------------------------------------------
/lib/greasemonkey/gm/xhr.ts:
--------------------------------------------------------------------------------
1 | import xhr = require('greasemonkey/lib/xhr')
2 | export = xhr
3 |
--------------------------------------------------------------------------------
/lib/greasemonkey/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/14/014.
3 | */
4 |
5 | export function GM_addStyle(css: string, head?)
6 | {
7 | head = head || document.getElementsByTagName('head')[0];
8 |
9 | if (!head)
10 | {
11 | return;
12 | }
13 |
14 | let style = document.createElement('style');
15 | style.type = 'text/css';
16 |
17 | try
18 | {
19 | style.innerHTML = css
20 | }
21 | catch (e)
22 | {
23 | style.innerText = css
24 | }
25 | head.appendChild(style);
26 |
27 | return style;
28 | }
29 |
30 | export default exports as typeof import('./index');
--------------------------------------------------------------------------------
/lib/greasemonkey/uf.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/14/014.
3 | */
4 |
5 | import * as greasemonkey from './index';
6 |
7 | //Object.assign(exports, greasemonkey);
8 |
9 | export interface IGreasemonkey
10 | {
11 | GM_addStyle(css: string | string[], head?);
12 | debug(any: any, ...argv);
13 | info(any: any, ...argv);
14 | log(any: any, ...argv);
15 | error(any: any, ...argv);
16 |
17 | addStylesheet(url, head?);
18 |
19 | default: IGreasemonkey;
20 | }
21 |
22 | export function GM_addStyle(css: string | string[], head?)
23 | {
24 | if (Array.isArray(css))
25 | {
26 | css = css.join('');
27 | }
28 |
29 | if (typeof head == 'string')
30 | {
31 | head = $(head);
32 | }
33 |
34 | if (typeof head == 'object' && head.length && typeof head[0] == 'object')
35 | {
36 | head = head[0];
37 | }
38 |
39 | return greasemonkey.GM_addStyle(css.toString(), head);
40 | }
41 |
42 | export function addStylesheet(url, head?)
43 | {
44 | if (typeof url === 'object' && url.webfont)
45 | {
46 | url = url.webfont;
47 | }
48 |
49 | return $(``)
50 | .appendTo(head || $('header, body').eq(0))
51 | ;
52 | }
53 |
54 | export function debug(any: any, ...argv)
55 | {
56 | // @ts-ignore
57 | return console.info(`%c[${global.userScript.id}][debug]`, 'color: #4B90C2;', any, ...argv);
58 | }
59 |
60 | export function error(any: any, ...argv)
61 | {
62 | // @ts-ignore
63 | return console.error(`%c[${global.userScript.id}][error]`, 'color: red;', any, ...argv);
64 | }
65 |
66 | export function info(any: any, ...argv)
67 | {
68 | // @ts-ignore
69 | return console.info(`%c[${global.userScript.id}][info]`, 'color: #ccc;', any, ...argv);
70 | }
71 |
72 | export function log(any: any, ...argv)
73 | {
74 | return console.log(any, ...argv);
75 | }
76 |
77 | export function openInTabBackground(url: string)
78 | {
79 | let win = window.open(url, '_blank');
80 |
81 | setTimeout(function ()
82 | {
83 | window.focus();
84 | }, 300);
85 |
86 | return win;
87 | }
88 |
89 | export default exports as typeof import('./uf');
90 | export * from './index';
91 |
--------------------------------------------------------------------------------
/lib/jquery/event.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/14/014.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports.makeJQueryPlugin = ($ = global.jQuery, window = global.window) =>
8 | {
9 |
10 | $.fn.events = function ()
11 | {
12 | return $._data(this.get(0), 'events');
13 | };
14 |
15 | $.fn.eventExists = function (type, namespace)
16 | {
17 | let events = $(this).events();
18 |
19 | if (events && events[type] && events[type].length)
20 | {
21 | if (typeof namespace != 'undefined')
22 | {
23 | for (let ev of events[type])
24 | {
25 | if (ev.namespace === namespace)
26 | {
27 | return true;
28 | }
29 | }
30 | }
31 | else
32 | {
33 | return true;
34 | }
35 | }
36 |
37 | return false;
38 | };
39 |
40 | };
41 |
--------------------------------------------------------------------------------
/lib/jquery/event/capture.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/23/023.
3 | */
4 |
5 | //export function onCapture(who, originalType: string, selector: string, listener: EventListener, ...argv)
6 | //export function onCapture(who, originalType: string, listener: EventListener, ...argv)
7 | export function onCapture(who, originalType: string, listener: T, ...argv)
8 | {
9 | let selector;
10 |
11 | if (typeof listener !== 'function')
12 | {
13 | selector = listener;
14 | listener = argv[argv.length - 1];
15 | }
16 |
17 | let t = originalType.split('.');
18 |
19 | const type = t.shift().toString();
20 | const namespace = t.join('.').toString();
21 |
22 | let o = $(who)
23 | .each(function ()
24 | {
25 | this.addEventListener(type, function (originalEvent)
26 | {
27 | //console.debug(type, originalType, selector, listener, originalEvent);
28 |
29 | let event = $.Event(originalEvent);
30 |
31 | if (!selector || selector && $(event.target).is(selector))
32 | {
33 | //console.debug('onCapture', event);
34 |
35 | listener.call(event.target, event);
36 | }
37 |
38 | }, true);
39 | })
40 | ;
41 |
42 | return o;
43 | }
44 |
45 | export default onCapture;
46 |
--------------------------------------------------------------------------------
/lib/jquery/event/hotkey.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/15/015.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports.packEvent = function (fn, context = global.window, filter = ':input')
8 | {
9 | return function (event, ...argv)
10 | {
11 | let _self = this;
12 | let d = $(document.activeElement);
13 |
14 | if (!d.is(filter))
15 | {
16 | //console.log(':focus', true, d, event);
17 |
18 | let ret = $.proxy(fn, _self, event, ...argv)();
19 |
20 | return ret;
21 | }
22 | else
23 | {
24 | //console.log(':focus', false, d, event);
25 | }
26 | };
27 | };
28 |
--------------------------------------------------------------------------------
/lib/jquery/event/key.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/20/020.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports.makeJQueryPlugin = ($ = global.jQuery, window = global.window) =>
8 | {
9 |
10 | $.fn.triggerKey = function (data, type = 'keydown')
11 | {
12 | if (typeof data != 'object')
13 | {
14 | data = Object.assign({}, {
15 | which: data,
16 | keyCode: data,
17 | })
18 | }
19 |
20 | let e = $.Event(type);
21 |
22 | Object.assign(e, data);
23 |
24 | console.log('triggerKey', this, e);
25 |
26 | return this.trigger(e);
27 | };
28 |
29 | };
30 |
--------------------------------------------------------------------------------
/lib/jquery/history.state.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/21/021.
3 | */
4 |
5 | module.exports.makeJQueryPlugin = ($ = global.jQuery, window = global.window) =>
6 | {
7 | const history = window.history;
8 |
9 | const history_event = [
10 | 'pushState',
11 | 'replaceState',
12 | ];
13 |
14 | /*
15 | history_event
16 | .forEach(function (event)
17 | {
18 | let fn = `on${event}`;
19 |
20 | console.log(`history.${fn}`, (fn in history));
21 | console.log(`history.${event}`, (event in history));
22 |
23 | console.log(`window.${fn.toLowerCase()}`, (fn.toLowerCase() in window));
24 | console.log(`window.${event.toLowerCase()}`, (event.toLowerCase() in window));
25 | })
26 | ;
27 | */
28 |
29 | history_event
30 | .forEach(function (event)
31 | {
32 | console.log(`history.${event}`, (event in history));
33 |
34 | $(window)
35 | .on(event.toLowerCase(), function (event)
36 | {
37 | console.log(777, event);
38 | })
39 | ;
40 |
41 | ((old) =>
42 | {
43 | const type = event.toLowerCase();
44 |
45 | history[event] = function (...argv)
46 | {
47 | let ret = old.call(this, ...argv);
48 |
49 | $(window).trigger({
50 | original: {
51 | location: window.location,
52 | },
53 |
54 | state: argv[0],
55 | title: argv[1],
56 | url: argv[2],
57 |
58 | type: type,
59 | });
60 |
61 | return ret;
62 | };
63 |
64 | //console.log(666, history[event]);
65 |
66 | let fn = `on${type}`;
67 |
68 | })(history[event])
69 | })
70 | ;
71 |
72 | };
73 |
--------------------------------------------------------------------------------
/lib/jquery/onscreen.js:
--------------------------------------------------------------------------------
1 | // onScreen jQuery plugin v0.2.1
2 | // (c) 2011-2013 Ben Pickles
3 | //
4 | // http://benpickles.github.io/onScreen
5 | //
6 | // Released under MIT license.
7 | ;(function($) {
8 | $.expr[":"].onScreen = function(elem) {
9 | var $window = $(window)
10 | var viewport_top = $window.scrollTop()
11 | var viewport_height = $window.innerHeight()
12 | var viewport_bottom = viewport_top + viewport_height
13 | var $elem = $(elem)
14 | var top = $elem.offset().top
15 | var height = $elem.height()
16 | var bottom = top + height
17 |
18 | return (top >= viewport_top && top < viewport_bottom) ||
19 | (bottom > viewport_top && bottom <= viewport_bottom) ||
20 | (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom)
21 | }
22 | })(jQuery);
23 |
--------------------------------------------------------------------------------
/lib/jquery/push.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports.makeJQueryPlugin = ($ = global.jQuery, window = global.window) =>
8 | {
9 |
10 | $.fn.push = function (selector, context)
11 | {
12 | Array.prototype.push.apply(this, $.makeArray($(selector, context).not(this)));
13 |
14 | return this;
15 | };
16 |
17 | };
18 |
--------------------------------------------------------------------------------
/lib/jquery/scrollTo.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/13/013.
3 | */
4 |
5 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from '../core/demo';
6 |
7 | // @ts-ignore
8 | export function makeJQueryPlugin($: IJQueryStatic = global.jQuery, window: IWindow = global.window)
9 | {
10 | (function (_old)
11 | {
12 | let _fn_top = function (who)
13 | {
14 | let _top;
15 | let _o;
16 |
17 | if ($.isNumeric(who))
18 | {
19 | _top = who;
20 | }
21 | else if (Array.isArray(who) && who.length)
22 | {
23 | for (let elem of who)
24 | {
25 | let _o;
26 |
27 | if (elem && (_o = $(elem)) && _o.length)
28 | {
29 | _top = _o.offset().top;
30 | break;
31 | }
32 | }
33 | }
34 | else if ((_o = $(who)) && _o.length)
35 | {
36 | _top = _o.offset().top;
37 | }
38 |
39 | return _top;
40 | };
41 |
42 | // if (!$.isfunction(_old))
43 | if (typeof _old === 'undefined')
44 | {
45 | // @ts-ignore
46 | $.fn.scrollTo = function (who, offset, animate?, finish?: boolean)
47 | {
48 | let _top = _fn_top(who);
49 |
50 | if (offset)
51 | {
52 | _top = (_top ? _top : 0) + _fn_top(offset);
53 | }
54 |
55 | if (_top !== undefined)
56 | {
57 | if (finish)
58 | {
59 | this.finish();
60 | }
61 |
62 | if (0 && animate)
63 | {
64 | return this.animate({
65 | scrollTop: _top,
66 | }, animate);
67 | }
68 |
69 | return this.scrollTop(_top);
70 | }
71 |
72 | return this;
73 | };
74 | }
75 |
76 | // if (!$.isfunction($.scrollTo))
77 | if (typeof $.scrollTo === 'undefined')
78 | {
79 | // @ts-ignore
80 | $.scrollTo = function (who, offset, animate?, finish?: boolean)
81 | {
82 | // @ts-ignore
83 | return $(window).scrollTo(who, offset, animate, finish);
84 | };
85 | }
86 | // @ts-ignore
87 | })($.fn.scrollTo);
88 | }
89 |
90 | export default makeJQueryPlugin
91 |
--------------------------------------------------------------------------------
/lib/promise/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/21/021.
3 | */
4 |
5 | import * as Promise from 'bluebird';
6 |
7 | export { Promise };
8 |
9 | export function PromiseInterval(cb, interval = 100)
10 | {
11 | const defer = Promise.defer();
12 |
13 | defer.interval = interval;
14 | defer.stop = false;
15 | defer.timer = null;
16 | defer.count = 0;
17 |
18 | defer.fn = function (stop)
19 | {
20 | clearTimeout(defer.timer);
21 |
22 | if (!defer.promise.isPending())
23 | {
24 | return;
25 | }
26 |
27 | defer.count++;
28 |
29 | stop = stop || defer.stop;
30 |
31 | let ret = cb(defer);
32 |
33 | if (typeof ret != 'undefined' && ret !== false)
34 | {
35 | defer.resolve(ret);
36 | }
37 | else if (ret === false)
38 | {
39 | defer.resolve(ret);
40 | }
41 | else if (stop)
42 | {
43 | defer.resolve(false);
44 | }
45 | else if (!stop)
46 | {
47 | defer.timer = setTimeout(function ()
48 | {
49 | defer.fn();
50 | }, defer.interval);
51 | }
52 | };
53 |
54 | defer
55 | .promise
56 | .tap(function ()
57 | {
58 | clearTimeout(defer.timer);
59 | })
60 | .tapCatch(function (err)
61 | {
62 | clearTimeout(defer.timer);
63 | })
64 | ;
65 |
66 | defer.fn();
67 |
68 | return defer;
69 | }
70 |
71 | export default Promise;
72 |
--------------------------------------------------------------------------------
/lib/promise/wait.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/14/014.
3 | */
4 |
5 | module.exports.jquery = function waitUntil(cb, delay = 100)
6 | {
7 | let deferred = new $.Deferred();
8 | let count = 0;
9 |
10 | let _wait = function ()
11 | {
12 | count++;
13 |
14 | let ret = cb(deferred, count);
15 |
16 | if (deferred.isRejected() || deferred.isResolved())
17 | {
18 | }
19 | else if (ret === false)
20 | {
21 | deferred.reject([ret, count]);
22 | }
23 | else if (count <= 20 || ret === true)
24 | {
25 | setTimeout(_wait, delay);
26 | }
27 | else
28 | {
29 | deferred.rejectWith(ret, [ret, count]);
30 | }
31 | };
32 |
33 | setImmediate(_wait);
34 |
35 | return deferred.promise();
36 | };
37 |
--------------------------------------------------------------------------------
/lib/site/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 |
--------------------------------------------------------------------------------
/lib/site/discuz/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/12/25/025.
3 | */
4 |
5 | export function hide_userinfo(context)
6 | {
7 | let _area = $('.pls.favatar', context);
8 |
9 | let _avatar = _area.find('> div:has(.avatar)')
10 | .not('.p_pop')
11 | .eq(0);
12 |
13 | if (_avatar.find('img[src*="noavatar"]').length)
14 | {
15 | _avatar.addClass('noavatar');
16 | }
17 |
18 | _avatar.addClass('_avatar_area');
19 |
20 | let _pls_sub = $('');
21 |
22 | console.log(_pls_sub, _avatar);
23 |
24 | _avatar.after(_pls_sub);
25 |
26 | _avatar
27 | .nextAll()
28 | .appendTo(_pls_sub)
29 | ;
30 | }
31 |
32 | export function f()
33 | {
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/lib/site/iqing/signin.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/2/20/020.
3 | */
4 |
5 | import GM_XHR, { IXMLHttpRequestResponse, AjaxError } from 'root/lib/greasemonkey/gm/xhr';
6 | import greasemonkey from 'root/lib/greasemonkey/uf';
7 |
8 | export async function signin(force?: boolean): Promise
9 | {
10 | let options = {
11 | method: 'POST',
12 | headers: {
13 | 'Access-Control-Allow-Origin': '*',
14 | },
15 | dataType: 'json',
16 | };
17 |
18 | return GM_XHR
19 | .ajax('https://poi.iqing.com/account/check_in/', Object.assign({}, options, {
20 |
21 | data: {
22 | //action: 2,
23 | },
24 |
25 | xhrFields: {
26 | withCredentials: true,
27 | },
28 |
29 | }))
30 | .then(function (res: IXMLHttpRequestResponse)
31 | {
32 | //console.log(5, res, res.response);
33 |
34 | if (res && res.response && res.response.msg == 'success')
35 | {
36 | greasemonkey.log(`success`, res);
37 |
38 | return res;
39 | }
40 |
41 | // @ts-ignore
42 | return Promise.reject(AjaxError(res));
43 | })
44 | .then(function (res)
45 | {
46 | if (!res || (res !== true) && !res.response)
47 | {
48 | return Promise.reject(AjaxError(res));
49 | }
50 |
51 | return res;
52 | })
53 | .catch(err => greasemonkey.error(err))
54 | ;
55 | }
56 |
57 | export default signin;
58 |
--------------------------------------------------------------------------------
/lib/site/pixiv/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export function replacePixivUserUrl(href: string)
3 | {
4 | return href
5 | .replace('member.php', 'member_illust.php')
6 | //.replace(/(users\/\d+)\/?$/, '$1/illustrations')
7 | .replace(/(users\/\d+)\/?$/, '$1/artworks')
8 | ;
9 | }
10 |
11 | export function toPixivUserIllust(uid: string)
12 | {
13 | //return `https://www.pixiv.net/users/${uid}/illustrations`;
14 | return `https://www.pixiv.net/users/${uid}/artworks`;
15 | }
16 |
--------------------------------------------------------------------------------
/lib/site/youtube/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/1/001.
3 | *
4 | * require('root/lib/greasemonkey/web/xhr').ajaxSetup();
5 | *
6 | */
7 |
8 | export const yt_url = 'https://www.youtube.com';
9 |
10 | export function ajaxSetTitle(video_id, new_title, session_token)
11 | {
12 | return $
13 | .ajax({
14 | url: `${yt_url}/watch_inlineedit_ajax?action_save_video=1`,
15 | method: 'POST',
16 | data: {
17 | 'session_token': session_token,
18 | 'video_id': video_id,
19 | 'field_myvideo_title': new_title.toString().trim(),
20 | },
21 | //dataType: 'json',
22 | }
23 | )
24 | .promise()
25 | .then(function (data)
26 | {
27 | if (!data || data.errors && data.errors.length)
28 | {
29 | // @ts-ignore
30 | return Promise.reject(data);
31 | }
32 |
33 | return data;
34 | })
35 | ;
36 | }
37 |
38 | /**
39 | * 2017
40 | *
41 | * @returns {boolean}
42 | */
43 | export function isMaterial()
44 | {
45 | if ($('style[scope="ytd-app"], ytd-app').length)
46 | {
47 | return true;
48 | }
49 | }
50 |
51 | export function yt_token(): string
52 | {
53 | // @ts-ignore
54 | return (typeof unsafeWindow !== 'undefined' ? unsafeWindow : window).yt.config_.XSRF_TOKEN;
55 | }
56 |
57 | export default exports;
58 |
--------------------------------------------------------------------------------
/readme/dmhy001.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/dmhy001.jpg
--------------------------------------------------------------------------------
/readme/dmhy002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/dmhy002.jpg
--------------------------------------------------------------------------------
/readme/firefox57/2018-03-01-12-07-32-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/firefox57/2018-03-01-12-07-32-3.jpg
--------------------------------------------------------------------------------
/readme/firefox57/greasemonkey.md:
--------------------------------------------------------------------------------
1 | # 在 Firefox 57 greasemonkey 安裝腳本的方法
2 |
3 | 1. 嘗試安裝 [Beta](https://addons.mozilla.org/zh-TW/firefox/addon/greasemonkey/versions/beta) 版
4 | 2. 手動編輯將腳本內容新增進去 
5 | 3. 傻瓜般的一直重覆點到出現安裝畫面為止
6 | 4. 到 [greasyfork](https://greasyfork.org/zh-TW/users/8873-bluelovers) 安裝
7 | 5. 到這裡 [issues](https://github.com/greasemonkey/greasemonkey/issues) 詢問...
8 | 6. ...放棄 greasemonkey 直到問題修正為止
9 |
--------------------------------------------------------------------------------
/readme/fuck-u-fb-share.md:
--------------------------------------------------------------------------------
1 | # fuck-u-fb-share
2 |
3 | > 此腳本試圖解決智障 FB 新分享機制導致的困擾 並且恢復為舊版分享 (2017-11)
4 |
5 | 分享用網址 [http://lnk.pics/4D3CJ](http://lnk.pics/4D3CJ) (會得到比較友善一點的連結預覽)
6 |
7 | ## install
8 |
9 | 1. 請參閱 [安裝需求](userscript.md)
10 |
11 | ### 腳本
12 |
13 | #### fuck-u-fb-share
14 |
15 | 然後點擊此處安裝腳本 [fuck-u-fb-share.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/fuck-u-fb-share.user.js)
16 |
17 | 
18 |
19 | ## issues
20 |
21 | 可以在此回報 BUG [issues](https://github.com/bluelovers/gm-user-scripts/issues)
22 |
23 | > 回報時請盡量附上貼文網址 以及 截圖
24 | > 不定期更新 請記得安裝新版
25 |
26 | ### FAQ
27 |
28 | 1. 很抱歉,這則貼文的**隱私設定**表示你無法分享它。
29 |
30 | > 這問題並非此腳本所造成而是目前 FB 本身自己的 BUG
31 | > 點擊貼文時間可以取得該篇貼文的網址
32 | > 透過另外開啟貼文之後 再進行分享
33 |
34 | > 如果為圖片貼文 則可以把圖片點大之後 在分享一次
35 |
36 | 
37 |
38 | 2. 分享連結時無法同時分享原始貼文訊息
39 |
40 | > 目前暫時無法解決這個問題
41 | > 因為最重要的貼文文字ID 是被隱藏在物件 `TimeSlice` 內
42 | > 暫時不知道如何取出物件內的資料
43 |
44 | > 目前的解決方式是遇到貼文類型為連結並且有原始文字的貼文
45 | > 會使用新版分享方式
46 |
47 | 3. 部分使用者使用 Firefox 57 以上版本時可能會發生腳本無法安裝的狀況
48 |
49 | > 目前這應該是屬於 Greasemonkey 的 BUG 雖然官方聲稱是火狐的BUG
50 | > 但使用 Tampermonkey 的話反而就可以正常安裝腳本
51 |
52 | ## 其他腳本
53 |
54 | * [ux-tweak-sc.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/ux-tweak-sc.user.js)
55 | * [facebook-sc](https://userstyles.org/styles/113811/facebook-sc)
56 | * [stylish-adblock-for-mobile](http://pics.ee/hcbu)
57 | * [dmm-plus-sc.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/dmm-plus-sc.user.js)
58 |
59 |
--------------------------------------------------------------------------------
/readme/fuck-u-fb-share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/fuck-u-fb-share.png
--------------------------------------------------------------------------------
/readme/gitee-plus.md:
--------------------------------------------------------------------------------
1 | # gitee-plus
2 |
3 | 於 Gitee 碼雲 增加一點小功能
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### novel-plus-sc
12 |
13 | 然後點擊此處安裝腳本 [gitee-plus.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/gitee-plus.user.js)
14 |
15 | ## screenshots
16 |
17 | ### 可依照資料夾顯示歷史紀錄
18 |
19 | 
20 |
21 | ### 使以下圖片中紅框部分的連結支援 AJAX
22 |
23 | 
24 |
25 | 
26 |
27 | ### 使代碼支援 PRE-WRAP
28 |
29 | 
30 |
31 | ## todo
32 |
33 | > 以下功能尚未完成 或 無法完成
34 |
35 |
--------------------------------------------------------------------------------
/readme/images/2017-11-24-16-11-30-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/2017-11-24-16-11-30-2.jpg
--------------------------------------------------------------------------------
/readme/images/2018-03-08-22-12-26-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/2018-03-08-22-12-26-2.jpg
--------------------------------------------------------------------------------
/readme/images/2018-03-18-05-09-21-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/2018-03-18-05-09-21-1.jpg
--------------------------------------------------------------------------------
/readme/images/2018-03-18-05-11-14-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/2018-03-18-05-11-14-2.jpg
--------------------------------------------------------------------------------
/readme/images/ShareX_2019-03-17-03-17-28-.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/ShareX_2019-03-17-03-17-28-.png
--------------------------------------------------------------------------------
/readme/images/ShareX_2019-03-17-03-25-00-.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/ShareX_2019-03-17-03-25-00-.png
--------------------------------------------------------------------------------
/readme/images/gitee-plus/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/gitee-plus/001.png
--------------------------------------------------------------------------------
/readme/images/gitee-plus/002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/gitee-plus/002.png
--------------------------------------------------------------------------------
/readme/images/gitee-plus/003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/gitee-plus/003.png
--------------------------------------------------------------------------------
/readme/images/gitee-plus/2018-08-17-22-30-34-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/gitee-plus/2018-08-17-22-30-34-24.png
--------------------------------------------------------------------------------
/readme/images/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image.png
--------------------------------------------------------------------------------
/readme/images/image_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image_1.png
--------------------------------------------------------------------------------
/readme/images/image_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image_2.png
--------------------------------------------------------------------------------
/readme/images/image_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image_3.png
--------------------------------------------------------------------------------
/readme/images/image_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image_4.png
--------------------------------------------------------------------------------
/readme/images/image_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/image_5.png
--------------------------------------------------------------------------------
/readme/images/novel-plus-sc/2017-12-06-16-31-05-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/novel-plus-sc/2017-12-06-16-31-05-1.png
--------------------------------------------------------------------------------
/readme/images/novel-plus-sc/2017-12-06-17-24-01-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/novel-plus-sc/2017-12-06-17-24-01-4.png
--------------------------------------------------------------------------------
/readme/images/novel-plus-sc/2017-12-07-08-24-33-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/novel-plus-sc/2017-12-07-08-24-33-5.jpg
--------------------------------------------------------------------------------
/readme/images/novel-plus-sc/2017-12-07-15-04-47-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/novel-plus-sc/2017-12-07-15-04-47-6.png
--------------------------------------------------------------------------------
/readme/images/syosetu-list-number/2018-07-14-17-58-13-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/syosetu-list-number/2018-07-14-17-58-13-4.png
--------------------------------------------------------------------------------
/readme/images/syosetu-list-number/2018-07-15-18-35-07-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/syosetu-list-number/2018-07-15-18-35-07-3.png
--------------------------------------------------------------------------------
/readme/images/syosetu-list-number/2018-08-13-00-38-39-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/images/syosetu-list-number/2018-08-13-00-38-39-17.png
--------------------------------------------------------------------------------
/readme/masiro-moe.md:
--------------------------------------------------------------------------------
1 | # masiro-moe
2 |
3 | https://masiro.moe
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](https://github.com/bluelovers/gm-user-scripts/blob/master/readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### masiro-moe
12 |
13 | 然後點擊此處安裝腳本 [masiro-moe.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/masiro-moe.user.js)
14 |
15 | ## 功能
16 |
17 | > 清楚提示有新貼的版塊,且排序
18 |
19 | 
20 |
21 | > 隱藏多餘資訊並且移除最低高度限制
22 |
23 | 
24 |
25 | > 支援適應視窗寬度
26 |
27 | 
28 |
29 | 
30 |
31 | > 支援版塊過濾功能(無視簡繁日漢字)
32 |
33 | 
34 |
--------------------------------------------------------------------------------
/readme/pan-baidu-block-or-expire.md:
--------------------------------------------------------------------------------
1 | # pan-baidu-block-or-expire
2 |
3 | > pan-baidu-block-or-expire 輔助判斷百度盤是封鎖還是過期
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](https://github.com/bluelovers/gm-user-scripts/blob/master/readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### syosetu-list-number
12 |
13 | 然後點擊此處安裝腳本
14 |
15 | * [syosetu-list-number.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/pan-baidu-block-or-expire.user.js)
16 | * [greasyfork](https://greasyfork.org/zh-TW/scripts/39684-pan-baidu-block-or-expire) - 備用安裝連結
17 |
18 | ### 預覽圖
19 |
20 | #### 過期或者刪除時
21 |
22 | 
23 |
24 | #### 被鎖 IP
25 |
26 | 
27 |
--------------------------------------------------------------------------------
/readme/shimo-im-discuz.md:
--------------------------------------------------------------------------------
1 | # shimo-im-discuz
2 |
3 | 暴力複製破壞石墨網頁讓他可以正常複製格式到 discuz 論壇
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](https://github.com/bluelovers/gm-user-scripts/blob/master/readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### novel-plus-sc
12 |
13 | 然後點擊此處安裝腳本 [shimo-im-discuz.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/shimo-im-discuz.user.js)
14 |
15 | ## screenshort
16 |
17 | 
18 |
19 | 
20 |
21 | 範例
22 | https://shimo.im/docs/1P8JW4pVHmAnc8kk
23 |
24 | 
25 |
--------------------------------------------------------------------------------
/readme/syosetu-list-number.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bluelovers/gm-user-scripts/e59ce35821fccc91917c4decd3a26c41f2b587f3/readme/syosetu-list-number.jpg
--------------------------------------------------------------------------------
/readme/syosetu-list-number.md:
--------------------------------------------------------------------------------
1 | # syosetu-list-number
2 |
3 | > syosetu-list-number 讓小說家的章節顯示序列 (支援手機版)
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](https://github.com/bluelovers/gm-user-scripts/blob/master/readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### syosetu-list-number
12 |
13 | 然後點擊此處安裝腳本
14 |
15 | * [syosetu-list-number.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/syosetu-list-number.user.js)
16 | * [greasyfork](https://greasyfork.org/zh-TW/scripts/39307-syosetu-list-number) - 備用安裝連結
17 |
18 | ## 功能
19 |
20 | - 章節顯示序列
21 | - 可折疊章節
22 | - 複製章節內容時不會產生額外的多餘空白行
23 | - 自動登入 r18 (因為有些人被長城牆了某些腳本 導致無法點擊按鈕)
24 | - 其他介面微調
25 | - 浮動索引 TOC
26 | -
27 |
28 | ### 預覽圖
29 |
30 | #### PC
31 |
32 | > 序列
33 |
34 | 
35 |
36 | > 章節折疊
37 |
38 | 
39 |
40 | > 浮動章節導覽
41 |
42 | 
43 |
44 | > 複製文章
45 |
46 | 
47 |
48 | #### Mobile
49 |
50 | 
51 |
52 | ## test link
53 |
54 | - https://ncode.syosetu.com/n8961ch/
55 | -
56 |
--------------------------------------------------------------------------------
/readme/tieba-harmony.md:
--------------------------------------------------------------------------------
1 | # tieba-harmony
2 |
3 | > 貼吧發文時自動和諧
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](https://github.com/bluelovers/gm-user-scripts/blob/master/readme/userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### tieba-harmony
12 |
13 | 然後點擊此處安裝腳本
14 |
15 | * [tieba-harmony.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/tieba-harmony.user.js)
16 | * [greasyfork](https://greasyfork.org/zh-TW/scripts/38314-tieba-harmony) - 備用安裝連結
17 |
--------------------------------------------------------------------------------
/readme/userscript.md:
--------------------------------------------------------------------------------
1 | # 腳本管理器
2 |
3 | ## install
4 |
5 | ### 腳本管理器
6 |
7 | 請先安裝此瀏覽器附加元件
8 |
9 | #### PC
10 |
11 | - Chrome: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo)
12 | - Firefox: [Greasemonkey](https://addons.mozilla.org/firefox/addon/greasemonkey/) / [Tampermonkey](https://addons.mozilla.org/zh-TW/firefox/addon/tampermonkey/)
13 |
14 | #### mobile / 手機
15 |
16 | - [Firefox mobile](https://play.google.com/store/search?q=firefox&c=apps): [usi (User|Unified Script Injector)](https://addons.mozilla.org/firefox/addon/userunified-script-injector/)
17 |
18 | #### Firefox 57
19 |
20 | * 注意 於 Firefox 57 以上 推薦安裝 [Tampermonkey](https://addons.mozilla.org/zh-TW/firefox/addon/tampermonkey/) 可是請注意以下事項
21 |
22 | > 目前 Firefox 57 以上的 Tampermonkey 可能會有部分網頁使用 $ 的會出錯(因人而異)
23 |
24 | > 但如果是安裝 Greasemonkey 就不會出錯 可正常運行
25 | > 可是 Greasemonkey 在 Firefox 57 以上 有 95% 以上機率 無法安裝腳本(必須要自己想辦法成功安裝腳本) 相關方法請參考 [這裡](firefox57/greasemonkey.md)
26 |
--------------------------------------------------------------------------------
/readme/ux-tweak-sc.md:
--------------------------------------------------------------------------------
1 | # ux-tweak-sc
2 |
3 | > 各種網站 UX 優化 與 搭配某些插件/行為時的簡化動作
4 |
5 | ## install
6 |
7 | 1. 請參閱 [安裝需求](userscript.md)
8 |
9 | ### 腳本
10 |
11 | #### ux-tweak-sc
12 |
13 | 安裝連結 [ux-tweak-sc.user.js](https://github.com/bluelovers/gm-user-scripts/raw/master/dist/ux-tweak-sc.user.js)
14 |
15 | 
16 |
17 | 
18 |
19 | old version: https://gist.github.com/bluelovers/5186199
20 |
--------------------------------------------------------------------------------
/script/create.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2018/7/12/012.
3 | */
4 |
5 | import yargs from 'yargs2';
6 | import { console } from 'debug-color2';
7 | import * as path from 'path';
8 | import * as fs from 'fs-extra';
9 |
10 | let name = yargs.argv.name || yargs.argv._[0];
11 |
12 | //console.debug(yargs.argv);
13 |
14 | if (name)
15 | {
16 | name = name
17 | .toString()
18 | .trim()
19 | .replace(/[^a-z\d\-\._]/ig, '')
20 | ;
21 | }
22 |
23 | if (!name)
24 | {
25 | exit(`name is ${typeof name}`);
26 | }
27 |
28 | let root = path.resolve(__dirname, '..');
29 | let root_src = path.resolve(root, 'src');
30 |
31 | let target_dir = path.resolve(root_src, name);
32 |
33 | //console.debug({
34 | // root,
35 | // root_src,
36 | // target_dir,
37 | //});
38 |
39 | if (fs.existsSync(target_dir))
40 | {
41 | exit(`${name} already exists`);
42 | }
43 |
44 | fs.ensureDirSync(target_dir);
45 | fs.ensureDirSync(path.join(target_dir, 'base'));
46 | fs.ensureDirSync(path.join(target_dir, 'lib'));
47 |
48 | fs.copyFileSync(path.join(root, 'lib/core/tpl/index.user.ts'), path.join(target_dir, `index.user.ts`));
49 |
50 | fs.copyFileSync(path.join(root, 'lib/core/tpl/.gitignore'), path.join(target_dir, `.gitignore`));
51 |
52 | fs.copyFileSync(path.join(root, 'lib/core/tpl/demo.ts'), path.join(target_dir, `base/${name}.ts`));
53 |
54 | fs.copyFileSync(path.join(root, 'lib/core/tpl/metadata.ts'), path.join(target_dir, `lib/metadata.ts`));
55 |
56 | console.success(`${name} created`);
57 |
58 | function exit(msg, code = 1)
59 | {
60 | console.error(msg);
61 | process.exit(1);
62 | }
63 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/_fake.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | priority: -1,
12 |
13 | metadata: {
14 | include: [
15 | 'http*://*.dmm.co*/*',
16 | 'http*://*games.dmm.co*/*',
17 | ],
18 | exclude: [
19 | 'http*://www.dmm.co*/digital*',
20 | ],
21 | },
22 |
23 | // @ts-ignore
24 | test(_url_obj = global._url_obj)
25 | {
26 | return false;
27 | },
28 |
29 | // @ts-ignore
30 | main(_url_obj = global._url_obj)
31 | {
32 | },
33 |
34 | // @ts-ignore
35 | adblock(_url_obj = global._url_obj)
36 | {
37 | },
38 |
39 | // @ts-ignore
40 | clearly(_url_obj = global._url_obj, _dom_list = null)
41 | {
42 | let _dom = $(_dom_list);
43 |
44 | return _dom;
45 | },
46 | };
47 |
48 | export = o;
49 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/games/canvas.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | //script: true,
12 |
13 | priority: 400,
14 |
15 | metadata: {
16 | include: [
17 | 'http*://web.killdoya.jp/*',
18 | 'http*://dmm-*.iolite.link/*',
19 | 'http*://*/product/dmm_pc.php/*',
20 | 'http*://assets.millennium-war.net/*/*',
21 | ],
22 | exclude: [],
23 | },
24 |
25 | test(_url_obj = global._url_obj)
26 | {
27 | let ret;
28 |
29 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
30 | {
31 | return 2;
32 | }
33 |
34 | return false;
35 | },
36 |
37 | main(_url_obj = global._url_obj)
38 | {
39 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
40 | _uf_dom_filter_link([
41 | //
42 | ].join())
43 | .prop('target', '_blank')
44 | ;
45 |
46 | const greasemonkey = require('root/lib/greasemonkey/uf');
47 |
48 | greasemonkey
49 | .GM_addStyle([
50 | `iframe, body, html { background-color: transparent !important; border: 0 none transparent; }`,
51 | ], 'body')
52 | ;
53 |
54 | let gameCanvas = $('#gameCanvas, .emscripten').filter('canvas');
55 |
56 | let game_width = (gameCanvas.length) ? gameCanvas.width() : 960;
57 |
58 | let $win = $(window);
59 |
60 | $win
61 | .on('load.ready', function ()
62 | {
63 | module.exports.adblock(_url_obj);
64 |
65 | require('root/lib/dom/iframe').transparent('iframe, body, html');
66 | })
67 | .on('abort', function()
68 | {
69 | $win.triggerHandler('load.ready');
70 | })
71 | .triggerHandler('load.ready')
72 | ;
73 | },
74 |
75 | adblock(_url_obj = global._url_obj)
76 | {
77 |
78 | },
79 |
80 | clearly(_url_obj = global._url_obj, _dom_list = null)
81 | {
82 | let _dom = $(_dom_list);
83 |
84 | _dom = _dom
85 | .add([
86 | //
87 | ].join())
88 | ;
89 |
90 | //_dom.remove();
91 |
92 | return _dom;
93 | },
94 |
95 | };
96 |
97 | export = o;
98 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/games/gadgets.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | //script: true,
12 |
13 | metadata: {
14 | include: [
15 | 'http*://osapi.dmm.com/gadgets/*',
16 | ],
17 | exclude: [],
18 | },
19 |
20 | test(_url_obj = global._url_obj)
21 | {
22 | let ret;
23 |
24 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
25 | {
26 | return 2;
27 | }
28 |
29 | return false;
30 | },
31 |
32 | main(_url_obj = global._url_obj)
33 | {
34 | const greasemonkey = require('root/lib/greasemonkey/uf');
35 |
36 | greasemonkey
37 | .GM_addStyle([
38 | `iframe, body, html { background-color: transparent !important; border: 0 none transparent; }`,
39 | `#main_game, #main_contents { margin-left: 0px; text-align: left; }`,
40 | ], 'body')
41 | ;
42 |
43 | window.addEventListener("message", receiveMessage, false);
44 |
45 | function receiveMessage(event)
46 | {
47 | event.source.postMessage(window.location.href.toString(), event.origin);
48 | }
49 |
50 | let $win = $(window);
51 |
52 | $win
53 | .on('load.ready', function ()
54 | {
55 | module.exports.adblock(_url_obj);
56 |
57 | require('root/lib/dom/iframe').transparent('iframe, body, html');
58 |
59 | $('#main_game, #main_contents').css({
60 | 'margin-left': 0,
61 | 'text-align': 'left',
62 | });
63 | })
64 | .on('abort', function ()
65 | {
66 | $win.triggerHandler('load.ready');
67 | })
68 | .triggerHandler('load.ready')
69 | ;
70 |
71 | setTimeout(function ()
72 | {
73 | $win.triggerHandler('load.ready');
74 | }, 3000);
75 | },
76 |
77 | adblock(_url_obj = global._url_obj)
78 | {
79 |
80 | },
81 |
82 | clearly(_url_obj = global._url_obj, _dom_list = null)
83 | {
84 | let _dom = $(_dom_list);
85 |
86 | _dom = _dom
87 | .add([
88 | //
89 | ].join())
90 | ;
91 |
92 | //_dom.remove();
93 |
94 | return _dom;
95 | },
96 |
97 | };
98 |
99 | export = o;
100 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/global/iframe.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/22/022.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | priority: 100,
12 |
13 | metadata: {
14 | include: [
15 | 'http*://*',
16 | 'http*://pc-x.phantom-greed.com/top*',
17 | 'http*://pc-x.phantom-greed.com/start*',
18 | ],
19 | nomatch: [
20 | 'http*://*.dmm.co*/*',
21 | ],
22 | exclude: [
23 | 'http*://pc-x.phantom-greed.com/*frame*',
24 |
25 | 'http*://spdmg-backend2.i-mobile.co.jp/*',
26 | 'http*://tg.socdm.com/*',
27 | 'http://*.microad.jp/*',
28 |
29 | '*.youtube.*',
30 | '*.google.*',
31 | '*facebook.*',
32 | '*twitter.*',
33 |
34 | '*wiki.*/*',
35 |
36 | '*.tw/*',
37 | '*.cn/*',
38 | '*.org/*',
39 | '*.tv/*',
40 | '*.eu/*',
41 |
42 | ],
43 | },
44 |
45 | test(_url_obj = global._url_obj)
46 | {
47 | let ret;
48 |
49 | if (window.self != window.top
50 | && window.top != window.parent
51 | && !require('root/lib/greasemonkey/match').match(_url_obj.source, [].concat(module.exports.metadata.nomatch, module.exports.metadata.exclude))
52 | )
53 | {
54 | return true;
55 | }
56 |
57 | return false;
58 | },
59 |
60 | main(_url_obj = global._url_obj)
61 | {
62 | //console.info('window.parent', window.parent);
63 |
64 | //window.parent.location.href.match(/osapi\.dmm\.com\/gadgets/)
65 |
66 | let targetOrigin = 'http://osapi.dmm.com';
67 | let sendMessage = window.location.href.toString();
68 |
69 | postMessage(window.parent);
70 |
71 | if (window.parent.parent && window.parent.parent != window.top)
72 | {
73 | postMessage(window.parent.parent);
74 | }
75 |
76 | window.addEventListener('message', receiveMessage, false);
77 |
78 | function receiveMessage(event)
79 | {
80 | if (event.origin.match(/osapi\.dmm\.com/))
81 | {
82 | _main();
83 | }
84 | }
85 |
86 | function postMessage(target: Window)
87 | {
88 | target.postMessage(sendMessage, targetOrigin);
89 | }
90 |
91 | },
92 |
93 | };
94 |
95 | function _main()
96 | {
97 | require('root/lib/dom/iframe').transparent('iframe, body, html');
98 | }
99 |
100 | export = o;
101 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/global/script.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/18/018.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | priority: 100,
12 |
13 | script: true,
14 |
15 | metadata: {
16 | include: [
17 | //'http*://*.dmm.co*/*',
18 | ],
19 | exclude: [],
20 | },
21 |
22 | test(_url_obj = global._url_obj)
23 | {
24 | if ($('#content:has(.capt01) .sect01 .first a[href*="age_check"]').length)
25 | {
26 | return 2;
27 | }
28 |
29 | return false;
30 | },
31 |
32 | main(_url_obj = global._url_obj)
33 | {
34 | let _a = $('#content:has(.capt01) .sect01 .first a[href*="age_check"]');
35 |
36 | if (_a.length)
37 | {
38 | _a[0].click();
39 | }
40 | },
41 |
42 | };
43 |
44 | export = o;
45 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/global/webgl_dmm.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/18/018.
3 | */
4 |
5 | import { IDemo } from 'root/lib/core/demo';
6 |
7 | 'use strict';
8 |
9 | let o: IDemo = {
10 |
11 | priority: 100,
12 |
13 | script: true,
14 |
15 | metadata: {
16 | include: [
17 | '*/webgl_dmm/*',
18 | ],
19 | exclude: [],
20 | },
21 |
22 | test(_url_obj = global._url_obj)
23 | {
24 | if (require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports) && $('#main_contents #game-outer').length)
25 | {
26 | return 2;
27 | }
28 |
29 | return false;
30 | },
31 |
32 | main(_url_obj = global._url_obj)
33 | {
34 | let game_frame = $('#main_contents #game-outer');
35 | let game_width = (game_frame.length) ? game_frame.width() : 1200;
36 |
37 | const greasemonkey = require('root/lib/greasemonkey/uf');
38 |
39 | greasemonkey
40 | .GM_addStyle([
41 | `@media only screen and (max-width: ${game_width + 200}px) {
42 | #main_contents > div[style] { margin-left: 0; }
43 | }`,
44 | `#main_contents > div[style] { margin-left: 0; }`
45 | ], 'body')
46 | ;
47 |
48 | },
49 |
50 | };
51 |
52 | export = o;
53 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 |
9 | module.exports.id = 'dmm-plus-sc';
10 | module.exports.name = module.exports.id;
11 |
12 | module.exports.desc = 'dmm games layout tweak';
13 |
14 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
15 | {
16 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
17 | require('root/lib/jquery/scrollTo').makeJQueryPlugin($jq);
18 | });
19 |
--------------------------------------------------------------------------------
/src/dmm-plus-sc/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = 'DMM Games 介面調整以及更適合遊戲直播';
6 | export const desc_en = 'dmm games layout tweak';
7 |
8 | export const grant = [
9 | //'GM_registerMenuCommand',
10 | //'GM_xmlhttpRequest',
11 | 'unsafeWindow',
12 | ];
13 |
14 | export const metadata = `// ==UserScript==
15 | // @name <%= index.name %>
16 | // @name:en <%= index.name_en %>
17 | // @name:zh <%= index.name %>
18 | // @namespace bluelovers
19 | // @author bluelovers
20 | //
21 | // @description <%= index.desc %>
22 | // @description:en <%= index.desc_en %>
23 | // @description:zh <%= index.desc %>
24 | //
25 | // @version <%= pkg.version %>
26 | //
27 | // @grant <%= index.grant %>
28 | // g_r_a_n_tnone
29 | //
30 | // @icon <%= index.icon %>
31 | //
32 | // noframes
33 | // @encoding utf-8
34 | //
35 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
36 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
37 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
39 | //
40 | // @include <%= index.include %>
41 | //
42 | // @exclude <%= index.exclude %>
43 | //
44 | // ==/UserScript==
45 | `;
46 |
47 | export default metadata;
48 |
--------------------------------------------------------------------------------
/src/esunbank/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'esunbank';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'esunbank';
6 | module.exports.name_en = 'esunbank';
7 | module.exports.name_ja = 'esunbank';
8 |
9 | module.exports.desc = '玉山銀行';
10 | module.exports.desc_en = '玉山銀行';
11 | module.exports.desc_ja = '玉山銀行';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "esunbank/ebank"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/esunbank/esunbank/ebank');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://ebank.esunbank.com.tw/fcm/*",
33 | "http*://ebank.esunbank.com.tw/fco/*"
34 | ];
35 | module.exports.metadata.match = [];
36 | module.exports.metadata.exclude = [];
37 | module.exports.metadata.grant = [
38 | "unsafeWindow"
39 | ];
40 |
41 | module.exports.list_script = [];
42 |
43 | module.exports.current = [];
44 |
45 | module.exports.default = module.exports;
46 |
47 |
--------------------------------------------------------------------------------
/src/esunbank/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import * as userScriptCore from 'root/lib/core';
6 | import index from './index';
7 |
8 | export { index };
9 |
10 | export const id = 'esunbank';
11 | export const name = id;
12 |
13 | userScriptCore.run(id, module.exports, null, function (uxid, exports, global, window, $jq, _url)
14 | {
15 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
16 | });
17 |
--------------------------------------------------------------------------------
/src/esunbank/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '玉山銀行';
6 |
7 | export const grant = [
8 | //'GM_registerMenuCommand',
9 | //'GM_xmlhttpRequest',
10 | 'unsafeWindow',
11 | ];
12 |
13 | export const metadata = `// ==UserScript==
14 | // @name <%= index.name %>
15 | // @name:en <%= index.name_en %>
16 | // @name:zh <%= index.name %>
17 | // @namespace bluelovers
18 | // @author bluelovers
19 | //
20 | // @description <%= index.desc %>
21 | // @description:en <%= index.desc_en %>
22 | // @description:zh <%= index.desc %>
23 | //
24 | // @version <%= pkg.version %>
25 | //
26 | // @grant <%= index.grant %>
27 | // g_r_a_n_tnone
28 | //
29 | // @icon <%= index.icon %>
30 | //
31 | // noframes
32 | // @encoding utf-8
33 | //
34 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
35 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
36 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
37 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | //
39 | // @include <%= index.include %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
46 | export default metadata;
47 |
--------------------------------------------------------------------------------
/src/fuck-u-fb-share/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'fuck-u-fb-share';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'fuck-u-fb-share';
6 | module.exports.name_en = 'fuck-u-fb-share';
7 | module.exports.name_ja = 'fuck-u-fb-share';
8 |
9 | module.exports.desc = '此腳本試圖解決智障 FB 新分享機制導致的困擾 並且恢復為舊版分享 (2017-11)';
10 | module.exports.desc_en = 'this script try kill facebook new share (2017-11)';
11 | module.exports.desc_ja = '此腳本試圖解決智障 FB 新分享機制導致的困擾 並且恢復為舊版分享 (2017-11)';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "facebook/2017.11"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/fuck-u-fb-share/facebook/2017.11');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://www.facebook.com/*",
33 | "http*://facebook.com/*"
34 | ];
35 | module.exports.metadata.match = [];
36 | module.exports.metadata.exclude = [];
37 | module.exports.metadata.grant = [
38 | "unsafeWindow"
39 | ];
40 |
41 | module.exports.list_script = [];
42 |
43 | module.exports.current = [];
44 |
45 | module.exports.default = module.exports;
46 |
47 |
--------------------------------------------------------------------------------
/src/fuck-u-fb-share/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | import index from './index';
9 |
10 | module.exports.id = 'fuck-u-fb-share';
11 | module.exports.name = module.exports.id;
12 |
13 | userScriptCore.run(module.exports.id, module.exports, jQuery);
14 |
--------------------------------------------------------------------------------
/src/fuck-u-fb-share/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '此腳本試圖解決智障 FB 新分享機制導致的困擾 並且恢復為舊版分享 (2017-11)';
6 | export const desc_en = 'this script try kill facebook new share (2017-11)';
7 |
8 | export const grant = [
9 | 'unsafeWindow',
10 | ];
11 |
12 | export const metadata = `// ==UserScript==
13 | // @name <%= index.name %>
14 | // @name:en <%= index.name_en %>
15 | // @name:zh <%= index.name %>
16 | // @namespace bluelovers
17 | // @author bluelovers
18 | //
19 | // @description <%= index.desc %>
20 | // @description:en <%= index.desc_en %>
21 | // @description:zh <%= index.desc %>
22 | //
23 | // @version <%= pkg.version %>
24 | //
25 | // @grant <%= index.grant %>
26 | // g_r_a_n_tnone
27 | //
28 | // @icon <%= index.icon %>
29 | //
30 | // @noframes
31 | // @encoding utf-8
32 | //
33 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
34 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
35 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
36 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
37 | //
38 | // @include <%= index.include %>
39 | //
40 | // @exclude <%= index.exclude %>
41 | //
42 | // ==/UserScript==
43 | `;
44 |
45 | export default metadata;
46 |
--------------------------------------------------------------------------------
/src/gamer-auto-signin/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/gamer-auto-signin/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'gamer-auto-signin';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'gamer-auto-signin';
6 | module.exports.name_en = 'gamer-auto-signin';
7 | module.exports.name_ja = 'gamer-auto-signin';
8 |
9 | module.exports.desc = '自動簽到 ( 巴哈姆特 ... and other )';
10 | module.exports.desc_en = '自動簽到 ( 巴哈姆特 ... and other )';
11 | module.exports.desc_ja = '自動簽到 ( 巴哈姆特 ... and other )';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "gamer/ajax",
20 | "novel/sfacg"
21 | ];
22 |
23 | module.exports.list_disable = [];
24 |
25 | // for webpack, don't use this method
26 | module.exports._lib = () =>
27 | {
28 | require('root/src/gamer-auto-signin/gamer/ajax');
29 | require('root/src/gamer-auto-signin/novel/sfacg');
30 | };
31 |
32 | module.exports.metadata = {};
33 | module.exports.metadata.include = [
34 | "*://*.sfacg.com/*",
35 | "*://book.sfacg.com/signin/*"
36 | ];
37 | module.exports.metadata.match = [
38 | "*://www.gamer.com.tw/*",
39 | "*://forum.gamer.com.tw/*",
40 | "*://home.gamer.com.tw/creationDetail.php*",
41 | "*://gnn.gamer.com.tw/*",
42 | "*://ani.gamer.com.tw/*",
43 | "*://acg.gamer.com.tw/*"
44 | ];
45 | module.exports.metadata.exclude = [
46 | "*://*.sfacg.com/ajax*"
47 | ];
48 | module.exports.metadata.grant = [
49 | "GM.deleteValue",
50 | "GM.getValue",
51 | "GM.listValues",
52 | "GM.registerMenuCommand",
53 | "GM.setValue",
54 | "GM.unregisterMenuCommand",
55 | "GM.xmlhttpRequest",
56 | "GM_deleteValue",
57 | "GM_getValue",
58 | "GM_listValues",
59 | "GM_registerMenuCommand",
60 | "GM_setValue",
61 | "GM_unregisterMenuCommand",
62 | "GM_xmlhttpRequest"
63 | ];
64 |
65 | module.exports.list_script = [];
66 |
67 | module.exports.current = [];
68 |
69 | module.exports.default = module.exports;
70 |
71 |
--------------------------------------------------------------------------------
/src/gamer-auto-signin/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import * as userScriptCore from 'root/lib/core';
6 | import index from './index';
7 |
8 | module.exports.id = 'gamer-auto-signin';
9 | module.exports.name = module.exports.id;
10 |
11 | userScriptCore.run(module.exports.id, module.exports, null, function (uxid, exports, global, window, $jq, _url)
12 | {
13 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
14 |
15 | /*
16 |
17 | const UF = require('root/lib/greasemonkey/gm');
18 |
19 | UF.registerMenuCommand({
20 | id: exports.name,
21 | key: 'gamer signin',
22 | }, async (options) =>
23 | {
24 | const signin = require('root/lib/site/gamer/signin').default;
25 |
26 | await signin(true)
27 | .catch(err => console.error('[簽到錯誤]', err))
28 | ;
29 | });
30 |
31 | */
32 | });
33 |
--------------------------------------------------------------------------------
/src/gamer-auto-signin/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '自動簽到 ( 巴哈姆特 ... and other )';
6 |
7 | export const grant = [
8 | 'GM_registerMenuCommand',
9 | 'GM_xmlhttpRequest',
10 | 'GM_getValue',
11 | ];
12 |
13 | export const metadata = `// ==UserScript==
14 | // @name <%= index.name %>
15 | // @name:en <%= index.name_en %>
16 | // @name:zh <%= index.name %>
17 | // @namespace bluelovers
18 | // @author bluelovers
19 | //
20 | // @description <%= index.desc %>
21 | // @description:en <%= index.desc_en %>
22 | // @description:zh <%= index.desc %>
23 | //
24 | // @version <%= pkg.version %>
25 | //
26 | // @grant <%= index.grant %>
27 | // g_r_a_n_tnone
28 | //
29 | // @icon <%= index.icon %>
30 | //
31 | // @noframes
32 | // @encoding utf-8
33 | //
34 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
35 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
36 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
37 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | //
39 | // @include <%= index.include %>
40 | //
41 | // @match <%= index.match %>
42 | //
43 | // @exclude <%= index.exclude %>
44 | //
45 | // ==/UserScript==
46 | `;
47 |
48 | export default metadata;
49 |
--------------------------------------------------------------------------------
/src/gitee-plus/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/gitee-plus/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'gitee-plus';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'gitee-plus';
6 | module.exports.name_en = 'gitee-plus';
7 | module.exports.name_ja = 'gitee-plus';
8 |
9 | module.exports.desc = '於 Gitee 碼雲 增加一點小功能';
10 | module.exports.desc_en = '於 Gitee 碼雲 增加一點小功能';
11 | module.exports.desc_ja = '於 Gitee 碼雲 增加一點小功能';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "base/gitee-plus"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/gitee-plus/base/gitee-plus');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://gitee.com/*",
33 | "http*://gitee.com/api/*",
34 | "http*://gitee.com/oauth/applications/*",
35 | "http*://m.gitee.com/*"
36 | ];
37 | module.exports.metadata.match = [];
38 | module.exports.metadata.exclude = [];
39 | module.exports.metadata.grant = [
40 | "GM.deleteValue",
41 | "GM.getValue",
42 | "GM.listValues",
43 | "GM.registerMenuCommand",
44 | "GM.setValue",
45 | "GM.unregisterMenuCommand",
46 | "GM.xmlhttpRequest",
47 | "GM_deleteValue",
48 | "GM_getValue",
49 | "GM_listValues",
50 | "GM_registerMenuCommand",
51 | "GM_setValue",
52 | "GM_unregisterMenuCommand",
53 | "GM_xmlhttpRequest",
54 | "unsafeWindow"
55 | ];
56 |
57 | module.exports.list_script = [];
58 |
59 | module.exports.current = [];
60 |
61 | module.exports.default = module.exports;
62 |
63 |
--------------------------------------------------------------------------------
/src/gitee-plus/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 | });
20 |
--------------------------------------------------------------------------------
/src/gitee-plus/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '於 Gitee 碼雲 增加一點小功能';
6 | export const desc_en = desc;
7 |
8 | export const icon = '';
9 |
10 | export const grant = [
11 | 'GM_registerMenuCommand',
12 | 'GM_xmlhttpRequest',
13 | 'unsafeWindow',
14 | 'GM_deleteValue',
15 | 'GM_getValue',
16 | 'GM_listValues',
17 | 'GM_setValue',
18 | ];
19 |
20 | /**
21 | * <%= token %>
22 | *
23 | * @type {string}
24 | */
25 | export const metadata = `// ==UserScript==
26 | // @name <%= index.id %>
27 | // @name:en <%= index.name_en %>
28 | // @name:zh <%= index.name %>
29 | // @namespace <%= index.namespace %>
30 | // @author <%= index.author %>
31 | //
32 | // @description <%= index.desc %>
33 | // @description:en <%= index.desc_en %>
34 | // @description:zh <%= index.desc %>
35 | //
36 | // @version <%= pkg.version %>
37 | //
38 | // @grant <%= index.grant %>
39 | // g_r_a_n_tnone
40 | //
41 | // @icon <%= index.icon %>
42 | //
43 | // noframes
44 | // @encoding utf-8
45 | //
46 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
47 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
48 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
49 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
50 | //
51 | // @include <%= index.include %>
52 | //
53 | // @match <%= index.match %>
54 | //
55 | // @exclude <%= index.exclude %>
56 | //
57 | // ==/UserScript==
58 | `;
59 |
60 | export default metadata;
61 |
--------------------------------------------------------------------------------
/src/masiro-moe/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/masiro-moe/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'masiro-moe';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'masiro-moe';
6 | module.exports.name_en = 'masiro-moe';
7 | module.exports.name_ja = 'masiro-moe';
8 |
9 | module.exports.desc = '';
10 | module.exports.desc_en = '';
11 | module.exports.desc_ja = '';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "base/masiro-moe"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/masiro-moe/base/masiro-moe');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://masiro.moe/*",
33 | "http*://masiro.moe/*mod=viewthread*"
34 | ];
35 | module.exports.metadata.match = [];
36 | module.exports.metadata.exclude = [];
37 | module.exports.metadata.grant = [
38 | "GM.deleteValue",
39 | "GM.getValue",
40 | "GM.listValues",
41 | "GM.openInTab",
42 | "GM.registerMenuCommand",
43 | "GM.setValue",
44 | "GM.unregisterMenuCommand",
45 | "GM.xmlhttpRequest",
46 | "GM_deleteValue",
47 | "GM_getValue",
48 | "GM_listValues",
49 | "GM_openInTab",
50 | "GM_registerMenuCommand",
51 | "GM_setValue",
52 | "GM_unregisterMenuCommand",
53 | "GM_xmlhttpRequest",
54 | "unsafeWindow"
55 | ];
56 |
57 | module.exports.list_script = [];
58 |
59 | module.exports.current = [];
60 |
61 | module.exports.default = module.exports;
62 |
63 |
--------------------------------------------------------------------------------
/src/masiro-moe/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 | });
20 |
--------------------------------------------------------------------------------
/src/masiro-moe/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '';
6 | export const desc_en = desc;
7 |
8 | export const icon = '';
9 |
10 | export const grant = [
11 | 'GM_registerMenuCommand',
12 | 'GM_xmlhttpRequest',
13 | 'GM_getValue',
14 | ];
15 |
16 | /**
17 | * <%= token %>
18 | *
19 | * @type {string}
20 | */
21 | export const metadata = `// ==UserScript==
22 | // @name <%= index.id %>
23 | // @name:en <%= index.name_en %>
24 | // @name:ja <%= index.name_ja %>
25 | // @name:zh <%= index.name %>
26 | // @namespace <%= index.namespace %>
27 | // @author <%= index.author %>
28 | //
29 | // @description <%= index.desc %>
30 | // @description:en <%= index.desc_en %>
31 | // @description:ja <%= index.desc_ja %>
32 | // @description:zh <%= index.desc %>
33 | //
34 | // @version <%= pkg.version %>
35 | //
36 | // @grant <%= index.grant %>
37 | // g_r_a_n_tnone
38 | //
39 | // @icon <%= index.icon %>
40 | //
41 | // noframes
42 | // @encoding utf-8
43 | //
44 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
45 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
46 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
47 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
48 | //
49 | // @include <%= index.include %>
50 | //
51 | // @match <%= index.match %>
52 | //
53 | // @exclude <%= index.exclude %>
54 | //
55 | // ==/UserScript==
56 | `;
57 |
58 | export default metadata;
59 |
--------------------------------------------------------------------------------
/src/mastodon-plus/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/mastodon-plus/base/mastodon-plus.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://mastodon.social/*',
23 | 'http*://g0v.social/*',
24 | 'http*://pawoo.net/*',
25 | 'http*://music.pawoo.net/*',
26 | 'http*://friends.nico/*',
27 | 'http*://cmx.im/*',
28 | ],
29 | match: [],
30 | nomatch: [],
31 | exclude: [],
32 |
33 | grant: [],
34 | },
35 |
36 | test(_url_obj = global._url_obj)
37 | {
38 | let ret;
39 |
40 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
41 | {
42 | return true;
43 | }
44 |
45 | return false;
46 | },
47 |
48 | async main(_url_obj = global._url_obj)
49 | {
50 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
51 | _uf_dom_filter_link([
52 | //
53 | ])
54 | .prop('target', '_blank')
55 | ;
56 |
57 | console.log(7777777);
58 | },
59 |
60 | adblock(_url_obj = global._url_obj)
61 | {
62 | //
63 | },
64 |
65 | clearly(_url_obj = global._url_obj, _dom_list = null)
66 | {
67 | let _dom = $(_dom_list);
68 |
69 | _dom = _dom
70 | .add([
71 | //
72 | ].join())
73 | ;
74 |
75 | return _dom;
76 | },
77 |
78 | };
79 |
80 | export = o as IDemo;
81 |
--------------------------------------------------------------------------------
/src/mastodon-plus/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'mastodon-plus';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'mastodon-plus';
6 | module.exports.name_en = 'mastodon-plus';
7 | module.exports.name_ja = 'mastodon-plus';
8 |
9 | module.exports.desc = '';
10 | module.exports.desc_en = '';
11 | module.exports.desc_ja = '';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "base/mastodon-plus",
20 | "global/profile"
21 | ];
22 |
23 | module.exports.list_disable = [];
24 |
25 | // for webpack, don't use this method
26 | module.exports._lib = () =>
27 | {
28 | require('root/src/mastodon-plus/base/mastodon-plus');
29 | require('root/src/mastodon-plus/global/profile');
30 | };
31 |
32 | module.exports.metadata = {};
33 | module.exports.metadata.include = [
34 | "http*://mastodon.social/*",
35 | "http*://g0v.social/*",
36 | "http*://pawoo.net/*",
37 | "http*://music.pawoo.net/*",
38 | "http*://friends.nico/*",
39 | "http*://cmx.im/*"
40 | ];
41 | module.exports.metadata.match = [];
42 | module.exports.metadata.exclude = [];
43 | module.exports.metadata.grant = [];
44 |
45 | module.exports.list_script = [
46 | "global/profile"
47 | ];
48 |
49 | module.exports.current = [];
50 |
51 | module.exports.default = module.exports;
52 |
53 |
--------------------------------------------------------------------------------
/src/mastodon-plus/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 | });
20 |
--------------------------------------------------------------------------------
/src/mastodon-plus/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '';
6 | export const desc_en = desc;
7 |
8 | export const icon = '';
9 |
10 | export const grant = [
11 | //
12 | ];
13 |
14 | /**
15 | * <%= token %>
16 | *
17 | * @type {string}
18 | */
19 | export const metadata = `// ==UserScript==
20 | // @name <%= index.id %>
21 | // @name:en <%= index.name_en %>
22 | // @name:zh <%= index.name %>
23 | // @namespace <%= index.namespace %>
24 | // @author <%= index.author %>
25 | //
26 | // @description <%= index.desc %>
27 | // @description:en <%= index.desc_en %>
28 | // @description:zh <%= index.desc %>
29 | //
30 | // @version <%= pkg.version %>
31 | //
32 | // @grant <%= index.grant %>
33 | // g_r_a_n_tnone
34 | //
35 | // @icon <%= index.icon %>
36 | //
37 | // noframes
38 | // @encoding utf-8
39 | //
40 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
41 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
42 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
43 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
44 | //
45 | // @include <%= index.include %>
46 | //
47 | // @match <%= index.match %>
48 | //
49 | // @exclude <%= index.exclude %>
50 | //
51 | // ==/UserScript==
52 | `;
53 |
54 | export default metadata;
55 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'novel-plus-sc';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'novel-plus-sc';
6 | module.exports.name_en = 'novel-plus-sc';
7 | module.exports.name_ja = 'novel-plus-sc';
8 |
9 | module.exports.desc = '部分小說網站重新排版、修正文字,改變閱讀樣式';
10 | module.exports.desc_en = '部分小說網站重新排版、修正文字,改變閱讀樣式';
11 | module.exports.desc_ja = '部分小說網站重新排版、修正文字,改變閱讀樣式';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "site/baidu/tieba",
20 | "site/dmzj",
21 | "site/gamer/home",
22 | "site/lightnovel/discuz",
23 | "site/sfacg/book"
24 | ];
25 |
26 | module.exports.list_disable = [
27 | "site/syosetu"
28 | ];
29 |
30 | // for webpack, don't use this method
31 | module.exports._lib = () =>
32 | {
33 | require('root/src/novel-plus-sc/site/baidu/tieba');
34 | require('root/src/novel-plus-sc/site/dmzj');
35 | require('root/src/novel-plus-sc/site/gamer/home');
36 | require('root/src/novel-plus-sc/site/lightnovel/discuz');
37 | require('root/src/novel-plus-sc/site/sfacg/book');
38 | };
39 |
40 | module.exports.metadata = {};
41 | module.exports.metadata.include = [
42 | "http*://q.dmzj.com/*"
43 | ];
44 | module.exports.metadata.match = [
45 | "*://tieba.baidu.com/*",
46 | "*://q.dmzj.com/*",
47 | "*://home.gamer.com.tw/creationDetail.php*",
48 | "*://www.lightnovel.cn/*",
49 | "*://book.sfacg.com/Novel/*"
50 | ];
51 | module.exports.metadata.exclude = [];
52 | module.exports.metadata.grant = [
53 | "GM.deleteValue",
54 | "GM.getValue",
55 | "GM.listValues",
56 | "GM.registerMenuCommand",
57 | "GM.setValue",
58 | "GM.unregisterMenuCommand",
59 | "GM.xmlhttpRequest",
60 | "GM_deleteValue",
61 | "GM_getValue",
62 | "GM_listValues",
63 | "GM_registerMenuCommand",
64 | "GM_setValue",
65 | "GM_unregisterMenuCommand",
66 | "GM_xmlhttpRequest",
67 | "unsafeWindow"
68 | ];
69 |
70 | module.exports.list_script = [];
71 |
72 | module.exports.current = [];
73 |
74 | module.exports.default = module.exports;
75 |
76 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 |
20 | _init_gm();
21 | });
22 |
23 | function _init_gm()
24 | {
25 | const UF = require('root/lib/greasemonkey/gm/menu');
26 |
27 | UF.registerMenuCommand({
28 | id: module.exports.name,
29 | key: 'redo',
30 | }, async (options) =>
31 | {
32 | let index = require(`root/src/${module.exports.id}`);
33 |
34 | if (index.current && index.current.length)
35 | {
36 | const label = UF.getLabel(options);
37 |
38 | let _dom = $();
39 |
40 | let temp = null;
41 |
42 | let list_script = index.current;
43 |
44 | {
45 | let a = [];
46 | for (let current of list_script)
47 | {
48 | if (a.includes(current.name))
49 | {
50 | continue;
51 | }
52 |
53 | a.push(current.name);
54 |
55 | for (let fn of ['adblock'])
56 | {
57 | if (typeof current.lib[fn] == 'function')
58 | {
59 | // @ts-ignore
60 | let ret = await current.lib[fn](global._url_obj, _dom);
61 |
62 | if (ret && ret !== true)
63 | {
64 | if (fn == 'clearly')
65 | {
66 | //_dom = _dom.add(ret);
67 |
68 | if (ret.length)
69 | {
70 | // allow remove dom from list
71 | // need update clearly
72 | _dom = ret;
73 | }
74 |
75 | //console.log(777, [ret.length, ret], [_dom.length, _dom]);
76 | }
77 |
78 | console.info(label, current.name, fn, [ret.length, ret], [_dom.length, _dom]);
79 | }
80 | }
81 | }
82 | }
83 | }
84 |
85 | console.info(label, [_dom.length, _dom]);
86 |
87 | _dom
88 | .remove()
89 | ;
90 | }
91 | });
92 | }
93 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '部分小說網站重新排版、修正文字,改變閱讀樣式';
6 |
7 | export const grant = [
8 | 'GM_registerMenuCommand',
9 | 'GM_xmlhttpRequest',
10 | 'unsafeWindow',
11 | 'GM_getValue',
12 | ];
13 |
14 | export const metadata = `// ==UserScript==
15 | // @name <%= index.name %>
16 | // @name:en <%= index.name_en %>
17 | // @name:zh <%= index.name %>
18 | // @namespace bluelovers
19 | // @author bluelovers
20 | //
21 | // @description <%= index.desc %>
22 | // @description:en <%= index.desc_en %>
23 | // @description:zh <%= index.desc %>
24 | //
25 | // @version <%= pkg.version %>
26 | //
27 | // @grant <%= index.grant %>
28 | // g_r_a_n_tnone
29 | //
30 | // @icon <%= index.icon %>
31 | //
32 | // @noframes
33 | // @encoding utf-8
34 | //
35 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
36 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
37 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
39 | //
40 | // @include <%= index.include %>
41 | //
42 | // @match <%= index.match %>
43 | //
44 | // @exclude <%= index.exclude %>
45 | //
46 | // ==/UserScript==
47 | `;
48 |
49 | export default metadata;
50 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/site/gamer/home.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/5/005.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | metadata: {
19 | include: [
20 |
21 | ],
22 | match: [
23 | '*://home.gamer.com.tw/creationDetail.php*',
24 | ],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | //
48 | ].join(','))
49 | .prop('target', '_blank')
50 | ;
51 |
52 | greasemonkey.addStylesheet(require('root/lib/comic/font').font.NotoSansSC);
53 |
54 | greasemonkey
55 | .GM_addStyle([
56 | `#BH-master .MSG-list8 h1, #BH-master .MSG-list8C { font-family: Consolas, Noto Sans SC, Microsoft Yahei UI, sans-serif; }`,
57 |
58 | `#BH-master .MSG-list8C { line-height: 1.25em; }`,
59 | ])
60 | ;
61 | },
62 |
63 | adblock(_url_obj = global._url_obj)
64 | {
65 |
66 | },
67 |
68 | clearly(_url_obj = global._url_obj, _dom_list = null)
69 | {
70 | let _dom = $(_dom_list);
71 |
72 | _dom = _dom
73 | .add([
74 | //
75 | ].join())
76 | ;
77 |
78 | return _dom;
79 | },
80 |
81 | };
82 |
83 | export = o as IDemo;
84 |
85 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/site/lightnovel/discuz.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/5/005.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | //
23 | ],
24 | match: [
25 | '*://www.lightnovel.cn/*',
26 | ],
27 | nomatch: [],
28 | exclude: [],
29 |
30 | grant: [],
31 | },
32 |
33 | test(_url_obj = global._url_obj)
34 | {
35 | let ret;
36 |
37 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
38 | {
39 | return true;
40 | }
41 |
42 | return false;
43 | },
44 |
45 | async main(_url_obj = global._url_obj)
46 | {
47 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
48 | _uf_dom_filter_link([
49 | //
50 | ].join(','))
51 | .prop('target', '_blank')
52 | ;
53 |
54 | greasemonkey
55 | .GM_addStyle([
56 | `#thread_subject, .t_f[id] {
57 | font-family: Consolas, Noto Sans SC, Noto Sans CJK SC, Noto Sans CJK, Microsoft Yahei UI, sans-serif;
58 | text-shadow: 0 0.5px 0 rgba(228, 228, 228, 0.8), 0 0 1px rgba(0, 0, 0, 0.75);
59 | }`,
60 |
61 | `#thread_subject, .t_f[id] { font-size: 14px !important; line-height: 1.45em !important; }`,
62 | ])
63 | ;
64 |
65 |
66 | },
67 |
68 | adblock(_url_obj = global._url_obj)
69 | {
70 |
71 | },
72 |
73 | clearly(_url_obj = global._url_obj, _dom_list = null)
74 | {
75 | let _dom = $(_dom_list);
76 |
77 | _dom = _dom
78 | .add([
79 | //
80 | ].join())
81 | ;
82 |
83 | return _dom;
84 | },
85 |
86 | };
87 |
88 | export = o as IDemo;
89 |
90 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/site/sfacg/book.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/6/006.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | metadata: {
19 | include: [],
20 | match: [
21 | '*://book.sfacg.com/Novel/*',
22 | ],
23 | nomatch: [],
24 | exclude: [],
25 |
26 | grant: [],
27 | },
28 |
29 | test(_url_obj = global._url_obj)
30 | {
31 | let ret;
32 |
33 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
34 | {
35 | return true;
36 | }
37 |
38 | return false;
39 | },
40 |
41 | async main(_url_obj = global._url_obj)
42 | {
43 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
44 | _uf_dom_filter_link([
45 | //
46 | ].join(','))
47 | .prop('target', '_blank')
48 | ;
49 |
50 | greasemonkey.addStylesheet(require('root/lib/comic/font').font.NotoSansSC);
51 |
52 | greasemonkey
53 | .GM_addStyle([
54 | `#ChapterBody {
55 | font-family: Consolas, Noto Sans SC, Microsoft Yahei UI, sans-serif;
56 | text-shadow: 0 0.5px 0 rgba(228, 228, 228, 0.8), 0 0 1px rgba(0, 0, 0, 0.75);
57 | }`,
58 | //`#ChapterBody, .article-wrap .article-content p { line-height: 1.25em; }`,
59 | ], 'body')
60 | ;
61 | },
62 |
63 | adblock(_url_obj = global._url_obj)
64 | {
65 |
66 | },
67 |
68 | clearly(_url_obj = global._url_obj, _dom_list = null)
69 | {
70 | let _dom = $(_dom_list);
71 |
72 | _dom = _dom
73 | .add([
74 | //
75 | ].join())
76 | ;
77 |
78 | return _dom;
79 | },
80 |
81 | };
82 |
83 | export = o as IDemo;
84 |
85 |
--------------------------------------------------------------------------------
/src/novel-plus-sc/site/syosetu.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/5/005.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | disable: true,
21 |
22 | metadata: {
23 | include: [
24 | //
25 | ],
26 | match: [
27 | '*://*.syosetu.com/*',
28 | ],
29 | nomatch: [],
30 | exclude: [],
31 |
32 | grant: [],
33 | },
34 |
35 | test(_url_obj = global._url_obj)
36 | {
37 | let ret;
38 |
39 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
40 | {
41 | return true;
42 | }
43 |
44 | return false;
45 | },
46 |
47 | async main(_url_obj = global._url_obj)
48 | {
49 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
50 | _uf_dom_filter_link([
51 | //
52 | ].join(','))
53 | .prop('target', '_blank')
54 | ;
55 |
56 | greasemonkey
57 | .GM_addStyle([
58 | //`#novel_honbun, .novel_view, #novel_ex, .novel_sublist2 { font-family: "メイリオ","IPAexゴシック","IPAゴシック","MS ゴシック","SimSun",monospace; }`,
59 |
60 | //`#novel_honbun, .novel_view { line-height: 1.6em !important; }`,
61 | ])
62 | ;
63 |
64 | },
65 |
66 | adblock(_url_obj = global._url_obj)
67 | {
68 |
69 | },
70 |
71 | clearly(_url_obj = global._url_obj, _dom_list = null)
72 | {
73 | let _dom = $(_dom_list);
74 |
75 | _dom = _dom
76 | .add([
77 | //
78 | ].join())
79 | ;
80 |
81 | return _dom;
82 | },
83 |
84 | };
85 |
86 | export = o as IDemo;
87 |
88 |
--------------------------------------------------------------------------------
/src/pan-baidu-block-or-expire/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/pan-baidu-block-or-expire/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'pan-baidu-block-or-expire';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'pan-baidu-block-or-expire';
6 | module.exports.name_en = 'pan-baidu-block-or-expire';
7 | module.exports.name_ja = 'pan-baidu-block-or-expire';
8 |
9 | module.exports.desc = '輔助判斷百度盤是封鎖還是過期';
10 | module.exports.desc_en = '輔助判斷百度盤是封鎖還是過期';
11 | module.exports.desc_ja = '輔助判斷百度盤是封鎖還是過期';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "site/pan.baidu"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/pan-baidu-block-or-expire/site/pan.baidu');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://pan.baidu.com/s/*",
33 | "http*://pan.baidu.com/error/*",
34 | "http*://pan.baidu.com/wap/error*"
35 | ];
36 | module.exports.metadata.match = [
37 | "*://pan.baidu.com/wap/error"
38 | ];
39 | module.exports.metadata.exclude = [];
40 | module.exports.metadata.grant = [];
41 |
42 | module.exports.list_script = [];
43 |
44 | module.exports.current = [];
45 |
46 | module.exports.default = module.exports;
47 |
48 |
--------------------------------------------------------------------------------
/src/pan-baidu-block-or-expire/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import * as userScriptCore from 'root/lib/core';
6 | import index from './index';
7 |
8 | module.exports.id = index.id;
9 | module.exports.name = module.exports.id;
10 |
11 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
12 | {
13 | //require('root/lib/jquery/scrollTo').makeJQueryPlugin($jq);
14 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
15 | });
16 |
--------------------------------------------------------------------------------
/src/pan-baidu-block-or-expire/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '輔助判斷百度盤是封鎖還是過期';
6 |
7 | export const grant = [
8 |
9 | ];
10 |
11 | export const metadata = `// ==UserScript==
12 | // @name <%= index.name %>
13 | // @name:en <%= index.name_en %>
14 | // @name:zh <%= index.name %>
15 | // @namespace bluelovers
16 | // @author bluelovers
17 | //
18 | // @description <%= index.desc %>
19 | // @description:en <%= index.desc_en %>
20 | // @description:zh <%= index.desc %>
21 | //
22 | // @version <%= pkg.version %>
23 | //
24 | // @grant <%= index.grant %>
25 | // g_r_a_n_tnone
26 | //
27 | // @icon <%= index.icon %>
28 | //
29 | // @noframes
30 | // @encoding utf-8
31 | //
32 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
33 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
34 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
35 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
36 | //
37 | // @include <%= index.include %>
38 | //
39 | // @match <%= index.match %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
46 | export default metadata;
47 |
--------------------------------------------------------------------------------
/src/pan-baidu-download/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/pan-baidu-download/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'pan-baidu-download';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'pan-baidu-download';
6 | module.exports.name_en = 'pan-baidu-download';
7 | module.exports.name_ja = 'pan-baidu-download';
8 |
9 | module.exports.desc = '直接下载百度网盘和百度网盘分享的文件,避免下载文件时调用百度网盘客户端,获取网盘文件的直接下载地址';
10 | module.exports.desc_en = '直接下载百度网盘和百度网盘分享的文件,避免下载文件时调用百度网盘客户端,获取网盘文件的直接下载地址';
11 | module.exports.desc_ja = '直接下载百度网盘和百度网盘分享的文件,避免下载文件时调用百度网盘客户端,获取网盘文件的直接下载地址';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "site/pan.baidu"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/pan-baidu-download/site/pan.baidu');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://pan.baidu.com/s/*"
33 | ];
34 | module.exports.metadata.match = [
35 | "*://pan.baidu.com/disk/home*",
36 | "*://yun.baidu.com/disk/home*",
37 | "*://pan.baidu.com/s/*",
38 | "*://yun.baidu.com/s/*",
39 | "*://pan.baidu.com/share/link*",
40 | "*://yun.baidu.com/share/link*"
41 | ];
42 | module.exports.metadata.exclude = [];
43 | module.exports.metadata.grant = [
44 | "GM.setClipboard",
45 | "GM_setClipboard",
46 | "unsafeWindow"
47 | ];
48 |
49 | module.exports.list_script = [];
50 |
51 | module.exports.current = [];
52 |
53 | module.exports.default = module.exports;
54 |
55 |
--------------------------------------------------------------------------------
/src/pan-baidu-download/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import * as userScriptCore from 'root/lib/core';
6 | import index from './index';
7 |
8 | module.exports.id = index.id;
9 | module.exports.name = module.exports.id;
10 |
11 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
12 | {
13 | //require('root/lib/jquery/scrollTo').makeJQueryPlugin($jq);
14 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
15 | });
16 |
--------------------------------------------------------------------------------
/src/pan-baidu-download/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '直接下载百度网盘和百度网盘分享的文件,避免下载文件时调用百度网盘客户端,获取网盘文件的直接下载地址';
6 |
7 | export const grant = [
8 |
9 | ];
10 |
11 | export const metadata = `// ==UserScript==
12 | // @name <%= index.name %>
13 | // @name:en <%= index.name_en %>
14 | // @name:zh <%= index.name %>
15 | // @namespace bluelovers
16 | // @author bluelovers
17 | //
18 | // @description <%= index.desc %>
19 | // @description:en <%= index.desc_en %>
20 | // @description:zh <%= index.desc %>
21 | //
22 | // @version <%= pkg.version %>
23 | //
24 | // @grant <%= index.grant %>
25 | // g_r_a_n_tnone
26 | //
27 | // @icon <%= index.icon %>
28 | //
29 | // @noframes
30 | // @encoding utf-8
31 | //
32 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
33 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
34 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
35 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
36 | //
37 | // @include <%= index.include %>
38 | //
39 | // @match <%= index.match %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
46 | export default metadata;
47 |
--------------------------------------------------------------------------------
/src/pan-baidu-download/site/pan.baidu.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | metadata: {
19 | include: [
20 | 'http*://pan.baidu.com/s/*',
21 | ],
22 | match: [
23 | '*://pan.baidu.com/disk/home*',
24 | '*://yun.baidu.com/disk/home*',
25 | '*://pan.baidu.com/s/*',
26 | '*://yun.baidu.com/s/*',
27 | '*://pan.baidu.com/share/link*',
28 | '*://yun.baidu.com/share/link*',
29 | ],
30 | nomatch: [],
31 | exclude: [],
32 |
33 | grant: [
34 | 'GM_setClipboard',
35 | 'unsafeWindow',
36 | ],
37 | },
38 |
39 | test(_url_obj = global._url_obj)
40 | {
41 | let ret;
42 |
43 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
44 | {
45 | return true;
46 | }
47 |
48 | return false;
49 | },
50 |
51 | async main(_url_obj = global._url_obj)
52 | {
53 | /**
54 | * https://greasyfork.org/zh-TW/forum/discussion/35536/x
55 | */
56 | let { detectPage, PanHelper, PanShareHelper, init } = require('root/lib/site/baidu/pan/index');
57 |
58 | $(function(){
59 | init($, _url_obj);
60 | });
61 | },
62 |
63 | adblock(_url_obj = global._url_obj)
64 | {
65 | },
66 |
67 | clearly(_url_obj = global._url_obj, _dom_list = null)
68 | {
69 | let _dom = $(_dom_list);
70 |
71 | _dom = _dom
72 | .add([
73 |
74 | ].join())
75 | ;
76 |
77 | return _dom;
78 | },
79 |
80 | };
81 |
82 | export = o as IDemo;
83 |
--------------------------------------------------------------------------------
/src/shimo-im-discuz/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/shimo-im-discuz/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'shimo-im-discuz';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'shimo-im-discuz';
6 | module.exports.name_en = 'shimo-im-discuz';
7 | module.exports.name_ja = 'shimo-im-discuz';
8 |
9 | module.exports.desc = '暴力複製破壞石墨網頁讓他可以正常複製格式到 discuz 論壇';
10 | module.exports.desc_en = '暴力複製破壞石墨網頁讓他可以正常複製格式到 discuz 論壇';
11 | module.exports.desc_ja = '暴力複製破壞石墨網頁讓他可以正常複製格式到 discuz 論壇';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "base/shimo-im-discuz"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/shimo-im-discuz/base/shimo-im-discuz');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://shimo.im/docs/*"
33 | ];
34 | module.exports.metadata.match = [];
35 | module.exports.metadata.exclude = [];
36 | module.exports.metadata.grant = [
37 | "GM.registerMenuCommand",
38 | "GM.unregisterMenuCommand",
39 | "GM_registerMenuCommand",
40 | "GM_unregisterMenuCommand"
41 | ];
42 |
43 | module.exports.list_script = [];
44 |
45 | module.exports.current = [];
46 |
47 | module.exports.default = module.exports;
48 |
49 |
--------------------------------------------------------------------------------
/src/shimo-im-discuz/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | // @ts-ignore
9 | import * as index from './index';
10 |
11 | module.exports.id = index.id;
12 | module.exports.name = index.name;
13 |
14 | module.exports.indexScript = index;
15 |
16 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
17 | {
18 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
19 | });
20 |
--------------------------------------------------------------------------------
/src/shimo-im-discuz/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '暴力複製破壞石墨網頁讓他可以正常複製格式到 discuz 論壇';
6 | export const desc_en = desc;
7 |
8 | export const icon = '';
9 |
10 | export const grant = [
11 | //
12 | 'GM_registerMenuCommand',
13 | ];
14 |
15 | /**
16 | * <%= token %>
17 | *
18 | * @type {string}
19 | */
20 | export const metadata = `// ==UserScript==
21 | // @name <%= index.id %>
22 | // @name:en <%= index.name_en %>
23 | // @name:ja <%= index.name_ja %>
24 | // @name:zh <%= index.name %>
25 | // @namespace <%= index.namespace %>
26 | // @author <%= index.author %>
27 | //
28 | // @description <%= index.desc %>
29 | // @description:en <%= index.desc_en %>
30 | // @description:ja <%= index.desc_ja %>
31 | // @description:zh <%= index.desc %>
32 | //
33 | // @version <%= pkg.version %>
34 | //
35 | // @grant <%= index.grant %>
36 | // g_r_a_n_tnone
37 | //
38 | // @icon <%= index.icon %>
39 | //
40 | // noframes
41 | // @encoding utf-8
42 | //
43 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
44 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
45 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
46 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
47 | //
48 | // @include <%= index.include %>
49 | //
50 | // @match <%= index.match %>
51 | //
52 | // @exclude <%= index.exclude %>
53 | //
54 | // ==/UserScript==
55 | `;
56 |
57 | export default metadata;
58 |
--------------------------------------------------------------------------------
/src/syosetu-list-number/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'syosetu-list-number';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'syosetu-list-number';
6 | module.exports.name_en = 'syosetu-list-number';
7 | module.exports.name_ja = 'syosetu-list-number';
8 |
9 | module.exports.desc = 'syosetu-list-number 讓小說家的章節顯示序列 (支援手機版)';
10 | module.exports.desc_en = 'syosetu-list-number 讓小說家的章節顯示序列 (支援手機版)';
11 | module.exports.desc_ja = 'syosetu-list-number 小説家になろう 章の表示順序';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "site/kakuyomu.jp",
20 | "site/mitemin",
21 | "site/syosetu"
22 | ];
23 |
24 | module.exports.list_disable = [];
25 |
26 | // for webpack, don't use this method
27 | module.exports._lib = () =>
28 | {
29 | require('root/src/syosetu-list-number/site/kakuyomu.jp');
30 | require('root/src/syosetu-list-number/site/mitemin');
31 | require('root/src/syosetu-list-number/site/syosetu');
32 | };
33 |
34 | module.exports.metadata = {};
35 | module.exports.metadata.include = [
36 | "http*://kakuyomu.jp/works*",
37 | "http*://kakuyomu.jp/works*/*/episodes/*",
38 | "http*://kakuyomu.jp/*",
39 | "http*://*.mitemin.net/*",
40 | "http*://syosetu.com/*",
41 | "http*://ncode.syosetu.com/*"
42 | ];
43 | module.exports.metadata.match = [
44 | "*://nl.syosetu.com/*",
45 | "*://ncode.syosetu.com/*",
46 | "*://novel18.syosetu.com/*",
47 | "*://nkx.syosetu.com/*"
48 | ];
49 | module.exports.metadata.exclude = [];
50 | module.exports.metadata.grant = [
51 | "GM.setClipboard",
52 | "GM_setClipboard"
53 | ];
54 |
55 | module.exports.list_script = [];
56 |
57 | module.exports.current = [];
58 |
59 | module.exports.default = module.exports;
60 |
61 |
--------------------------------------------------------------------------------
/src/syosetu-list-number/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | // @ts-ignore
6 | import * as userScriptCore from 'root/lib/core';
7 | import index from './index';
8 |
9 | module.exports.id = index.id;
10 | module.exports.name = module.exports.id;
11 |
12 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
13 | {
14 | require('root/lib/jquery/scrollTo').makeJQueryPlugin($jq);
15 | require('imagesloaded').makeJQueryPlugin($jq);
16 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
17 | });
18 |
--------------------------------------------------------------------------------
/src/syosetu-list-number/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = 'syosetu-list-number 讓小說家的章節顯示序列 (支援手機版)';
6 | export const desc_ja = 'syosetu-list-number 小説家になろう 章の表示順序';
7 |
8 | export const grant = [
9 |
10 | ];
11 |
12 | export const metadata = `// ==UserScript==
13 | // @name <%= index.name %>
14 | // @name:en <%= index.name_en %>
15 | // @name:ja <%= index.name_ja %>
16 | // @name:zh <%= index.name %>
17 | // @namespace bluelovers
18 | // @author bluelovers
19 | //
20 | // @description <%= index.desc %>
21 | // @description:en <%= index.desc_en %>
22 | // @description:ja <%= index.desc_ja %>
23 | // @description:zh <%= index.desc %>
24 | //
25 | // @version <%= pkg.version %>
26 | //
27 | // @grant <%= index.grant %>
28 | // g_r_a_n_tnone
29 | //
30 | // @icon <%= index.icon %>
31 | //
32 | // @noframes
33 | // @encoding utf-8
34 | //
35 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
36 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
37 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
39 | //
40 | // @include <%= index.include %>
41 | //
42 | // @match <%= index.match %>
43 | //
44 | // @exclude <%= index.exclude %>
45 | //
46 | // ==/UserScript==
47 | `;
48 |
49 | export default metadata;
50 |
--------------------------------------------------------------------------------
/src/syosetu-list-number/site/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 |
--------------------------------------------------------------------------------
/src/syosetu-list-number/site/mitemin.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | // @ts-ignore
8 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
9 |
10 | declare const global: IGlobal;
11 | declare const greasemonkey: IGreasemonkey;
12 | declare const window: IWindow;
13 | declare const unsafeWindow: IWindow;
14 | declare const $: IJQueryStatic;
15 | declare const jQuery: IJQueryStatic;
16 |
17 | let o: IDemo = {
18 |
19 | metadata: {
20 | include: [
21 | 'http*://*.mitemin.net/*',
22 | ],
23 | nomatch: [],
24 | exclude: [],
25 |
26 | grant: [],
27 | },
28 |
29 | test(_url_obj = global._url_obj)
30 | {
31 | let ret;
32 |
33 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
34 | {
35 | return true;
36 | }
37 |
38 | return false;
39 | },
40 |
41 | async main(_url_obj = global._url_obj)
42 | {
43 |
44 | let _imgs = $('.imageview, .image_infomation, .profile_image').find('img');
45 |
46 | if (_imgs.length)
47 | {
48 | const _uf_fixsize2 = require('root/lib/dom/img/size')._uf_fixsize2;
49 | const _mitemin = require('mitemin').parse;
50 |
51 | _imgs
52 | .imagesLoaded()
53 | .done(function (data)
54 | {
55 | $(data.elements).each((i, elem) => {
56 | let _this = $(elem);
57 |
58 | let _src = _this.prop('src');
59 |
60 | try
61 | {
62 | let data = _mitemin(_src);
63 |
64 | if (data.fullsize)
65 | {
66 | _uf_fixsize2(_this);
67 |
68 | _this.prop('src', data.fullsize)
69 | }
70 | }
71 | catch (e)
72 | {
73 |
74 | }
75 | });
76 | })
77 | ;
78 | }
79 |
80 | },
81 |
82 | adblock(_url_obj = global._url_obj)
83 | {
84 | },
85 |
86 | clearly(_url_obj = global._url_obj, _dom_list = null)
87 | {
88 | let _dom = $(_dom_list);
89 |
90 | return _dom;
91 | },
92 |
93 | };
94 |
95 | export = o as IDemo;
96 |
--------------------------------------------------------------------------------
/src/tieba-harmony/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'tieba-harmony';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'tieba-harmony';
6 | module.exports.name_en = 'tieba-harmony';
7 | module.exports.name_ja = 'tieba-harmony';
8 |
9 | module.exports.desc = 'tieba-harmony 貼吧發文時自動和諧';
10 | module.exports.desc_en = 'tieba-harmony 貼吧發文時自動和諧';
11 | module.exports.desc_ja = 'tieba-harmony 貼吧發文時自動和諧';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "tieba/tieba"
20 | ];
21 |
22 | module.exports.list_disable = [];
23 |
24 | // for webpack, don't use this method
25 | module.exports._lib = () =>
26 | {
27 | require('root/src/tieba-harmony/tieba/tieba');
28 | };
29 |
30 | module.exports.metadata = {};
31 | module.exports.metadata.include = [
32 | "http*://tieba.baidu.com/*"
33 | ];
34 | module.exports.metadata.match = [];
35 | module.exports.metadata.exclude = [
36 | "http*://tieba.baidu.com/i*",
37 | "http*://tieba.baidu.com/h*",
38 | "http*://tieba.baidu.com/s*"
39 | ];
40 | module.exports.metadata.grant = [
41 | "GM.deleteValue",
42 | "GM.getValue",
43 | "GM.listValues",
44 | "GM.registerMenuCommand",
45 | "GM.setValue",
46 | "GM.unregisterMenuCommand",
47 | "GM.xmlhttpRequest",
48 | "GM_deleteValue",
49 | "GM_getValue",
50 | "GM_listValues",
51 | "GM_registerMenuCommand",
52 | "GM_setValue",
53 | "GM_unregisterMenuCommand",
54 | "GM_xmlhttpRequest"
55 | ];
56 |
57 | module.exports.list_script = [];
58 |
59 | module.exports.current = [];
60 |
61 | module.exports.default = module.exports;
62 |
63 |
--------------------------------------------------------------------------------
/src/tieba-harmony/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import * as userScriptCore from 'root/lib/core';
6 | import index from './index';
7 |
8 | module.exports.id = 'tieba-harmony';
9 | module.exports.name = module.exports.id;
10 |
11 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
12 | {
13 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
14 |
15 | _init_gm();
16 | });
17 |
18 | function _init_gm()
19 | {
20 | const UF = require('root/lib/greasemonkey/gm/menu');
21 |
22 | UF.registerMenuCommand({
23 | id: module.exports.name,
24 | key: 'unescape',
25 | }, async (options) =>
26 | {
27 | let index = require(`root/src/${module.exports.id}`);
28 |
29 | if (index.current && index.current.length)
30 | {
31 | const label = UF.getLabel(options);
32 |
33 | let _dom = $();
34 |
35 | let temp = null;
36 |
37 | let list_script = index.current;
38 |
39 | {
40 | let a = [];
41 | for (let current of list_script)
42 | {
43 | if (a.includes(current.name))
44 | {
45 | continue;
46 | }
47 |
48 | a.push(current.name);
49 |
50 | for (let fn of ['adblock'])
51 | {
52 | if (typeof current.lib[fn] == 'function')
53 | {
54 | // @ts-ignore
55 | let ret = await current.lib[fn](global._url_obj, _dom);
56 |
57 | if (ret && ret !== true)
58 | {
59 | if (fn == 'clearly')
60 | {
61 | //_dom = _dom.add(ret);
62 |
63 | if (ret.length)
64 | {
65 | // allow remove dom from list
66 | // need update clearly
67 | _dom = ret;
68 | }
69 |
70 | //console.log(777, [ret.length, ret], [_dom.length, _dom]);
71 | }
72 |
73 | console.info(label, current.name, fn, [ret.length, ret], [_dom.length, _dom]);
74 | }
75 | }
76 | }
77 | }
78 | }
79 |
80 | console.info(label, [_dom.length, _dom]);
81 |
82 | _dom
83 | .remove()
84 | ;
85 | }
86 | });
87 | }
88 |
--------------------------------------------------------------------------------
/src/tieba-harmony/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = 'tieba-harmony 貼吧發文時自動和諧';
6 |
7 | export const grant = [
8 | 'GM_registerMenuCommand',
9 | 'GM_xmlhttpRequest',
10 | 'GM_getValue',
11 | ];
12 |
13 | export const metadata = `// ==UserScript==
14 | // @name <%= index.name %>
15 | // @name:en <%= index.name_en %>
16 | // @name:zh <%= index.name %>
17 | // @namespace bluelovers
18 | // @author bluelovers
19 | //
20 | // @description <%= index.desc %>
21 | // @description:en <%= index.desc_en %>
22 | // @description:zh <%= index.desc %>
23 | //
24 | // @version <%= pkg.version %>
25 | //
26 | // @grant <%= index.grant %>
27 | // g_r_a_n_tnone
28 | //
29 | // @icon <%= index.icon %>
30 | //
31 | // @noframes
32 | // @encoding utf-8
33 | //
34 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
35 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
36 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
37 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | //
39 | // @include <%= index.include %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
46 | export default metadata;
47 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc.adblock/facebook.txt:
--------------------------------------------------------------------------------
1 | www.facebook.com###pagelet_timeline_main_column ._1xnd > ._4-u2._3xaf._3-95._4-u8
2 | www.facebook.com###pagelet_timeline_main_column ._1xnd > #videos
3 | www.facebook.com###pagelet_timeline_main_column ._1xnd > #page_photos
4 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 |
3 | *.js
4 | !/index.user.js
5 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/_fake.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: -1,
10 |
11 | metadata: {
12 | include: [
13 |
14 | ],
15 | exclude: [
16 | 'http*://platform.twitter.com/widgets*',
17 | 'http*://apis.google.com/*'
18 | ],
19 | },
20 |
21 | test(_url_obj)
22 | {
23 | return false;
24 | },
25 |
26 | main(_url_obj)
27 | {
28 | },
29 |
30 | adblock(_url_obj)
31 | {
32 | },
33 | };
34 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/2dfan.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/1/001.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.2dfan.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/2dfan\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | module.exports.adblock(_url_obj);
34 |
35 | $('img.media-object[data-normal]').attr('src', function ()
36 | {
37 | return $(this).attr('data-normal');
38 | });
39 | },
40 |
41 | adblock(_url_obj = global._url_obj)
42 | {
43 | $('.popadv-container').remove();
44 | },
45 |
46 | clearly(_url_obj = global._url_obj, _dom_list = null)
47 | {
48 | let _dom = $(_dom_list);
49 |
50 | _dom = _dom
51 | .add([
52 | '.well:has(> .jiathis_style)',
53 | '.comments .media-object, .avatar',
54 | '#comments-container .form-actions',
55 | 'footer, .site-search, body > .navbar, iframe, body :hidden',
56 | '.control-group > .rating',
57 | '#similars img',
58 | '#reviews',
59 |
60 | '#content .block-content:has(> .breadcrumb.subject-crumb)'
61 | ].join())
62 | ;
63 |
64 | //_dom.remove();
65 |
66 | return _dom;
67 | },
68 | };
69 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/3dmgame.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.3dmgame.com/*',
12 | 'http*://bbs.3dmgame.com/*',
13 | ],
14 | exclude: [],
15 | },
16 |
17 | test(_url_obj)
18 | {
19 | if (_url_obj.host.match(/3dmgame\.com/))
20 | {
21 | return true;
22 | }
23 |
24 | return false;
25 | },
26 |
27 | main(_url_obj)
28 | {
29 | require('root/src/ux-tweak-sc/global/discuz').main(_url_obj);
30 | },
31 |
32 | adblock(_url_obj = global._url_obj)
33 | {
34 |
35 | },
36 |
37 | clearly(_url_obj = global._url_obj, _dom_list = null)
38 | {
39 | const greasemonkey = require('root/lib/greasemonkey/index');
40 |
41 | let _dom = $(_dom_list);
42 |
43 | _dom = _dom
44 | .add([
45 | '.avatar',
46 | '.pct > img.image',
47 | ].join())
48 | ;
49 |
50 | greasemonkey.GM_addStyle([
51 | '.pl .quote blockquote { background-image: none; }',
52 | ].join(''));
53 |
54 | return _dom;
55 | },
56 | };
57 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/baidu/safecheck.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | //'http*://www.gamer.com.tw/*',
23 | ],
24 | match: [
25 | '*://*.bdimg.com/safecheck/*',
26 | ],
27 | nomatch: [],
28 | exclude: [],
29 |
30 | grant: [],
31 | },
32 |
33 | test(_url_obj = global._url_obj)
34 | {
35 | let ret;
36 |
37 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
38 | {
39 | return true;
40 | }
41 |
42 | return false;
43 | },
44 |
45 | async main(_url_obj = global._url_obj)
46 | {
47 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
48 | _uf_dom_filter_link([
49 | //
50 | ].join(','))
51 | .prop('target', '_blank')
52 | ;
53 |
54 | $('.warning_wrap .warning_info .btn[rel*="nofollow"]')
55 | .each(function ()
56 | {
57 | window.location.href = $(this).prop('href');
58 | })
59 | ;
60 | },
61 |
62 | adblock(_url_obj = global._url_obj)
63 | {
64 | //
65 | },
66 |
67 | clearly(_url_obj = global._url_obj, _dom_list = null)
68 | {
69 | let _dom = $(_dom_list);
70 |
71 | _dom = _dom
72 | .add([
73 | //
74 | ].join())
75 | ;
76 |
77 | return _dom;
78 | },
79 |
80 | };
81 |
82 | export = o as IDemo;
83 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/blog.reimu.net.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://blog.reimu.net/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj)
17 | {
18 | if (_url_obj.host.match(/blog\.reimu\.net/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj)
27 | {
28 | $('.entry-content pre:not(:visited)')
29 | .css({
30 | 'border-color': 'rgba(185, 42, 183, 0.56)',
31 | })
32 | .show()
33 | ;
34 | },
35 |
36 | adblock(_url_obj)
37 | {
38 |
39 | },
40 | };
41 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/dlsite.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/24/024.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.dlsite.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/dlsite\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | if (adult_check(_url_obj))
29 | {
30 | return true;
31 | }
32 |
33 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
34 | _uf_dom_filter_link('')
35 | .prop('target', '_blank')
36 | ;
37 | },
38 |
39 | adblock(_url_obj = global._url_obj)
40 | {
41 |
42 | },
43 |
44 | clearly(_url_obj = global._url_obj, _dom_list = null)
45 | {
46 | let _dom = $(_dom_list);
47 |
48 | _dom = _dom
49 | .add([
50 |
51 | ].join())
52 | ;
53 |
54 | //_dom.remove();
55 |
56 | return _dom;
57 | },
58 | };
59 |
60 | function adult_check(_url_obj = global._url_obj)
61 | {
62 | let _a = $('#adult_check_box .btn_yes a');
63 |
64 | if (_a.length)
65 | {
66 | _a[0].click();
67 |
68 | return true;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/dmm.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/19/019.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | disable: true,
10 |
11 | metadata: {
12 | include: [
13 | 'http*://www.dmm.co.jp/netgame/*',
14 | ],
15 | exclude: [],
16 | },
17 |
18 | test(_url_obj = global._url_obj)
19 | {
20 | if (_url_obj.host.match(/dmm\.co\.jp/))
21 | {
22 | return true;
23 | }
24 |
25 | return false;
26 | },
27 |
28 | main(_url_obj = global._url_obj)
29 | {
30 | const _uf_done = require('root/lib/event/done');
31 |
32 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
33 | _uf_dom_filter_link('.d-sect .d-item a, a[href*="rcv.ixd.dmm.com"], a[href*="netgame_s"]')
34 | .prop('target', '_blank')
35 | .on('click', function (event)
36 | {
37 | _uf_done(event);
38 | open_game($(this).prop('href'));
39 | })
40 | ;
41 |
42 | const comic_style = require('root/lib/comic/style');
43 |
44 | const greasemonkey = require('root/lib/greasemonkey/index');
45 | greasemonkey.GM_addStyle([
46 | `html, body, #main-ntg, iframe, .dmm-ntgnavi { margin: auto; padding: 0; min-width: auto; min-height: auto; }`,
47 | ].join(''));
48 | },
49 |
50 | adblock(_url_obj = global._url_obj)
51 | {
52 |
53 | },
54 |
55 | clearly(_url_obj = global._url_obj, _dom_list = null)
56 | {
57 | let _dom = $(_dom_list);
58 |
59 | _dom = _dom
60 | .add([
61 |
62 | ].join())
63 | ;
64 |
65 | //_dom.remove();
66 |
67 | return _dom;
68 | },
69 | };
70 |
71 | function open_game(url)
72 | {
73 | return window.open(url, url, 'menubar=0,toolbar=0,personalbar=0,status=1,resizable=1,scrollbars=1,titlebar=1');
74 | }
75 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/gamme.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://news.gamme.com.tw/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/gamme\.com\.tw/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('#Foot-Photo a, #Foot-Photo1 a, #openlist')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | const greasemonkey = require('root/lib/greasemonkey/index');
34 | greasemonkey.GM_addStyle([
35 | '.entry em a { color: initial; }',
36 | '.entry .photovia a { color: blue; }',
37 | ].join(''));
38 |
39 | $(window)
40 | .on('load', function ()
41 | {
42 | $('.entry .photovia')
43 | .not('[data-done]')
44 | .attr('data-done', true)
45 | .clone()
46 | .css({
47 | 'margin-top': 0,
48 | 'margin-bottom': '2.5em',
49 | })
50 | .insertAfter($('#entry > p.pimg:eq(0), #entry > p.pimg:eq(0) + pre').eq(-1))
51 | ;
52 | })
53 | .triggerHandler('load')
54 | ;
55 |
56 | $(window).scrollTo($('#content, .body_box, .post').eq(-1))
57 | },
58 |
59 | adblock(_url_obj = global._url_obj)
60 | {
61 |
62 | },
63 |
64 | clearly(_url_obj = global._url_obj, _dom_list = null)
65 | {
66 | let _dom = $(_dom_list);
67 |
68 | _dom = _dom
69 | .add($('#content').parentsUntil('body').addBack().siblings())
70 | .add($('#content .boxbtn').nextAll().addBack())
71 | .add([
72 | '.shareblock, .img_share1, .img_share2, #home_div',
73 | '.prev_arw, .next_arw, #commentsBottom',
74 | '.postdata img, .postdata .postarw',
75 | 'body :hidden, script, iframe',
76 | ].join())
77 | ;
78 |
79 | //_dom.remove();
80 |
81 | return _dom;
82 | },
83 |
84 | };
85 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/guildwars2/forum.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/9/009.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | disable: true,
10 |
11 | metadata: {
12 | include: [
13 | 'http*://forum-*.guildwars2.com/forum/*',
14 | ],
15 | exclude: [],
16 | },
17 |
18 | test(_url_obj = global._url_obj)
19 | {
20 | if (_url_obj.host.match(/forum\-.+\.guildwars2\.com/))
21 | {
22 | return true;
23 | }
24 |
25 | return false;
26 | },
27 |
28 | main(_url_obj = global._url_obj)
29 | {
30 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
31 | _uf_dom_filter_link([
32 | '.message-content a, .topiclist .topic .title a, a.topic',
33 | '.post-topic-header a',
34 | '.character .links a:not([rel="nofollow"]), .body.rules a',
35 | ].join())
36 | .prop('target', '_blank')
37 | ;
38 |
39 | ref_url(_url_obj);
40 |
41 | let realname = $('.realname').text().trim();
42 |
43 | $(window).scrollTo('#header .bookcrumbs, #content');
44 | },
45 |
46 | adblock(_url_obj = global._url_obj)
47 | {
48 |
49 | },
50 |
51 | clearly(_url_obj = global._url_obj, _dom_list = null)
52 | {
53 | let _dom = $(_dom_list);
54 |
55 | _dom = _dom
56 | .add([].join())
57 | ;
58 |
59 | //_dom.remove();
60 |
61 | return _dom;
62 | },
63 | };
64 |
65 | function ref_url(_url_obj)
66 | {
67 | $('a[href*="external?l="]', '.message-content')
68 | .attr('href', function (i, old)
69 | {
70 | let url = old.substr(old.indexOf('external?l=') + 'external?l='.length);
71 |
72 | //console.log(i, old, url);
73 |
74 | return decodeURIComponent(url);
75 | })
76 | .prop('target', '_blank')
77 | ;
78 | }
79 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/guildwars2/wiki.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/9/009.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://wiki.guildwars2.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/wiki.guildwars2\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 |
30 | let _link = [
31 | 'a.external, .gallery .thumb a.image',
32 | '.recipe-box a, .tpwrapper a, .recipe a',
33 | ];
34 |
35 | if (_url_obj.path.match(/\/Game_updates\//))
36 | {
37 | _link.push('#mw-content-text a');
38 | }
39 |
40 | _uf_dom_filter_link(_link.join())
41 | .not('.mw-editsection a, #toc a')
42 | .prop('target', '_blank')
43 | ;
44 | },
45 |
46 | adblock(_url_obj = global._url_obj)
47 | {
48 |
49 | },
50 |
51 | clearly(_url_obj = global._url_obj, _dom_list = null)
52 | {
53 | let _dom = $(_dom_list);
54 |
55 | _dom = _dom
56 | .add([
57 |
58 | ].join())
59 | ;
60 |
61 | //_dom.remove();
62 |
63 | return _dom;
64 | },
65 | };
66 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/movie/u2mtv.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/28/028.
3 | */
4 |
5 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
6 |
7 | declare const global: IGlobal;
8 | declare const greasemonkey: IGreasemonkey;
9 | declare const window: IWindow;
10 | declare const unsafeWindow: IWindow;
11 | declare const $: IJQueryStatic;
12 | declare const jQuery: IJQueryStatic;
13 |
14 | 'use strict';
15 |
16 | let o: IDemo = {
17 |
18 | metadata: {
19 | include: [
20 | 'http*://www.u2mtv.com/movie/*',
21 | ],
22 | match: [
23 | '*://www.u2mtv.com/*',
24 | ],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | const { debounce } = require('throttle-debounce');
47 | const { throttle } = require('throttle-debounce');
48 |
49 | $('#movie_grid')
50 | .on('DOMNodeInserted', debounce(100, function ()
51 | {
52 | $('body').triggerHandler('load.ready');
53 | }))
54 | ;
55 |
56 | $('body')
57 | .on('load.ready', debounce(100, function ()
58 | {
59 | _uf_dom_filter_link([
60 | '.og-expanded .og-expander a',
61 | '#movie_grid a',
62 | ].join(','))
63 | .prop('target', '_blank')
64 | ;
65 | }))
66 | .triggerHandler('load.ready')
67 | ;
68 | },
69 |
70 | adblock(_url_obj = global._url_obj)
71 | {
72 | //
73 | },
74 |
75 | clearly(_url_obj = global._url_obj, _dom_list = null)
76 | {
77 | let _dom = $(_dom_list);
78 |
79 | _dom = _dom
80 | .add([
81 | //
82 | ].join())
83 | ;
84 |
85 | return _dom;
86 | },
87 |
88 | };
89 |
90 | export = o as IDemo;
91 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/qoo-app.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/20/020.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://*.qoo-app.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/qoo-app\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link([
30 | '.app-item a',
31 | ].join())
32 | .prop('target', '_blank')
33 | ;
34 |
35 | lazyload(_url_obj);
36 | },
37 |
38 | adblock(_url_obj = global._url_obj)
39 | {
40 |
41 | },
42 |
43 | clearly(_url_obj = global._url_obj, _dom_list = null)
44 | {
45 | let _dom = $(_dom_list);
46 |
47 | _dom = _dom
48 | .add([
49 |
50 | ].join())
51 | ;
52 |
53 | //_dom.remove();
54 |
55 | return _dom;
56 | },
57 | };
58 |
59 | function lazyload(_url_obj)
60 | {
61 | $('img[data-src]').attr('src', function (i, old)
62 | {
63 | if (old != $(this).attr('data-src'))
64 | {
65 | return $(this).attr('data-src');
66 | }
67 | })
68 | }
69 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/qtfy.eu.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/10/15/015.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://qtfy.eu/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | let ret;
19 |
20 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
21 | {
22 | return true;
23 | }
24 | //console.debug(777, ret);
25 |
26 | /*
27 | if (_url_obj.host.match(/3dmgame\.com/))
28 | {
29 | return true;
30 | }
31 | */
32 |
33 | return false;
34 | },
35 |
36 | main(_url_obj = global._url_obj)
37 | {
38 | const { debounce } = require('throttle-debounce');
39 | const { throttle } = require('throttle-debounce');
40 |
41 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
42 | _uf_dom_filter_link([
43 | '#main-layout .class-bar a',
44 | ].join())
45 | .prop('target', '_blank')
46 | ;
47 |
48 | $(window)
49 | .on('load.ready', debounce(6000, function ()
50 | {
51 | module.exports.adblock(_url_obj);
52 | }))
53 | .on('load.ready', throttle(1000, function ()
54 | {
55 | module.exports.adblock(_url_obj);
56 | }))
57 | .on('load.ready', function ()
58 | {
59 | module.exports.adblock(_url_obj);
60 | })
61 | .triggerHandler('load.ready')
62 | ;
63 | },
64 |
65 | adblock(_url_obj = global._url_obj)
66 | {
67 | $('.code-block').filter(':has(> .adblock_wrapper), :has(> .adblock_wrapper)').remove();
68 | },
69 |
70 | clearly(_url_obj = global._url_obj, _dom_list = null)
71 | {
72 | let _dom = $(_dom_list);
73 |
74 | _dom = _dom
75 | .add([].join())
76 | ;
77 |
78 | //_dom.remove();
79 |
80 | return _dom;
81 | },
82 | };
83 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/taptap.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://www.taptap.com/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | '.moment-content-box a',
48 | '.bbcode-body a',
49 | ])
50 | .prop('target', '_blank')
51 | ;
52 |
53 | greasemonkey.GM_addStyle([
54 | `body, html, :root { font-size: 9pt; font-family: initial; }`,
55 | `.bbcode-body, .topic-comments-list-v2 .item-text-body, .posts-item-v2 .item-text-header .taptap-user-name, topic-info, .comment-item__toggle-reply-list, .topic-v2-container .author-wrap .topic-info, .common-v2-list .content-text { font-size: 1rem; }`,
56 | ]);
57 | },
58 |
59 | adblock(_url_obj = global._url_obj)
60 | {
61 | //
62 | },
63 |
64 | clearly(_url_obj = global._url_obj, _dom_list = null)
65 | {
66 | let _dom = $(_dom_list);
67 |
68 | _dom = _dom
69 | .add($('.topic-v2-container').parentsUntil('body').addBack().siblings())
70 | .add([
71 | '.btn[data-taptap-ajax="follow"]',
72 | '.post-item__text-footer button, .vote-up',
73 | '.post-bbcode-form, .tab-bar-box, .topic-operations__bottom',
74 | '.topic-operations__right-content',
75 | '#post-bbcode-form',
76 | ].join())
77 | ;
78 |
79 | return _dom;
80 | },
81 |
82 | };
83 |
84 | export = o as IDemo;
85 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/acg/vsgames.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/4/004.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://gw2.vsgames.cn/*',
12 | 'http*://*.vsgames.cn/*',
13 | ],
14 | exclude: [],
15 | },
16 |
17 | test(_url_obj = global._url_obj)
18 | {
19 | if (_url_obj.host.match(/vsgames\.cn/))
20 | {
21 | return true;
22 | }
23 |
24 | return false;
25 | },
26 |
27 | main(_url_obj = global._url_obj)
28 | {
29 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
30 | _uf_dom_filter_link('')
31 | .prop('target', '_blank')
32 | ;
33 | },
34 |
35 | adblock(_url_obj = global._url_obj)
36 | {
37 |
38 | },
39 |
40 | clearly(_url_obj = global._url_obj, _dom_list = null)
41 | {
42 | let _dom = $(_dom_list);
43 |
44 | _dom = _dom
45 | .add($('#content').parentsUntil('body').addBack().siblings())
46 | .add($('#main').appendTo('body').siblings())
47 | .add([
48 | '.btn-new-topic, .reply-user-avatar, #replytopic, #footer',
49 | ].join())
50 | ;
51 |
52 | //_dom.remove();
53 |
54 | return _dom;
55 | },
56 | };
57 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/adult/up01.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/24/024.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.up01.cc/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/up01\.cc/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | if (adult_check(_url_obj))
29 | {
30 | return true;
31 | }
32 |
33 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
34 | _uf_dom_filter_link('')
35 | .prop('target', '_blank')
36 | ;
37 | },
38 |
39 | adblock(_url_obj = global._url_obj)
40 | {
41 |
42 | },
43 |
44 | clearly(_url_obj = global._url_obj, _dom_list = null)
45 | {
46 | let _dom = $(_dom_list);
47 |
48 | _dom = _dom
49 | .add([
50 |
51 | ].join())
52 | ;
53 |
54 | //_dom.remove();
55 |
56 | return _dom;
57 | },
58 | };
59 |
60 | function adult_check(_url_obj = global._url_obj)
61 | {
62 | let _a = $('#forbid #agree, .adult a.btn.btn-pink');
63 |
64 | if (_a.length)
65 | {
66 | _a[0].click();
67 |
68 | return true;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/anti-adblock/epinv.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/23/023.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.epinv.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/epinv\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | module.exports.adblock(_url_obj);
29 | },
30 |
31 | adblock(_url_obj = global._url_obj)
32 | {
33 | $(window)
34 | .on('load.adblock', function (event)
35 | {
36 | if ($('#epd .danger').length)
37 | {
38 | $('#epd')
39 | .not('[data-done]')
40 | .attr('data-done', true)
41 | .html(`下载地址:提取下载地址列表`)
42 | ;
43 |
44 | $('#epd > a[href*="javascript"]').eq(0).click();
45 | }
46 | })
47 | .triggerHandler('load.adblock')
48 | ;
49 | },
50 |
51 | clearly(_url_obj = global._url_obj, _dom_list = null)
52 | {
53 | let _dom = $(_dom_list);
54 |
55 | _dom = _dom
56 | .add([].join())
57 | ;
58 |
59 | //_dom.remove();
60 |
61 | return _dom;
62 | },
63 | };
64 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/art/danbooru.donmai.us.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://danbooru.donmai.us/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | '#posts-container .post-preview a',
48 | ].join(','))
49 | .prop('target', '_blank')
50 | ;
51 |
52 | $('#image-container #image').attr('src', function (i, old)
53 | {
54 | $(this).prop('lowsrc', old);
55 |
56 | return old
57 | .replace(/\/sample\//, '/')
58 | .replace(/_sample-/, '_')
59 | ;
60 | });
61 | },
62 |
63 | adblock(_url_obj = global._url_obj)
64 | {
65 | //
66 | },
67 |
68 | clearly(_url_obj = global._url_obj, _dom_list = null)
69 | {
70 | let _dom = $(_dom_list);
71 |
72 | _dom = _dom
73 | .add([
74 | //
75 | ].join())
76 | ;
77 |
78 | return _dom;
79 | },
80 |
81 | };
82 |
83 | export = o as IDemo;
84 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/art/deviantart.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/24/024.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://*.deviantart.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/deviantart\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | const keycodes = require('keycodes');
34 | const _uf_done = require('root/lib/event/done');
35 |
36 | $(window)
37 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
38 | {
39 | switch (event.which)
40 | {
41 | case keycodes('pageup'):
42 | case keycodes('left'):
43 |
44 | var _a = $('#overhead a.minibrowse_prev:not(.disabled)');
45 |
46 | if (_a.length)
47 | {
48 | _uf_done(event);
49 | _a[0].click();
50 | }
51 |
52 | break;
53 | case keycodes('pagedown'):
54 | case keycodes('right'):
55 |
56 | var _a = $('#overhead a.minibrowse_next:not(.disabled)');
57 |
58 | if (_a.length)
59 | {
60 | _uf_done(event);
61 | _a[0].click();
62 | }
63 |
64 | break;
65 | }
66 | }))
67 | ;
68 | },
69 |
70 | adblock(_url_obj = global._url_obj)
71 | {
72 |
73 | },
74 |
75 | clearly(_url_obj = global._url_obj, _dom_list = null)
76 | {
77 | let _dom = $(_dom_list);
78 |
79 | _dom = _dom
80 | .add([
81 |
82 | ].join())
83 | ;
84 |
85 | //_dom.remove();
86 |
87 | return _dom;
88 | },
89 | };
90 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/art/pixivision.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://www.pixivision.net/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | '.article-card-container a',
48 | ].join(','))
49 | .prop('target', '_blank')
50 | ;
51 |
52 | $('a[href*="https://www.pixiv.net/member.php"]').prop('href', function (i, old)
53 | {
54 | return old.replace(/member\.php\?id=/, 'member_illust.php?id=');
55 | });
56 | },
57 |
58 | adblock(_url_obj = global._url_obj)
59 | {
60 | //
61 | },
62 |
63 | clearly(_url_obj = global._url_obj, _dom_list = null)
64 | {
65 | let _dom = $(_dom_list);
66 |
67 | _dom = _dom
68 | .add([
69 | //
70 | ].join())
71 | ;
72 |
73 | return _dom;
74 | },
75 |
76 | };
77 |
78 | export = o as IDemo;
79 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/bbs/ptt.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/19/019.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.ptt.cc/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/ptt\.cc/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | ask_over18(_url_obj);
34 | },
35 |
36 | adblock(_url_obj = global._url_obj)
37 | {
38 |
39 | },
40 |
41 | clearly(_url_obj = global._url_obj)
42 | {
43 |
44 | },
45 | };
46 |
47 | function ask_over18(_url_obj = global._url_obj)
48 | {
49 | let _form = $('form[action*="ask"] :submit[name="yes"]');
50 |
51 | if (_form.length)
52 | {
53 | _form[0].click();
54 |
55 | return true;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/blog.xuite.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://blog.xuite.net/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/blog\.xuite\.net/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('.blogbody a')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | lazyload(_url_obj)
34 | },
35 |
36 | adblock(_url_obj = global._url_obj)
37 | {
38 |
39 | },
40 |
41 | clearly(_url_obj = global._url_obj, _dom_list = null)
42 | {
43 | let _dom = $(_dom_list);
44 |
45 | _dom = _dom
46 | .add($('.ArticleContent').parentsUntil('body').addBack().siblings())
47 | .add([
48 | 'script, body :hidden',
49 |
50 | '.bookmark.push, #facebook-like-bottom, .fb-comments, .item_trackBack',
51 |
52 | '#sidebarTreeStyle, .selectbar, .commentbutton-menu, .page',
53 |
54 | 'link[rel="stylesheet"]',
55 | ].join())
56 | ;
57 |
58 | $('.blogrank apan[class]').removeAttr('class');
59 |
60 | $('.ArticleContent')
61 | .css({
62 | 'max-width': 700,
63 | margin: 'auto',
64 | })
65 | ;
66 |
67 | //_dom.remove();
68 |
69 | return _dom;
70 | },
71 | };
72 |
73 | function lazyload(_url_obj)
74 | {
75 | $('img.lazyload[data-original]')
76 | .not('[data-done]')
77 | .attr('data-done', true)
78 | .each(function ()
79 | {
80 | let img = $(this);
81 |
82 | if (img.attr('src') != img.attr('data-original'))
83 | {
84 | img
85 | .attr('src', img.attr('data-original'))
86 | .removeAttr('lazyload')
87 | ;
88 | }
89 | })
90 | ;
91 | }
92 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/dulfy.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/27/027.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://dulfy.net/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/dulfy\.net/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('article .post-content a, .post-title a, a.more-link')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | img_thumb(_url_obj);
34 | },
35 |
36 | adblock(_url_obj = global._url_obj)
37 | {
38 |
39 | },
40 |
41 | clearly(_url_obj = global._url_obj, _dom_list = null)
42 | {
43 | const greasemonkey = require('root/lib/greasemonkey/index');
44 |
45 | let _dom = $(_dom_list);
46 |
47 | _dom = _dom
48 | .add($('#content article.post').parentsUntil('body').addBack().siblings().not('#content article.post, #disqus_thread'))
49 | .add([
50 | '.author-avatar',
51 | '#disqus_thread',
52 | ].join())
53 | ;
54 |
55 | $('#content article.post .embed-youtube').removeClass('embed-youtube');
56 | $('#body').removeAttr('id');
57 |
58 | greasemonkey.GM_addStyle([
59 | 'body, #body { background: none !important; }',
60 | ].join(''));
61 |
62 | //_dom.remove();
63 |
64 | return _dom;
65 | },
66 | };
67 |
68 | function img_thumb()
69 | {
70 | $('article .post-content img')
71 | .prop('src', function (i, old)
72 | {
73 | return old.replace(/_thumb\./, '.');
74 | })
75 | ;
76 | }
77 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/jianshu.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/5/005.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.jianshu.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/jianshu\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('')
30 | .prop('target', '_blank')
31 | ;
32 | },
33 |
34 | adblock(_url_obj = global._url_obj)
35 | {
36 |
37 | },
38 |
39 | clearly(_url_obj = global._url_obj, _dom_list = null)
40 | {
41 | let _dom = $(_dom_list);
42 |
43 | _dom = _dom
44 | .add($('.article').parentsUntil('body').addBack().siblings())
45 | .add([
46 | '.follow, .avatar img, .new-comment, .iconfont, .tool-group',
47 | ].join())
48 | ;
49 |
50 | $('#comment-list, .comment-list').appendTo('.post');
51 |
52 | //_dom.remove();
53 |
54 | return _dom;
55 | },
56 | };
57 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/juejin.im.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/10/29/029.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://juejin.im/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | let ret;
19 |
20 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
21 | {
22 | return true;
23 | }
24 | //console.debug(777, ret);
25 |
26 | /*
27 | if (_url_obj.host.match(/3dmgame\.com/))
28 | {
29 | return true;
30 | }
31 | */
32 |
33 | return false;
34 | },
35 |
36 | main(_url_obj = global._url_obj)
37 | {
38 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
39 | _uf_dom_filter_link([
40 |
41 | ].join())
42 | .prop('target', '_blank')
43 | ;
44 |
45 | $(window)
46 | .on('load.ready', function ()
47 | {
48 |
49 | })
50 | .triggerHandler('load.ready')
51 | ;
52 |
53 | this.adblock(_url_obj);
54 | },
55 |
56 | adblock(_url_obj = global._url_obj)
57 | {
58 | require('root/lib/greasemonkey/index')
59 | .GM_addStyle([
60 | '.container.entry-view .show-full { display: none !important; }',
61 | '.container.entry-view .show-full-block { display: none !important; }',
62 | '.post-content-container.hidden { max-height: auto; overflow: visible }',
63 | ].join(''))
64 | ;
65 | },
66 |
67 | clearly(_url_obj = global._url_obj, _dom_list = null)
68 | {
69 | let _dom = $(_dom_list);
70 |
71 | _dom = _dom
72 | .add([
73 |
74 | ].join())
75 | ;
76 |
77 | //_dom.remove();
78 |
79 | return _dom;
80 | },
81 | };
82 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/oneapm.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/2/002.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://blog.oneapm.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/blog\.oneapm\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('')
30 | .prop('target', '_blank')
31 | ;
32 | },
33 |
34 | adblock(_url_obj = global._url_obj)
35 | {
36 |
37 | },
38 |
39 | clearly(_url_obj = global._url_obj, _dom_list = null)
40 | {
41 | let _dom = $(_dom_list);
42 |
43 | _dom = _dom
44 | .add($('#main').parentsUntil('body').addBack().siblings())
45 | .add([
46 | '.details .readNum, .details .commentNum, .post_info .iconfont',
47 | '.msgcontainer, #divSubscibe',
48 | ].join())
49 | ;
50 |
51 | require('root/lib/greasemonkey/index')
52 | .GM_addStyle([
53 | '#content.with-header-fix { padding-top: 0; }',
54 | ].join(''))
55 | ;
56 |
57 | //_dom.remove();
58 |
59 | return _dom;
60 | },
61 | };
62 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/blog/steachs.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/27/027.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://steachs.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/steachs\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('article .post-content a, .post-title a, a.more-link')
30 | .prop('target', '_blank')
31 | ;
32 |
33 | img_thumb(_url_obj);
34 | },
35 |
36 | adblock(_url_obj = global._url_obj)
37 | {
38 |
39 | },
40 |
41 | clearly(_url_obj = global._url_obj, _dom_list = null)
42 | {
43 | const greasemonkey = require('root/lib/greasemonkey/index');
44 |
45 | let _dom = $(_dom_list);
46 |
47 | _dom = _dom
48 | .add($('#content article, #contents article').parentsUntil('body').addBack().siblings().not('article'))
49 | .add([
50 | '#share_button, .icon-home-outline, .avatar, .author_links, #post_comment, #respond',
51 | '#disqus_thread',
52 | ].join())
53 | ;
54 |
55 | $('#content article.post .embed-youtube').removeClass('embed-youtube');
56 | $('#body').removeAttr('id');
57 |
58 | greasemonkey.GM_addStyle([
59 | 'body, #body { background: none !important; }',
60 | ].join(''));
61 |
62 | //_dom.remove();
63 |
64 | return _dom;
65 | },
66 | };
67 |
68 | function img_thumb()
69 | {
70 | $('article .post-content img')
71 | .prop('src', function (i, old)
72 | {
73 | return old.replace(/_thumb\./, '.');
74 | })
75 | ;
76 | }
77 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/code/gitee.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | // @ts-ignore
8 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
9 |
10 | declare const global: IGlobal;
11 | declare const greasemonkey: IGreasemonkey;
12 | declare const window: IWindow;
13 | declare const unsafeWindow: IWindow;
14 | declare const $: IJQueryStatic;
15 | declare const jQuery: IJQueryStatic;
16 |
17 | let o: IDemo = {
18 |
19 | //priority: 100,
20 |
21 | metadata: {
22 | include: [
23 | 'http*://gitee.com/*',
24 | 'http*://gitee.com/api/*',
25 | 'http*://gitee.com/oauth/applications/*',
26 | ],
27 | match: [],
28 | nomatch: [],
29 | exclude: [],
30 |
31 | grant: [],
32 | },
33 |
34 | test(_url_obj = global._url_obj)
35 | {
36 | let ret;
37 |
38 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
39 | {
40 | return true;
41 | }
42 |
43 | return false;
44 | },
45 |
46 | async main(_url_obj = global._url_obj)
47 | {
48 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
49 |
50 | if (_url_obj.path.match(/\/api\//))
51 | {
52 | $('.parameters :input[autocomplete], .parameters form').prop('autocomplete', 'on');
53 | }
54 |
55 | $(window)
56 | .on('load', function ()
57 | {
58 | _uf_dom_filter_link([
59 | '#users-events .event-group a',
60 | 'a.view-file, .git-commit-meta a',
61 | ].join(','))
62 | .prop('target', '_blank')
63 | ;
64 |
65 | $('.edit_oauth_application :input[disabled]')
66 | //.filter('#secret, #uid')
67 | .removeAttr('disabled')
68 | .prop('readonly', 'true')
69 | ;
70 | })
71 | .triggerHandler('load')
72 | ;
73 | },
74 |
75 | adblock(_url_obj = global._url_obj)
76 | {
77 | //
78 | },
79 |
80 | clearly(_url_obj = global._url_obj, _dom_list = null)
81 | {
82 | let _dom = $(_dom_list);
83 |
84 | _dom = _dom
85 | .add([
86 |
87 | ].join())
88 | ;
89 |
90 | return _dom;
91 | },
92 |
93 | };
94 |
95 | export = o as IDemo;
96 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/code/greasyfork.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/1/001.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://greasyfork.org/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/greasyfork\.org/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('#browse-script-list article a')
30 | .prop('target', '_blank')
31 | ;
32 | },
33 |
34 | adblock(_url_obj = global._url_obj)
35 | {
36 |
37 | },
38 |
39 | clearly(_url_obj = global._url_obj, _dom_list = null)
40 | {
41 | let _dom = $(_dom_list);
42 |
43 | _dom = _dom
44 | .add([
45 |
46 | ].join())
47 | ;
48 |
49 | //_dom.remove();
50 |
51 | return _dom;
52 | },
53 | };
54 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/code/segmentfault.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://segmentfault.com/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | //
48 | ].join(','))
49 | .prop('target', '_blank')
50 | ;
51 |
52 | $(window).scrollTo('.container');
53 | },
54 |
55 | adblock(_url_obj = global._url_obj)
56 | {
57 | //
58 | },
59 |
60 | clearly(_url_obj = global._url_obj, _dom_list = null)
61 | {
62 | let _dom = $(_dom_list);
63 |
64 | _dom = _dom
65 | .add([
66 | '#footer, #goToAnswerEditor, .widget-codetool, .container.nav',
67 |
68 | '.post-topheader__side, .widget-share__full',
69 | ].join())
70 | ;
71 |
72 | return _dom;
73 | },
74 |
75 | };
76 |
77 | export = o as IDemo;
78 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/code/sourceforge.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/27/027.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | //'http*://sourceforge.net/*',
12 | 'http*://sourceforge.net/projects/*/files/*',
13 | ],
14 | exclude: [],
15 | },
16 |
17 | test(_url_obj = global._url_obj)
18 | {
19 | if (_url_obj.host.match(/sourceforge\.net/))
20 | {
21 | return true;
22 | }
23 |
24 | return false;
25 | },
26 |
27 | main(_url_obj = global._url_obj)
28 | {
29 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
30 | _uf_dom_filter_link('#files_list .file a.name, #page-body .download-bar a')
31 | .prop('target', '_blank')
32 | ;
33 |
34 | $(window).scrollTo('#page-header');
35 | },
36 |
37 | adblock(_url_obj = global._url_obj)
38 | {
39 |
40 | },
41 |
42 | clearly(_url_obj = global._url_obj)
43 | {
44 | let _dom = $();
45 |
46 | _dom = _dom
47 | .add([
48 |
49 | ].join())
50 | ;
51 |
52 | _dom.remove();
53 |
54 | return _dom;
55 | },
56 | };
57 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/comic/backup/lhscan.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://lhscan.net/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const { debounce } = require('throttle-debounce');
46 | const { throttle } = require('throttle-debounce');
47 | const _uf_fixsize2 = require('root/lib/dom/img/size')._uf_fixsize2;
48 | const keycodes = require('keycodes');
49 | const _uf_done = require('root/lib/event/done');
50 |
51 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
52 | _uf_dom_filter_link([
53 | //
54 | ])
55 | .prop('target', '_blank')
56 | ;
57 |
58 | const _img_selector = '.chapter-content .chapter-img';
59 | let _img = $(_img_selector);
60 |
61 | $(window)
62 | .on('load.ready', throttle(300, function ()
63 | {
64 | $(window).triggerHandler('resize.img');
65 |
66 | // @ts-ignore
67 | $(window).scrollTo('.chapter-content, .info-manga .well:eq(0)');
68 |
69 | }))
70 | .on('resize.img', throttle(300, function ()
71 | {
72 | _uf_fixsize2(_img, window, 1);
73 | }))
74 | .triggerHandler('load.ready')
75 | ;
76 | },
77 |
78 | adblock(_url_obj = global._url_obj)
79 | {
80 | //
81 | },
82 |
83 | clearly(_url_obj = global._url_obj, _dom_list = null)
84 | {
85 | let _dom = $(_dom_list);
86 |
87 | _dom = _dom
88 | .add([
89 | //
90 | ].join())
91 | ;
92 |
93 | return _dom;
94 | },
95 |
96 | };
97 |
98 | export = o as IDemo;
99 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/comic/manben.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/19/019.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.manben.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/manben\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const keycodes = require('keycodes');
29 | const _uf_done = require('root/lib/event/done');
30 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
31 |
32 | $(window)
33 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
34 | {
35 | switch (event.which)
36 | {
37 | case keycodes('pageup'):
38 | case keycodes('left'):
39 | var _a = $('#crossLeft');
40 |
41 | if (_a.length)
42 | {
43 | _uf_done(event);
44 | _a[0].click();
45 | }
46 |
47 | break;
48 | case keycodes('pagedown'):
49 | case keycodes('right'):
50 | var _a = $('#crossRight');
51 |
52 | if (_a.length)
53 | {
54 | _uf_done(event);
55 | _a[0].click();
56 | }
57 |
58 | break;
59 | }
60 | }))
61 | ;
62 | },
63 |
64 | adblock(_url_obj = global._url_obj)
65 | {
66 |
67 | },
68 |
69 | clearly(_url_obj = global._url_obj)
70 | {
71 | let _dom = $();
72 |
73 | _dom = _dom
74 | .add([
75 |
76 | ].join())
77 | ;
78 |
79 | _dom.remove();
80 |
81 | return _dom;
82 | },
83 | };
84 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/content/farm/fun01.cc.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/6/006.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.fun01.cc/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | let ret;
19 |
20 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
21 | {
22 | return true;
23 | }
24 | //console.debug(777, ret);
25 |
26 | /*
27 | if (_url_obj.host.match(/3dmgame\.com/))
28 | {
29 | return true;
30 | }
31 | */
32 |
33 | return false;
34 | },
35 |
36 | main(_url_obj = global._url_obj)
37 | {
38 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
39 | _uf_dom_filter_link([].join())
40 | .prop('target', '_blank')
41 | ;
42 |
43 | const _uf_disable_nocontextmenu = require('root/lib/dom/disable_nocontextmenu')
44 | ._uf_disable_nocontextmenu2(2, '.postDetail')
45 | ;
46 | },
47 |
48 | adblock(_url_obj = global._url_obj)
49 | {
50 |
51 | },
52 |
53 | clearly(_url_obj = global._url_obj, _dom_list = null)
54 | {
55 | let _dom = $(_dom_list);
56 |
57 | _dom = _dom
58 | .add([
59 | '.doLogin, .avatar',
60 | ].join())
61 | .add($('.postDetail').parentsUntil('body').addBack().siblings())
62 | .add($('.postDetail .content').nextAll())
63 | .add($('.postDetail #postEnd').nextAll())
64 | ;
65 |
66 | require('root/lib/greasemonkey/index')
67 | .GM_addStyle([
68 | `body { background: none; }`,
69 | ].join(''))
70 | ;
71 |
72 | //_dom.remove();
73 |
74 | return _dom;
75 | },
76 | };
77 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/dict/.gitignore:
--------------------------------------------------------------------------------
1 | demo.d.ts
2 | *.js
3 | !/index.js
4 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/mediawiki.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/31/031.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 100,
10 |
11 | script: true,
12 |
13 | metadata: {
14 | include: [
15 | //'http*://*.wikipedia.org/*',
16 | ],
17 | exclude: [],
18 | },
19 |
20 | test(_url_obj = global._url_obj)
21 | {
22 | if ($('body.mediawiki').length)
23 | {
24 | return 2;
25 | }
26 |
27 | return false;
28 | },
29 |
30 | main(_url_obj = global._url_obj)
31 | {
32 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
33 | _uf_dom_filter_link('a.external')
34 | .prop('target', '_blank')
35 | ;
36 | },
37 |
38 | adblock(_url_obj = global._url_obj)
39 | {
40 |
41 | },
42 |
43 | clearly(_url_obj = global._url_obj, _dom_list = null)
44 | {
45 | const greasemonkey = require('root/lib/greasemonkey/index');
46 |
47 | let _dom = $(_dom_list);
48 |
49 | _dom = _dom
50 | .add([
51 | '.uls-settings-trigger, .wbc-editpage, .wb-langlinks-edit, .mw-editsection, #p-personal, #p-search',
52 | '#footer-icons, #footer-places, .mbox-image .image, #siteNotice',
53 |
54 | '#footer, #p-logo',
55 | ].join())
56 | ;
57 |
58 | $('.collapseButton')
59 | .parents('tr')
60 | .siblings()
61 | .find(':hidden')
62 | .addBack()
63 | .show()
64 | ;
65 |
66 | greasemonkey.GM_addStyle([
67 | 'div#column-content { background-image: none; }'
68 | ].join(''));
69 |
70 | image(_url_obj);
71 |
72 | //_dom.remove();
73 |
74 | return _dom;
75 | },
76 | };
77 |
78 | function image(_url_obj)
79 | {
80 | $('#mw-content-text img')
81 | .attr('src', function (i, old)
82 | {
83 | return old.replace(/(\/images)\/thumb\/([^\/]+\/[^\/]+)\/([^\/]+)\/.+$/, '$1/$2/$3');
84 | })
85 | ;
86 | }
87 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/pagination.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 0,
10 |
11 | script: true,
12 |
13 | metadata: {
14 | include: [
15 | ],
16 | exclude: [],
17 | },
18 |
19 | test(_url_obj = global._url_obj)
20 | {
21 | if ($('.pagination a[rel*="prev"], .pagination a[rel*="next"]').length)
22 | {
23 | return 2;
24 | }
25 |
26 | return false;
27 | },
28 |
29 | main(_url_obj = global._url_obj)
30 | {
31 | require('root/lib/jquery/event').makeJQueryPlugin($, window);
32 |
33 | let _win = $(window);
34 |
35 | if (_win.eventExists('keydown'))
36 | {
37 | console.log(_win.events());
38 |
39 | return false;
40 | }
41 |
42 | _win
43 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
44 | {
45 | const keycodes = require('keycodes');
46 | const _uf_done = require('root/lib/event/done');
47 |
48 | switch (event.which)
49 | {
50 | case keycodes('pageup'):
51 | case keycodes('left'):
52 |
53 | var _a = $('.pagination a[rel*="prev"]');
54 |
55 | if (_a.length)
56 | {
57 | _uf_done(event);
58 | _a[0].click();
59 | }
60 | else
61 | {
62 | console.log(event, _a);
63 | }
64 |
65 | break;
66 | case keycodes('pagedown'):
67 | case keycodes('right'):
68 |
69 | var _a = $('.pagination a[rel*="next"]');
70 |
71 | if (_a.length)
72 | {
73 | _uf_done(event);
74 | _a[0].click();
75 | }
76 | else
77 | {
78 | console.log(event, _a);
79 | }
80 |
81 | break;
82 | }
83 | }))
84 | ;
85 | },
86 |
87 | adblock(_url_obj = global._url_obj)
88 | {
89 |
90 | },
91 |
92 | clearly(_url_obj = global._url_obj, _dom_list = null)
93 | {
94 | let _dom = $(_dom_list);
95 |
96 | _dom = _dom
97 | .add([
98 |
99 | ].join())
100 | ;
101 |
102 | //_dom.remove();
103 |
104 | return _dom;
105 | },
106 | };
107 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/pagination/page.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 0,
10 |
11 | script: true,
12 |
13 | metadata: {
14 | include: [
15 | ],
16 | exclude: [],
17 | },
18 |
19 | test(_url_obj = global._url_obj)
20 | {
21 | if ($('.pagination > .page-prev, .pagination > .page-next').length)
22 | {
23 | return 2;
24 | }
25 |
26 | return false;
27 | },
28 |
29 | main(_url_obj = global._url_obj)
30 | {
31 | require('root/lib/jquery/event').makeJQueryPlugin($, window);
32 |
33 | let _win = $(window);
34 |
35 | if (_win.eventExists('keydown'))
36 | {
37 | console.log(_win.events());
38 |
39 | return false;
40 | }
41 |
42 | _win
43 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
44 | {
45 | const keycodes = require('keycodes');
46 | const _uf_done = require('root/lib/event/done');
47 |
48 | switch (event.which)
49 | {
50 | case keycodes('pageup'):
51 | case keycodes('left'):
52 |
53 | var _a = $('.pagination > .page-prev');
54 |
55 | if (_a.length)
56 | {
57 | _uf_done(event);
58 | _a[0].click();
59 | }
60 | else
61 | {
62 | console.log(event, _a);
63 | }
64 |
65 | break;
66 | case keycodes('pagedown'):
67 | case keycodes('right'):
68 |
69 | var _a = $('.pagination > .page-next');
70 |
71 | if (_a.length)
72 | {
73 | _uf_done(event);
74 | _a[0].click();
75 | }
76 | else
77 | {
78 | console.log(event, _a);
79 | }
80 |
81 | break;
82 | }
83 | }))
84 | ;
85 | },
86 |
87 | adblock(_url_obj = global._url_obj)
88 | {
89 |
90 | },
91 |
92 | clearly(_url_obj = global._url_obj, _dom_list = null)
93 | {
94 | let _dom = $(_dom_list);
95 |
96 | _dom = _dom
97 | .add([
98 |
99 | ].join())
100 | ;
101 |
102 | //_dom.remove();
103 |
104 | return _dom;
105 | },
106 | };
107 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/pagination/pagination.active.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/22/022.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 0,
10 |
11 | script: true,
12 |
13 | metadata: {
14 | include: [
15 | ],
16 | exclude: [],
17 | },
18 |
19 | test(_url_obj = global._url_obj)
20 | {
21 | if ($('ul.pagination > .active').length)
22 | {
23 | return 2;
24 | }
25 |
26 | return false;
27 | },
28 |
29 | main(_url_obj = global._url_obj)
30 | {
31 | require('root/lib/jquery/event').makeJQueryPlugin($, window);
32 |
33 | let _win = $(window);
34 |
35 | if (_win.eventExists('keydown'))
36 | {
37 | console.log(_win.events());
38 |
39 | return false;
40 | }
41 |
42 | _win
43 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
44 | {
45 | const keycodes = require('keycodes');
46 | const _uf_done = require('root/lib/event/done');
47 |
48 | switch (event.which)
49 | {
50 | case keycodes('pageup'):
51 | case keycodes('left'):
52 |
53 | var _a = $('ul.pagination > .active').prev('li').find('a');
54 |
55 | if (_a.length)
56 | {
57 | _uf_done(event);
58 | _a[0].click();
59 | }
60 | else
61 | {
62 | console.log(event, _a);
63 | }
64 |
65 | break;
66 | case keycodes('pagedown'):
67 | case keycodes('right'):
68 |
69 | var _a = $('ul.pagination > .active').next('li').find('a');
70 |
71 | if (_a.length)
72 | {
73 | _uf_done(event);
74 | _a[0].click();
75 | }
76 | else
77 | {
78 | console.log(event, _a);
79 | }
80 |
81 | break;
82 | }
83 | }))
84 | ;
85 | },
86 |
87 | adblock(_url_obj = global._url_obj)
88 | {
89 |
90 | },
91 |
92 | clearly(_url_obj = global._url_obj, _dom_list = null)
93 | {
94 | let _dom = $(_dom_list);
95 |
96 | _dom = _dom
97 | .add([
98 |
99 | ].join())
100 | ;
101 |
102 | //_dom.remove();
103 |
104 | return _dom;
105 | },
106 | };
107 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/pagination/srp_pagination.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 0,
10 |
11 | script: true,
12 |
13 | metadata: {
14 | include: [
15 | ],
16 | exclude: [],
17 | },
18 |
19 | test(_url_obj = global._url_obj)
20 | {
21 | if ($('#srp_pagination').length)
22 | {
23 | return 2;
24 | }
25 |
26 | return false;
27 | },
28 |
29 | main(_url_obj = global._url_obj)
30 | {
31 | require('root/lib/jquery/event').makeJQueryPlugin($, window);
32 |
33 | let _win = $(window);
34 |
35 | if (_win.eventExists('keydown'))
36 | {
37 | console.log(_win.events());
38 |
39 | return false;
40 | }
41 |
42 | _win
43 | .on('keydown.page', require('root/lib/jquery/event/hotkey').packEvent(function (event)
44 | {
45 | const _uf_done = require('root/lib/event/done');
46 | const keycodes = require('keycodes');
47 |
48 | switch (event.which)
49 | {
50 | case keycodes('pageup'):
51 | case keycodes('left'):
52 | var _a = $('#srp_pagination .pre-page a');
53 |
54 | if (_a.length)
55 | {
56 | _uf_done(event);
57 | _a[0].click();
58 | }
59 |
60 | break;
61 | case keycodes('pagedown'):
62 | case keycodes('right'):
63 | var _a = $('#srp_pagination .next-page a');
64 |
65 | if (_a.length)
66 | {
67 | _uf_done(event);
68 | _a[0].click();
69 | }
70 |
71 | break;
72 | }
73 | }))
74 | ;
75 | },
76 |
77 | adblock(_url_obj = global._url_obj)
78 | {
79 |
80 | },
81 |
82 | clearly(_url_obj = global._url_obj, _dom_list = null)
83 | {
84 | let _dom = $(_dom_list);
85 |
86 | _dom = _dom
87 | .add([
88 |
89 | ].join())
90 | ;
91 |
92 | //_dom.remove();
93 |
94 | return _dom;
95 | },
96 | };
97 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/global/social.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | priority: 0,
10 |
11 | metadata: {
12 | include: [
13 | ],
14 | exclude: [],
15 | },
16 |
17 | test(_url_obj = global._url_obj)
18 | {
19 | return true;
20 | },
21 |
22 | main(_url_obj = global._url_obj)
23 | {
24 | },
25 |
26 | adblock(_url_obj = global._url_obj)
27 | {
28 | },
29 |
30 | clearly(_url_obj = global._url_obj, _dom_list = null)
31 | {
32 | let _dom = $(_dom_list);
33 |
34 | _dom = _dom
35 | .add([
36 | '#facebook-like-bottom, #fb-root',
37 | ].join())
38 | ;
39 |
40 | //_dom.remove();
41 |
42 | return _dom;
43 | },
44 | };
45 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/google/drive.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/20/020.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | disable: true,
10 |
11 | metadata: {
12 | include: [
13 | 'http*://drive.google.com/*',
14 | ],
15 | exclude: [],
16 | },
17 |
18 | test(_url_obj = global._url_obj)
19 | {
20 | if (_url_obj.host.match(/drive\.google\.com/))
21 | {
22 | return true;
23 | }
24 |
25 | return false;
26 | },
27 |
28 | main(_url_obj = global._url_obj)
29 | {
30 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
31 | _uf_dom_filter_link([
32 |
33 | ].join())
34 | .prop('target', '_blank')
35 | ;
36 |
37 | require('root/lib/jquery/event/key').makeJQueryPlugin($, window);
38 |
39 | let _win = $(window);
40 |
41 | // TODO: fix me, this not work
42 | _win
43 | .on('keydown.page', '[role="dialog"], .a-b-lc.a-b-ta-lc, .a-b-ta-Ua', require('root/lib/jquery/event/hotkey').packEvent(function (event)
44 | {
45 | const keycodes = require('keycodes');
46 | const _uf_done = require('root/lib/event/done');
47 |
48 | switch (event.which)
49 | {
50 | case keycodes('pageup'):
51 |
52 | var _a = $('.a-b-Dd-d.a-b-d');
53 |
54 | if (_a.length)
55 | {
56 | $(this).triggerKey(keycodes('left'), event.type);
57 | }
58 | else
59 | {
60 | console.log(event, _a);
61 | }
62 |
63 | break;
64 | case keycodes('pagedown'):
65 |
66 | var _a = $('.a-b-Zc-d.a-b-d');
67 |
68 | if (_a.length)
69 | {
70 | $(this).triggerKey(keycodes('right'), event.type);
71 | }
72 | else
73 | {
74 | console.log(event, _a);
75 | }
76 |
77 | break;
78 | }
79 | }))
80 | ;
81 | },
82 |
83 | adblock(_url_obj = global._url_obj)
84 | {
85 |
86 | },
87 |
88 | clearly(_url_obj = global._url_obj, _dom_list = null)
89 | {
90 | let _dom = $(_dom_list);
91 |
92 | _dom = _dom
93 | .add([
94 |
95 | ].join())
96 | ;
97 |
98 | //_dom.remove();
99 |
100 | return _dom;
101 | },
102 | };
103 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/lib/demo.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.3dmgame.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | let ret;
19 |
20 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
21 | {
22 | return true;
23 | }
24 | //console.debug(777, ret);
25 |
26 | /*
27 | if (_url_obj.host.match(/3dmgame\.com/))
28 | {
29 | return true;
30 | }
31 | */
32 |
33 | return false;
34 | },
35 |
36 | main(_url_obj = global._url_obj)
37 | {
38 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
39 | _uf_dom_filter_link([
40 |
41 | ].join())
42 | .prop('target', '_blank')
43 | ;
44 | },
45 |
46 | adblock(_url_obj = global._url_obj)
47 | {
48 |
49 | },
50 |
51 | clearly(_url_obj = global._url_obj, _dom_list = null)
52 | {
53 | let _dom = $(_dom_list);
54 |
55 | _dom = _dom
56 | .add([
57 |
58 | ].join())
59 | ;
60 |
61 | //_dom.remove();
62 |
63 | return _dom;
64 | },
65 | };
66 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/lib/metadata.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | module.exports.grant = [
6 | 'GM_registerMenuCommand',
7 | 'GM_xmlhttpRequest',
8 | 'unsafeWindow',
9 | 'GM_deleteValue',
10 | 'GM_getValue',
11 | 'GM_listValues',
12 | 'GM_setValue',
13 | 'GM_openInTab',
14 | ];
15 |
16 | module.exports.metadata = `// ==UserScript==
17 | // @name <%= pkg.name %>
18 | // @namespace bluelovers
19 | //
20 | // @description 各種網站 UX 優化 與 搭配某些插件/行為時的簡化動作 並且適合搭配 Scrapbook 擷取內容
21 | //
22 | // @version <%= pkg.version %>
23 | //
24 | // @grant <%= index.grant %>
25 | // g_r_a_n_t none
26 | //
27 | // @icon <%= index.icon %>
28 | //
29 | // @noframes
30 | // @encoding utf-8
31 | //
32 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
33 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
34 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/ux-tweak-sc.user.js
35 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/ux-tweak-sc.user.js
36 | //
37 | // @include <%= index.include %>
38 | //
39 | // @match <%= index.match %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/novel/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | *.js
3 | *.d.ts
4 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/novel/iqing.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | import { IDemo, IGlobal } from 'root/lib/core/demo';
6 |
7 | declare const global: IGlobal;
8 |
9 | 'use strict';
10 |
11 | let o: IDemo = {
12 |
13 | disable: true,
14 |
15 | metadata: {
16 | include: [],
17 | match: [
18 | 'http*://*.iqing.com/*',
19 | 'http*://*.iqing.in/*',
20 | ],
21 | exclude: [],
22 |
23 | grant: [
24 | 'GM_xmlhttpRequest',
25 | 'GM_getValue',
26 | 'GM_setValue',
27 | ],
28 | },
29 |
30 | test(_url_obj = global._url_obj)
31 | {
32 | let ret;
33 |
34 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
35 | {
36 | return true;
37 | }
38 |
39 | return false;
40 | },
41 |
42 | async main(_url_obj = global._url_obj)
43 | {
44 | await (new Promise(function (resolve, reject)
45 | {
46 | setTimeout(function ()
47 | {
48 | resolve();
49 | }, 1000);
50 | }));
51 |
52 | const GMApi = require('root/lib/greasemonkey/gm/api').GMApi;
53 |
54 | const TIMESTAMP_KEY = 'iqing_timestamp';
55 |
56 | let _a;
57 |
58 | let _ok = false;
59 |
60 | let t = GMApi.getValue(TIMESTAMP_KEY, 0);
61 | let _do = null;
62 |
63 | if ((Date.now() - t) >= (10 * 60 * 1000))
64 | {
65 | _do = true;
66 | }
67 | else
68 | {
69 | _do = false;
70 |
71 | console.info('[距離上次簽到]', (Date.now() - t) / 1000);
72 | }
73 |
74 | if (_do || 0)
75 | {
76 | const signin = require('root/lib/site/iqing/signin').default;
77 |
78 | await signin()
79 | .catch((err) =>
80 | {
81 | console.error('[簽到錯誤]', err);
82 | })
83 | .then(function (res)
84 | {
85 | GMApi.setValue(TIMESTAMP_KEY, Date.now());
86 |
87 | console.log(res);
88 | })
89 | ;
90 | }
91 | },
92 |
93 | adblock(_url_obj = global._url_obj)
94 | {
95 |
96 | },
97 |
98 | clearly(_url_obj = global._url_obj, _dom_list = null)
99 | {
100 | let _dom = $(_dom_list);
101 |
102 | _dom = _dom
103 | .add([
104 | //
105 | ].join())
106 | ;
107 |
108 | return _dom;
109 | },
110 |
111 | };
112 |
113 | export = o;
114 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/novel/lightnovel.cn.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://*.lightnovel.cn/*',
23 | 'http*://*.lightnovel.cn/*mod=viewthread*',
24 | ],
25 | match: [],
26 | nomatch: [],
27 | exclude: [],
28 |
29 | grant: [],
30 | },
31 |
32 | test(_url_obj = global._url_obj)
33 | {
34 | let ret;
35 |
36 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
37 | {
38 | return true;
39 | }
40 |
41 | return false;
42 | },
43 |
44 | async main(_url_obj = global._url_obj)
45 | {
46 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
47 | _uf_dom_filter_link([
48 | //
49 | ])
50 | .prop('target', '_blank')
51 | ;
52 |
53 | const copyonclick = require('root/lib/func/copy').copyonclick;
54 |
55 | let postlist = $('#postlist');
56 | let posts = postlist.find('> div[id^="post_"]');
57 |
58 | if (postlist.length && posts.length)
59 | {
60 | posts
61 | .each(function (index, element)
62 | {
63 | let _this = $(this);
64 |
65 | let target = $('[id^="postmessage_"]:eq(0)', _this).eq(0);
66 |
67 | $('i.pstatus', target).remove();
68 |
69 | let button = $('COPY')
70 | .attr('onclick', copyonclick(target.attr('id')))
71 | ;
72 |
73 | let authi = $('.plc .authi:eq(0)', _this)
74 | .append(button)
75 | ;
76 |
77 | console.log(authi, button);
78 | })
79 | ;
80 | }
81 | },
82 |
83 | adblock(_url_obj = global._url_obj)
84 | {
85 | //
86 | },
87 |
88 | clearly(_url_obj = global._url_obj, _dom_list = null)
89 | {
90 | let _dom = $(_dom_list);
91 |
92 | _dom = _dom
93 | .add([
94 | //
95 | ].join())
96 | ;
97 |
98 | return _dom;
99 | },
100 |
101 | };
102 |
103 | export = o as IDemo;
104 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/shop/pchome.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/19/019.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://mall.pchome.com.tw/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/mall\.pchome\.com\.tw/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 |
29 | },
30 |
31 | adblock(_url_obj = global._url_obj)
32 | {
33 |
34 | },
35 |
36 | clearly(_url_obj = global._url_obj)
37 | {
38 | let _dom = $();
39 |
40 | _dom = _dom
41 | .add([
42 |
43 | ].join())
44 | ;
45 |
46 | _dom.remove();
47 |
48 | return _dom;
49 | },
50 | };
51 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/shop/pchome/ecvip.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/26/026.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://ecvip.pchome.com.tw/*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
46 | _uf_dom_filter_link([
47 | //
48 | ])
49 | .prop('target', '_blank')
50 | ;
51 |
52 | $('#regMobile').attr('autocomplete', 'on');
53 | },
54 |
55 | adblock(_url_obj = global._url_obj)
56 | {
57 | //
58 | },
59 |
60 | clearly(_url_obj = global._url_obj, _dom_list = null)
61 | {
62 | let _dom = $(_dom_list);
63 |
64 | _dom = _dom
65 | .add([
66 | //
67 | ].join())
68 | ;
69 |
70 | return _dom;
71 | },
72 |
73 | };
74 |
75 | export = o as IDemo;
76 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/shop/post/post/gov/tw/pstmail.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/13/013.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http://postserv.post.gov.tw/pstmail/main_mail.html*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | let ret;
19 |
20 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
21 | {
22 | return true;
23 | }
24 | //console.debug(777, ret);
25 |
26 | /*
27 | if (_url_obj.host.match(/3dmgame\.com/))
28 | {
29 | return true;
30 | }
31 | */
32 |
33 | return false;
34 | },
35 |
36 | main(_url_obj = global._url_obj)
37 | {
38 | const { debounce } = require('throttle-debounce');
39 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
40 | _uf_dom_filter_link([].join())
41 | .prop('target', '_blank')
42 | ;
43 |
44 | $('#wrapper').on('DOMNodeInserted', debounce(500, function ()
45 | {
46 | $(window).triggerHandler('load.ready');
47 | }));
48 |
49 | $(window)
50 | .on('load.ready', debounce(100, function ()
51 | {
52 | let input = $('#MAILNO1');
53 |
54 | if (input.length && !input.val())
55 | {
56 | let r = /MAILNO\d?=(\d+)/;
57 |
58 | if (document.referrer.match(r) || (_url_obj && _url_obj.query.match(r)))
59 | {
60 | input
61 | .val('123')
62 | .trigger('keydown')
63 | .trigger('keyup')
64 | .val(RegExp.$1)
65 | .trigger('change')
66 | ;
67 |
68 | {
69 | let event = new Event('change');
70 | input[0].dispatchEvent(event);
71 | }
72 | }
73 | }
74 | }))
75 | ;
76 | },
77 |
78 | adblock(_url_obj = global._url_obj)
79 | {
80 |
81 | },
82 |
83 | clearly(_url_obj = global._url_obj, _dom_list = null)
84 | {
85 | let _dom = $(_dom_list);
86 |
87 | _dom = _dom
88 | .add([].join())
89 | ;
90 |
91 | //_dom.remove();
92 |
93 | return _dom;
94 | },
95 | };
96 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/torrent/jandown.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/16/016.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://www.jandown.com/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj)
17 | {
18 | if (_url_obj.host.match(/jandown\.com/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main()
27 | {
28 | const RETURN = module.exports.test(_url_obj);
29 |
30 | //console.log(_url_obj, RETURN);
31 |
32 | if (RETURN)
33 | {
34 | $('form :submit')
35 | .after('Clicked!')
36 | [0].click()
37 | ;
38 |
39 | return RETURN
40 | }
41 | },
42 |
43 | adblock()
44 | {
45 |
46 | },
47 | };
48 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/torrent/nyaa.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/16/016.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://sukebei.nyaa.si/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj)
17 | {
18 | if (_url_obj.host.match(/sukebei\.nyaa\.si/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main()
27 | {
28 | const RETURN = module.exports.test(_url_obj);
29 |
30 | //console.log(_url_obj, RETURN);
31 |
32 | if (RETURN)
33 | {
34 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
35 | _uf_dom_filter_link('.torrent-list tr > td[colspan="2"] a, #torrent-description a')
36 | .attr('target', '_blank')
37 | ;
38 |
39 | return RETURN
40 | }
41 | },
42 |
43 | adblock()
44 | {
45 |
46 | },
47 | };
48 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/wiki/moegirl.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/8/008.
3 | */
4 |
5 | "use strict";
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | metadata: {
21 | include: [
22 | //'http*://www.gamer.com.tw/*',
23 | ],
24 | match: [
25 | '*://*.moegirl.org/*',
26 | ],
27 | nomatch: [],
28 | exclude: [],
29 |
30 | grant: [],
31 | },
32 |
33 | test(_url_obj = global._url_obj)
34 | {
35 | let ret;
36 |
37 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
38 | {
39 | return true;
40 | }
41 |
42 | return false;
43 | },
44 |
45 | async main(_url_obj = global._url_obj)
46 | {
47 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
48 | _uf_dom_filter_link([
49 | '#topicpath a[href*=Category]',
50 | '.mw-category-generated a, .mw-category-generated a',
51 | '#catlinks a[href*=Category]',
52 | ].join(','))
53 | .prop('target', '_blank')
54 | ;
55 | },
56 |
57 | adblock(_url_obj = global._url_obj)
58 | {
59 | //
60 | },
61 |
62 | clearly(_url_obj = global._url_obj, _dom_list = null)
63 | {
64 | let _dom = $(_dom_list);
65 |
66 | _dom = _dom
67 | .add([
68 | //
69 | ].join())
70 | ;
71 |
72 | return _dom;
73 | },
74 |
75 | };
76 |
77 | export = o as IDemo;
78 |
79 |
--------------------------------------------------------------------------------
/src/ux-tweak-sc/wiki/wikipedia.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/7/24/024.
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = {
8 |
9 | metadata: {
10 | include: [
11 | 'http*://*.wikipedia.org/*',
12 | ],
13 | exclude: [],
14 | },
15 |
16 | test(_url_obj = global._url_obj)
17 | {
18 | if (_url_obj.host.match(/wikipedia\.org/))
19 | {
20 | return true;
21 | }
22 |
23 | return false;
24 | },
25 |
26 | main(_url_obj = global._url_obj)
27 | {
28 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
29 | _uf_dom_filter_link('a.external')
30 | .prop('target', '_blank')
31 | ;
32 | },
33 |
34 | adblock(_url_obj = global._url_obj)
35 | {
36 |
37 | },
38 |
39 | clearly(_url_obj = global._url_obj, _dom_list = null)
40 | {
41 | let _dom = $(_dom_list);
42 |
43 | _dom = _dom
44 | .add([
45 | '.uls-settings-trigger, .wbc-editpage, .wb-langlinks-edit, .mw-editsection, #p-personal, #p-search',
46 | '#footer-icons, #footer-places, .mbox-image .image, #siteNotice',
47 | ].join())
48 | ;
49 |
50 | $('.collapseButton')
51 | .parents('tr')
52 | .siblings()
53 | .find(':hidden')
54 | .addBack()
55 | .show()
56 | ;
57 |
58 | //_dom.remove();
59 |
60 | return _dom;
61 | },
62 | };
63 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/_fake.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/1/001.
3 | */
4 |
5 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
6 |
7 | declare const global: IGlobal;
8 | declare const greasemonkey: IGreasemonkey;
9 | declare const window: IWindow;
10 | declare const unsafeWindow: IWindow;
11 | declare const $: IJQueryStatic;
12 | declare const jQuery: IJQueryStatic;
13 |
14 | 'use strict';
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | disable: 2,
21 |
22 | metadata: {
23 | include: [
24 | '*://www.youtube.com/*',
25 | '*://youtube.com/*',
26 | ],
27 | match: [],
28 | nomatch: [],
29 | exclude: [
30 | 'http*://*.youtube.com/embed/*',
31 | 'http*://*.youtube.com/v/*',
32 | 'http*://creatoracademy.youtube.com/*',
33 | 'http*://artists.youtube.com/*',
34 | 'http*://kids.youtube.com/*',
35 | ],
36 |
37 | grant: [],
38 | },
39 |
40 | test(_url_obj = global._url_obj)
41 | {
42 | let ret;
43 |
44 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
45 | {
46 | return true;
47 | }
48 |
49 | return false;
50 | },
51 |
52 | async main(_url_obj = global._url_obj)
53 | {
54 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
55 | _uf_dom_filter_link([
56 | //
57 | ].join(','))
58 | .prop('target', '_blank')
59 | ;
60 | },
61 |
62 | adblock(_url_obj = global._url_obj)
63 | {
64 | //
65 | },
66 |
67 | clearly(_url_obj = global._url_obj, _dom_list = null)
68 | {
69 | let _dom = $(_dom_list);
70 |
71 | _dom = _dom
72 | .add([
73 | //
74 | ].join())
75 | ;
76 |
77 | //_dom.remove();
78 |
79 | return _dom;
80 | },
81 |
82 | };
83 |
84 | export = o as IDemo;
85 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/index.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.id = 'youtube-plus-sc';
3 | module.exports.version = '';
4 |
5 | module.exports.name = 'youtube-plus-sc';
6 | module.exports.name_en = 'youtube-plus-sc';
7 | module.exports.name_ja = 'youtube-plus-sc';
8 |
9 | module.exports.desc = '';
10 | module.exports.desc_en = '';
11 | module.exports.desc_ja = '';
12 |
13 | module.exports.namespace = '';
14 | module.exports.author = '';
15 |
16 | module.exports.icon = '';
17 |
18 | module.exports.list = [
19 | "youtube/2016/my_video",
20 | "youtube/2016/upload",
21 | "global/script"
22 | ];
23 |
24 | module.exports.list_disable = [
25 | "youtube/2016/watch",
26 | "youtube/2016"
27 | ];
28 |
29 | // for webpack, don't use this method
30 | module.exports._lib = () =>
31 | {
32 | require('root/src/youtube-plus-sc/youtube/2016/my_video');
33 | require('root/src/youtube-plus-sc/youtube/2016/upload');
34 | require('root/src/youtube-plus-sc/global/script');
35 | };
36 |
37 | module.exports.metadata = {};
38 | module.exports.metadata.include = [
39 | "*://www.youtube.com/*",
40 | "*://youtube.com/*",
41 | "https://www.youtube.com/my_videos*",
42 | "http*://www.youtube.com/upload*"
43 | ];
44 | module.exports.metadata.match = [];
45 | module.exports.metadata.exclude = [
46 | "http*://*.youtube.com/embed/*",
47 | "http*://*.youtube.com/v/*",
48 | "http*://creatoracademy.youtube.com/*",
49 | "http*://artists.youtube.com/*",
50 | "http*://kids.youtube.com/*"
51 | ];
52 | module.exports.metadata.grant = [
53 | "GM.xmlhttpRequest",
54 | "GM_xmlhttpRequest",
55 | "unsafeWindow"
56 | ];
57 |
58 | module.exports.list_script = [
59 | "global/script"
60 | ];
61 |
62 | module.exports.current = [];
63 |
64 | module.exports.default = module.exports;
65 |
66 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/index.user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/11/17/017.
3 | */
4 |
5 | 'use strict';
6 |
7 | import * as userScriptCore from 'root/lib/core';
8 | import * as index from './index';
9 |
10 | module.exports.id = index.id;
11 | module.exports.name = index.name;
12 |
13 | module.exports.indexScript = index;
14 |
15 | userScriptCore.run(module.exports.id, module.exports, jQuery, function (uxid, exports, global, window, $jq, _url)
16 | {
17 | userScriptCore.init(uxid, exports, global, window, $jq, _url);
18 | });
19 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/lib/metadata.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/6/006.
3 | */
4 |
5 | export const desc = '';
6 |
7 | export const grant = [
8 | //'GM_registerMenuCommand',
9 | 'GM_xmlhttpRequest',
10 | 'unsafeWindow',
11 | ];
12 |
13 | export const metadata = `// ==UserScript==
14 | // @name <%= index.name %>
15 | // @name:en <%= index.name_en %>
16 | // @name:zh <%= index.name %>
17 | // @namespace <%= index.namespace %>
18 | // @author <%= index.author %>
19 | //
20 | // @description <%= index.desc %>
21 | // @description:en <%= index.desc_en %>
22 | // @description:zh <%= index.desc %>
23 | //
24 | // @version <%= pkg.version %>
25 | //
26 | // @grant <%= index.grant %>
27 | // g_r_a_n_tnone
28 | //
29 | // @icon <%= index.icon %>
30 | //
31 | // @noframes
32 | // @encoding utf-8
33 | //
34 | // @homepageURL https://github.com/bluelovers/gm-user-scripts
35 | // @supportURL https://github.com/bluelovers/gm-user-scripts/issues
36 | // @downloadURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
37 | // @updateURL https://github.com/bluelovers/gm-user-scripts/raw/master/dist/<%= index.id %>.user.js
38 | //
39 | // @include <%= index.include %>
40 | //
41 | // @exclude <%= index.exclude %>
42 | //
43 | // ==/UserScript==
44 | `;
45 |
46 | export default metadata;
47 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/youtube/2016/upload.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/1/001.
3 | */
4 |
5 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
6 |
7 | declare const global: IGlobal;
8 | declare const greasemonkey: IGreasemonkey;
9 | declare const window: IWindow;
10 | declare const unsafeWindow: IWindow;
11 | declare const $: IJQueryStatic;
12 | declare const jQuery: IJQueryStatic;
13 |
14 | 'use strict';
15 |
16 | let o: IDemo = {
17 |
18 | //priority: 100,
19 |
20 | //script: true,
21 |
22 | metadata: {
23 | include: [
24 | 'http*://www.youtube.com/upload*',
25 | ],
26 | match: [],
27 | nomatch: [],
28 | exclude: [],
29 |
30 | grant: [],
31 | },
32 |
33 | test(_url_obj = global._url_obj)
34 | {
35 | let ret;
36 |
37 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports))
38 | {
39 | return true;
40 | }
41 |
42 | return false;
43 | },
44 |
45 | async main(_url_obj = global._url_obj)
46 | {
47 | const { debounce } = require('throttle-debounce');
48 | //const YU = require('root/lib/site/youtube');
49 |
50 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
51 |
52 | $(window)
53 | .on('load.ready', debounce(1500, function ()
54 | {
55 | $('#uploader-progress')
56 | .one('DOMNodeInserted', debounce(100, function ()
57 | {
58 | _uf_dom_filter_link([
59 | 'a#my_videos',
60 | ].join(','))
61 | .prop('target', '_blank')
62 | ;
63 | }))
64 | ;
65 | }))
66 | .triggerHandler('load.ready')
67 | ;
68 | },
69 |
70 | adblock(_url_obj = global._url_obj)
71 | {
72 | //
73 | },
74 |
75 | clearly(_url_obj = global._url_obj, _dom_list = null)
76 | {
77 | let _dom = $(_dom_list);
78 |
79 | _dom = _dom
80 | .add([
81 | //
82 | ].join())
83 | ;
84 |
85 | //_dom.remove();
86 |
87 | return _dom;
88 | },
89 |
90 | };
91 |
92 | export = o as IDemo;
93 |
--------------------------------------------------------------------------------
/src/youtube-plus-sc/youtube/2016/watch.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/12/1/001.
3 | */
4 |
5 | 'use strict';
6 |
7 | import { IDemo, IGlobal, IGreasemonkey, IWindow, IJQueryStatic, IUrlObject2 } from 'root/lib/core/demo';
8 |
9 | declare const global: IGlobal;
10 | declare const greasemonkey: IGreasemonkey;
11 | declare const window: IWindow;
12 | declare const unsafeWindow: IWindow;
13 | declare const $: IJQueryStatic;
14 | declare const jQuery: IJQueryStatic;
15 |
16 | let o: IDemo = {
17 |
18 | disable: true,
19 |
20 | metadata: {
21 | include: [
22 | 'http*://www.youtube.com/watch*',
23 | ],
24 | match: [],
25 | nomatch: [],
26 | exclude: [],
27 |
28 | grant: [],
29 | },
30 |
31 | test(_url_obj = global._url_obj)
32 | {
33 | let ret;
34 |
35 | if (ret = require('root/lib/greasemonkey/match').auto(_url_obj.source, module.exports) && !require('root/lib/site/youtube').isMaterial())
36 | {
37 | return true;
38 | }
39 |
40 | return false;
41 | },
42 |
43 | async main(_url_obj = global._url_obj)
44 | {
45 | const { debounce } = require('throttle-debounce');
46 | const YU = require('root/lib/site/youtube');
47 |
48 | const _uf_dom_filter_link = require('root/lib/dom/filter/link');
49 |
50 |
51 | },
52 |
53 | adblock(_url_obj = global._url_obj)
54 | {
55 | //
56 | },
57 |
58 | clearly(_url_obj = global._url_obj, _dom_list = null)
59 | {
60 | let _dom = $(_dom_list);
61 |
62 | _dom = _dom
63 | .add([
64 | //
65 | ].join())
66 | ;
67 |
68 | //_dom.remove();
69 |
70 | return _dom;
71 | },
72 |
73 | };
74 |
75 | export = o as IDemo;
76 |
--------------------------------------------------------------------------------
/test/_local-dev.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by user on 2017/8/27/027.
3 | */
4 |
5 | import * as chai from 'chai';
6 | import * as path from 'path';
7 |
8 | const rootDir = path.join(__dirname, '..');
9 |
10 | export function relative(filename): string
11 | {
12 | return path.relative(rootDir, filename);
13 | }
14 |
15 | export const expect = chai.expect;
16 |
--------------------------------------------------------------------------------
/test/match.test.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by USER on 2017/11/29/029.
3 | */
4 | export {};
5 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@bluelovers/tsconfig",
3 | "compilerOptions": {
4 | "allowJs": true,
5 |
6 | "sourceMap": false,
7 | "inlineSourceMap": true,
8 | "inlineSources": true,
9 |
10 | "baseUrl": ".",
11 | // "sourceRoot": ".",
12 | // "rootDir": ".",
13 | // "outDir": ".",
14 |
15 | "paths": {
16 | "root/src/*": [
17 | "./src/*"
18 | ],
19 | "root/*": [
20 | "./*"
21 | ]
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------