您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Crawling the Wiki and refactor it the good way
当前为
- // ==UserScript==
- // @name DSA Wiki Crawler
- // @namespace http://tampermonkey.net/
- // @version 0.1.2
- // @description Crawling the Wiki and refactor it the good way
- // @author David Mahl
- // @match http://www.ulisses-regelwiki.de/index.php/sonderfertigkeiten.html
- // @grant none
- // @require http://code.jquery.com/jquery-latest.js
- // @require https://cdn.jsdelivr.net/lodash/4.14.2/lodash.min.js
- // ==/UserScript==
- (function() {
- 'use strict';
- var stop= false,
- storage = {},
- CONST = {
- 'CONTENT' : {
- 'PUBLIKATION':'Publikation:',
- 'ASP':'AsP-Kosten:',
- 'AP':'AP-Wert:',
- 'ERSCHWERNIS':'Erschwernis:',
- 'VORAUSSETZUNGEN':'Voraussetzungen:',
- 'KAMPFTECHNIKEN':'Kampftechniken:'
- },
- 'GLOBAL' : {
- 'CUTPARAGRAPH': 4,
- 'CUTSTRONG': 10,
- 'ARTICLEQUERY':'.mod_article .ce_text',
- 'ITEMQUERY':'nav table a[role="menuitem"]'
- }
- },
- app = {
- getAllNavigationEntrys: function(result, entryPoint) {
- var $itemQuery = $(CONST.GLOBAL.ITEMQUERY),
- $article = $(CONST.GLOBAL.ARTICLEQUERY),
- content = {
- 'publikation': undefined,
- 'asp':undefined,
- 'ap':undefined,
- 'erschwernis':undefined,
- 'vorraussetzungen':undefined,
- 'kampftechniken':undefined,
- 'info': ""
- };
- if (result !== undefined) {
- $itemQuery = $(result).find(CONST.GLOBAL.ITEMQUERY);
- $article = $(result).find(CONST.GLOBAL.ARTICLEQUERY);
- }
- //console.log('EntryPoint',entryPoint,' ',$article.length);
- if ($article.length === 1) {
- $article.find('p').each(function(i, e){
- var element = $(e).prop('outerText'),
- publikationIndex = element.indexOf(CONST.CONTENT.PUBLIKATION),
- aspIndex = element.indexOf(CONST.CONTENT.ASP),
- apIndex = element.indexOf(CONST.CONTENT.AP),
- erschwernisIndex = element.indexOf(CONST.CONTENT.ERSCHWERNIS),
- voraussetzungIndex = element.indexOf(CONST.CONTENT.VORAUSSETZUNGEN),
- kampftechIndex = element.indexOf(CONST.CONTENT.KAMPFTECHNIKEN),
- text = "";
- if (publikationIndex >= 0) {
- text = element.substring(publikationIndex + CONST.CONTENT.PUBLIKATION.length +1, element.length);
- content.publikation = text;
- } else if (aspIndex >= 0) {
- content.asp = element.substring(aspIndex + CONST.CONTENT.ASP.length +1, element.length);
- } else if (apIndex >= 0) {
- content.ap = element.substring(apIndex + CONST.CONTENT.AP.length +1, element.length);
- } else if (erschwernisIndex >= 0) {
- content.ap = element.substring(erschwernisIndex + CONST.CONTENT.ERSCHWERNIS.length +1, element.length);
- } else if (voraussetzungIndex >= 0) {
- content.ap = element.substring(voraussetzungIndex + CONST.CONTENT.VORAUSSETZUNGEN.length +1, element.length);
- } else if (kampftechIndex >= 0) {
- content.ap = element.substring(kampftechIndex + CONST.CONTENT.KAMPFTECHNIKEN.length +1, element.length);
- } else {
- text = element.substring(0, element.length);
- content.info = content.info + text;
- }
- });
- _.setWith(storage, entryPoint+'.content', content);
- }
- $itemQuery.each(function(i, e) {
- var title = $(this).attr('title'),
- href= $(this).attr('href'),
- objectPath= entryPoint === undefined?'root.'+title:entryPoint+'.children.'+title;
- _.setWith(storage, objectPath, {'title':title, 'href':href});
- if (stop === false) {
- app.writeToLocalStorage();
- app.crawlSubNavigation(_.get(storage, objectPath + '.href'), objectPath);
- }
- });
- //stop = true;
- },
- crawlSubNavigation: function(url, parent) {
- app.loadPage(url)
- .then(app.parsePage.bind(null, parent))
- .fail(function (err) {
- throw new Error('Error while Loading Time');
- });
- },
- updateContent: function($text){
- return {'text':$text};
- },
- parsePage: function(entryPoint, result) {
- app.getAllNavigationEntrys(result, entryPoint);
- },
- loadPage: function(url) {
- return $.ajax( {
- url: url,
- type: "POST",
- dataType: "html"
- });
- },
- writeToLocalStorage() {
- // Put the object into storage
- var checksum = Object.keys(storage).length;
- // ToDo: add Checksum
- localStorage.setItem('wikiData', JSON.stringify(storage));
- localStorage.setItem('wikiData.checksum','123');
- },
- init: function() {
- // Retrieve the object from storage
- var retrievedObject = localStorage.getItem('wikiData'),
- checksum = localStorage.getItem('wikiData.checksum');
- app.parsePage();
- if (retrievedObject === null) {
- //app.parsePage();
- } else {
- //storage = JSON.parse(retrievedObject);
- }
- console.log('Storage:',storage);
- }
- };
- app.init();
- })();