Rss Helper

This is a good monkey

当前为 2018-11-20 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Rss Helper
  3. // @version 0.0.1
  4. // @description This is a good monkey
  5. // @author SettingDust
  6. //
  7. // @include http*://*
  8. //
  9. // @require https://cdn.bootcss.com/jquery/3.3.1/jquery.js
  10. //
  11. // @grant GM_addStyle
  12. // @namespace https://greasyfork.org/users/149095
  13. // ==/UserScript==
  14.  
  15. !(function(modules) {
  16. var installedModules = {};
  17. function __webpack_require__(moduleId) {
  18. if (installedModules[moduleId]) return installedModules[moduleId].exports;
  19. var module = (installedModules[moduleId] = {
  20. i: moduleId,
  21. l: !1,
  22. exports: {}
  23. });
  24. return (
  25. modules[moduleId].call(module.exports, module, module.exports, __webpack_require__),
  26. (module.l = !0),
  27. module.exports
  28. );
  29. }
  30. (__webpack_require__.m = modules),
  31. (__webpack_require__.c = installedModules),
  32. (__webpack_require__.d = function(exports, name, getter) {
  33. __webpack_require__.o(exports, name) ||
  34. Object.defineProperty(exports, name, {
  35. enumerable: !0,
  36. get: getter
  37. });
  38. }),
  39. (__webpack_require__.r = function(exports) {
  40. 'undefined' != typeof Symbol &&
  41. Symbol.toStringTag &&
  42. Object.defineProperty(exports, Symbol.toStringTag, {
  43. value: 'Module'
  44. }),
  45. Object.defineProperty(exports, '__esModule', {
  46. value: !0
  47. });
  48. }),
  49. (__webpack_require__.t = function(value, mode) {
  50. if ((1 & mode && (value = __webpack_require__(value)), 8 & mode)) return value;
  51. if (4 & mode && 'object' == typeof value && value && value.__esModule) return value;
  52. var ns = Object.create(null);
  53. if (
  54. (__webpack_require__.r(ns),
  55. Object.defineProperty(ns, 'default', {
  56. enumerable: !0,
  57. value: value
  58. }),
  59. 2 & mode && 'string' != typeof value)
  60. )
  61. for (var key in value)
  62. __webpack_require__.d(
  63. ns,
  64. key,
  65. function(key) {
  66. return value[key];
  67. }.bind(null, key)
  68. );
  69. return ns;
  70. }),
  71. (__webpack_require__.n = function(module) {
  72. var getter =
  73. module && module.__esModule
  74. ? function() {
  75. return module.default;
  76. }
  77. : function() {
  78. return module;
  79. };
  80. return __webpack_require__.d(getter, 'a', getter), getter;
  81. }),
  82. (__webpack_require__.o = function(object, property) {
  83. return Object.prototype.hasOwnProperty.call(object, property);
  84. }),
  85. (__webpack_require__.p = ''),
  86. __webpack_require__((__webpack_require__.s = 0));
  87. })([
  88. function(module, exports, __webpack_require__) {
  89. const Route = __webpack_require__(1),
  90. router = new (__webpack_require__(2))();
  91. router.push(new Route(/yande\.re\/.*/, __webpack_require__(3))),
  92. router.push(new Route(/www\.bilibili\.com\/.*/, __webpack_require__(8))),
  93. console.debug('[RSSHelper]', router),
  94. router.load(location.href);
  95. },
  96. function(module, exports) {
  97. module.exports = class {
  98. constructor(url, route) {
  99. (this._url = url), (this._route = route);
  100. }
  101. get url() {
  102. return this._url;
  103. }
  104. get route() {
  105. return this._route;
  106. }
  107. test(link) {
  108. return new RegExp(this.url).test(link);
  109. }
  110. match(link) {
  111. return new RegExp(this.url).exec(link);
  112. }
  113. call(args) {
  114. this.route(args);
  115. }
  116. };
  117. },
  118. function(module, exports) {
  119. module.exports = class {
  120. constructor() {
  121. this._routes = [];
  122. }
  123. push(router) {
  124. this.routes.push(router);
  125. }
  126. get routes() {
  127. return this._routes;
  128. }
  129. load(href) {
  130. this.routes.forEach((route) => {
  131. route.test(href) &&
  132. (console.debug('[RSSHelper]', route.match(href)),
  133. route.call(route.match(href)));
  134. });
  135. }
  136. };
  137. },
  138. function(module, exports, __webpack_require__) {
  139. const Route = __webpack_require__(1),
  140. router = new (__webpack_require__(2))();
  141. router.push(new Route(/tags=(?:(.*))?/, __webpack_require__(4))),
  142. router.push(new Route(/(post)\?(?!tags=.+)/, __webpack_require__(5))),
  143. (module.exports = async (args) => {
  144. router.load(args), GM_addStyle(__webpack_require__(6).toString());
  145. });
  146. },
  147. function(module, exports) {
  148. const rssElem = $('<a/>');
  149. rssElem.attr('title', 'Feed'),
  150. rssElem.attr('target', '_blank'),
  151. rssElem.text('Feed'),
  152. (module.exports = async (args) => {
  153. rssElem.attr('href', `https://yande.re/post/piclens?tags=${args[1]}`),
  154. $('#post-list > div.sidebar > div:nth-child(1) > form > div').append(rssElem);
  155. });
  156. },
  157. function(module, exports) {
  158. const rssElem = $('<a/>');
  159. rssElem.attr('title', 'Feed'),
  160. rssElem.attr('target', '_blank'),
  161. rssElem.text('Feed'),
  162. (module.exports = async () => {
  163. rssElem.attr('href', 'https://yande.re/post/piclens'),
  164. $('#post-list > div.sidebar > div:nth-child(1) > form > div').append(rssElem);
  165. });
  166. },
  167. function(module, exports, __webpack_require__) {
  168. (module.exports = __webpack_require__(7)(!1)).push([
  169. module.i,
  170. '#post-list>div.sidebar>div:first-child>form>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}',
  171. ''
  172. ]);
  173. },
  174. function(module, exports) {
  175. module.exports = function(useSourceMap) {
  176. var list = [];
  177. return (
  178. (list.toString = function() {
  179. return this.map(function(item) {
  180. var content = (function(item, useSourceMap) {
  181. var content = item[1] || '',
  182. cssMapping = item[3];
  183. if (!cssMapping) return content;
  184. if (useSourceMap && 'function' == typeof btoa) {
  185. var sourceMapping = ((sourceMap = cssMapping),
  186. '/*# sourceMappingURL=data:application/json;charset=utf-8;base64,' +
  187. btoa(
  188. unescape(encodeURIComponent(JSON.stringify(sourceMap)))
  189. ) +
  190. ' */'),
  191. sourceURLs = cssMapping.sources.map(function(source) {
  192. return (
  193. '/*# sourceURL=' +
  194. cssMapping.sourceRoot +
  195. source +
  196. ' */'
  197. );
  198. });
  199. return [content]
  200. .concat(sourceURLs)
  201. .concat([sourceMapping])
  202. .join('\n');
  203. }
  204. var sourceMap;
  205. return [content].join('\n');
  206. })(item, useSourceMap);
  207. return item[2] ? '@media ' + item[2] + '{' + content + '}' : content;
  208. }).join('');
  209. }),
  210. (list.i = function(modules, mediaQuery) {
  211. 'string' == typeof modules && (modules = [[null, modules, '']]);
  212. for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) {
  213. var id = this[i][0];
  214. 'number' == typeof id && (alreadyImportedModules[id] = !0);
  215. }
  216. for (i = 0; i < modules.length; i++) {
  217. var item = modules[i];
  218. ('number' == typeof item[0] && alreadyImportedModules[item[0]]) ||
  219. (mediaQuery && !item[2]
  220. ? (item[2] = mediaQuery)
  221. : mediaQuery &&
  222. (item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'),
  223. list.push(item));
  224. }
  225. }),
  226. list
  227. );
  228. };
  229. },
  230. function(module, exports, __webpack_require__) {
  231. const Route = __webpack_require__(1),
  232. router = new (__webpack_require__(2))();
  233. router.push(new Route(/video\/av\d+/, __webpack_require__(9))),
  234. (module.exports = async (args) => {
  235. router.load(args),
  236. GM_addStyle(__webpack_require__(10).toString()),
  237. console.debug('[RSSHelper]', __webpack_require__(10).toString());
  238. });
  239. },
  240. function(module, exports) {
  241. const rssElem = $('<a/>');
  242. rssElem.addClass('btn'),
  243. rssElem.addClass('bi-btn'),
  244. rssElem.attr('id', 'feed'),
  245. rssElem.attr('target', '_blank'),
  246. rssElem.text('Feed'),
  247. (module.exports = async () => {
  248. let mid = $('#v_upinfo .u-face>a')
  249. .attr('href')
  250. .match(/\d+/)[0];
  251. rssElem.attr('href', `https://rsshub.app/bilibili/user/video/${mid}`);
  252. let task = setInterval(() => {
  253. $('.b-cd .cd').length &&
  254. ($('#v_upinfo .btn').prepend(rssElem), clearInterval(task));
  255. }, 500);
  256. });
  257. },
  258. function(module, exports, __webpack_require__) {
  259. (module.exports = __webpack_require__(7)(!1)).push([
  260. module.i,
  261. '#v_upinfo #feed{padding-left:16px;padding-right:16px;margin-left:12px;margin-top:0}',
  262. ''
  263. ]);
  264. }
  265. ]);