├── .eslintrc.json ├── .gitattributes ├── .gitignore ├── CurrentUploads.user.js ├── DTextStyler.user.js ├── DisplayPostInfo.user.js ├── EventListener.user.js ├── IndexedAutocomplete.user.js ├── IndexedRelatedTags.user.js ├── New_Twitter_Image_Searches_and_Stuff.user.js ├── PostModeMenuPlus.user.js ├── README.txt ├── RecentTagsCalc.user.js ├── SafelistPlus.user.js ├── SiteTagSearches.user.js ├── TranslatorAssist.user.js ├── ValidateTagInput.user.js ├── custom ├── jquery_ui_custom.css ├── qtip_tisas.css └── qtip_tisas.js ├── iqdb4chan.user.js ├── iqdbbooru.user.js ├── lib ├── concurrency.js ├── danbooru.js ├── debug.js ├── load.js ├── menu.js ├── module.js ├── network.js ├── notice.js ├── saucenao.js ├── statistics.js ├── storage.js ├── utility.js └── validate.js ├── test ├── checklibraries.user.js ├── debug_server │ ├── css │ │ ├── color.css │ │ └── settings.css │ ├── css_to_json.py │ └── file_server.py ├── test-css-1.css └── test-css-2.css └── unsupported ├── Twitter_Image_Searches_and_Stuff.user.js ├── bettersavedsearches.user.js ├── dtextstyle.user.js ├── orderblacklist.user.js ├── safelist.user.js └── validateblacklist.user.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true 5 | }, 6 | "extends": "eslint:recommended", 7 | "parserOptions": { 8 | "ecmaVersion": 12 9 | }, 10 | "rules": { 11 | "no-cond-assign": "off", 12 | "no-constant-condition": "off", 13 | "no-func-assign": "off", 14 | "comma-spacing": ["warn", { "before": false, "after": true }], 15 | "arrow-spacing": ["warn", { "before": true, "after": true }], 16 | "arrow-parens": ["warn", "always"], 17 | "arrow-body-style": ["warn", "as-needed"], 18 | "no-confusing-arrow": "warn", 19 | "prefer-arrow-callback": "warn", 20 | "consistent-this": ["warn", "context"], 21 | "dot-notation": ["warn", { "allowKeywords": false }], 22 | "object-shorthand": ["warn", "always"], 23 | "no-multi-spaces": ["warn", { "ignoreEOLComments": true }], 24 | "space-infix-ops": "warn", 25 | "key-spacing": ["warn", {"beforeColon": false, "afterColon": true }], 26 | "curly": ["warn", "multi-line", "consistent"], 27 | "indent": ["warn", 4, { "SwitchCase": 1 }], 28 | "semi": ["warn", "always"], 29 | "default-case": "error", 30 | "default-case-last": "error", 31 | "block-scoped-var": "error", 32 | "eqeqeq": ["error", "smart"], 33 | "no-array-constructor": "error", 34 | "no-caller": "error", 35 | "no-else-return": ["error", {"allowElseIf": false}], 36 | "no-return-await": "error", 37 | "no-script-url": "error", 38 | "no-unused-expressions": "error", 39 | "no-unused-vars": ["warn", {"args": "all", "argsIgnorePattern": "^_"}], 40 | "no-useless-return": "error", 41 | "require-await": "error", 42 | "max-depth": ["error", 4], 43 | "max-nested-callbacks": ["error", 3], 44 | "complexity": ["error", { "max": 10 }] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | package-lock.json 3 | package.json 4 | 5 | test/debug_server/json/ 6 | -------------------------------------------------------------------------------- /README.txt: -------------------------------------------------------------------------------- 1 | 1. Original Environment Details 2 | 3 | a. Operating System - Windows 7, Windows 8 4 | b. Browsers - Chrome 59, Firefox 54 5 | 6 | 2. Application Files 7 | 8 | a. safelist.user.js - Alternate blacklist handler for Danbooru with UI enhancements. 9 | b. validateblacklist.user.js- Addon module that validates a Danbooru blacklist. 10 | c. orderblacklist.user.js - Addon module that orders a Danbooru blacklist. 11 | d. dtextstyler.user.js - UI controls for DText styles. 12 | e. iqdb4chan.user.js - Danbooru IQDB checker for 4chan threads. 13 | f. iqdbbooru.user.js - Danbooru IQDB checker for various Boorus. 14 | g. validatetaginput.user.js - Validates tag input on a post edit, both adds and removes. 15 | h. indexedautocomplete.user.js - Uses IndexedDB for storage instead of localStorage. 16 | 17 | 3. Setup 18 | 19 | a. Install Tampermonkey (Chrome, Firefox): https://tampermonkey.net/ 20 | b. Install Javascript file(s) 21 | 22 | 4. Usage Notes 23 | 24 | a. Safelist 25 | 26 | i. Availability: 27 | 28 | Safelist will be active everywhere if enabled, however, the controls are 29 | only available on pages where Danbooru has blacklist controls. Depending 30 | on the page, the controls will appear in the sidebar or at the top of the 31 | content. 32 | 33 | Safelist settings can only be found on the image search page. The link is 34 | located to the right of the links located at the top of the content (image 35 | thumbnails). 36 | 37 | ii. Safelist Controls 38 | 39 | Clicking enable will hide Danbooru's blacklist and show the Safelist. Clicking 40 | a level will cause the settings associated with that level to go into effect. 41 | Clicking disable will show Danbooru's blacklist and collapse the Safelist 42 | controls. 43 | 44 | Each level can also have a hotkey associated with it which are enabled only if 45 | Safelist is enabled. Using the hotkey is the same as clicking the level link. 46 | 47 | iii. Settings 48 | 49 | General Settings: 50 | 51 | - Name: Change the name of Safelist (HTML allowed). 52 | - Replacement Text: Used with Enable Text Replace function (plaintext only). 53 | - Enable Tag Hide: Hide all occurrences of a tag in sidemenus and tables. 54 | - Enable Text Replace: Replace all occurrences of a tag with Replacement 55 | Text in prose and titles. 56 | - Enable Write Mode: Enable writes to your Danbooru blacklist with the 57 | Push button. 58 | - Enable Validate Mode: Enable ValidateBlacklist addon if installed. 59 | Click Validate button to activate. 60 | - Enable Order Mode: Enable OrderBlacklist addon if installed. 61 | Click Order button to activate. 62 | - Use Session Enable: Have a different state of enabled on each page tab. 63 | - Use Session Level: Have a different active level on each page tab. 64 | 65 | Level Settings: 66 | 67 | - Name: Change the name of the level (HTML allowed). 68 | - Hotkey: Key combination used to change levels. 69 | - Enable: (All/None) Enable or disable these constant lists. 70 | - Background Process: Process a list in the background so that changing 71 | lists is more responsive. 72 | - Blacklisted Tags: Work exactly the same as Danbooru's blacklist 73 | - Custom CSS: Style to apply to the whole site. 74 | 75 | General controls: 76 | 77 | - Submit: Save all of the settings and reload as required. 78 | - Add: Add a new level. 79 | - Reset All: Reset all settings to factory default. 80 | - Show Raw: Used to transfer settings between domains/computers. 81 | 82 | Level controls: 83 | 84 | - Pull: Populate tag list with a user's Danbooru blacklist tags. 85 | - Push: Write a tag list to a user's Danbooru blacklist. 86 | - Validate: Activates the ValidateBlacklist addon for the tag list. 87 | - Order: Activates the OrderBlacklist addon for the tag list. 88 | - Reset: Resets the module addon, causing it to stop. 89 | - Apply: Apply the recommended changes to the tag list window. 90 | - Delete: Delete the level. 91 | 92 | b. ValidateBlacklist 93 | 94 | Two classes are exported to the window variable for use. 95 | 96 | i. TextboxLogger: 97 | 98 | Provides user feedback and should be instantiated with the DOM name 99 | of a