Welcome Guest ( Log In | Register )

8 Pages V « < 5 6 7 8 >  
Reply to this topicStart new topic
> Userscript index, For non-HV scripts

 
post Jun 19 2023, 23:26
Post #121
Mayriad



SUPER ★ BUSY ★ TIME
*******
Group: Global Mods
Posts: 2,061
Joined: 18-December 10
Level 135 (Lord)


QUOTE(romanicyte @ May 29 2023, 03:43) *
I asked Mayriad to make a script for me some time ago, so I thought about sharing it.

By her own words "It gives the count after the "Showing X - X of X images" message if there is at least one GIF".
It also highlights which thumbnails are GIFs.

Description: Highlight GIF thumbnails by border and mention a count.
[gist.github.com] EH Gallery GIF Indicator

I will eventually add it to my master script, but I will add it to the index for now.

QUOTE(Justlookingfortheway @ May 31 2023, 16:12) *
Is there a script for double page viewing in mpv? I just want to read manga like they were printed and no more double page splits.

This is impossible since the site cannot determine what pages should be next to each other to look like a correct book. Even if you don't care about the correct pairing of pages, the MPV is complicated and there is no good solution; my master script has an experimental feature for this, but it is random and I made it for fun.

QUOTE(cillywillyboy @ Jun 13 2023, 15:55) *
Are there any script that gives you a "random" gallery button on your favorites?? Nhentai have this and its one of the few features I wish we also had here.

A nice random button is impossible if you are talking about favourites, because the gid search Cipher-kun mentioned is not supported there. Only a very dumb solution that saves all links in advance is doable.

QUOTE(cillywillyboy @ Jun 14 2023, 06:18) *
How about 1 button to go directly to read-mode without having to go in the gallery and click the first image? I'm asking because some works I'd rather not spoil myself with the first 5 images on the frontpage of the gallery view.

This is also impossible if you want to go straight to the standard single page viewer instead of MPV, because you cannot know the URL of the first page before entering the gallery. However, if you want to go straight to the MPV, my script already has a feature for this.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 20 2023, 02:35
Post #122
Anusinspectorr



Newcomer
**
Group: Members
Posts: 72
Joined: 26-April 20
Level 338 (Dovahkiin)


Does the Tagging Checker script still work?? I installed the newest version posted by that other guy in the thread but It dosen't seem to do anything and the thread is locked

This post has been edited by cillywillyboy: Jun 20 2023, 05:59
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 20 2023, 20:47
Post #123
Shank



Roll for Initiative
**********
Group: Global Mods
Posts: 9,278
Joined: 19-May 12
Level 500 (Ponyslayer)


https://forums.e-hentai.org/index.php?showt...189531&st=0 it's opened now, but super probably won't see any reply to it, not sure he reads the forum much anymore
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post May 8 2024, 01:20
Post #124
프레이



Only one group, up to homomorphism
*****
Group: Gold Star Club
Posts: 701
Joined: 21-October 17
Level 500 (Ponyslayer)


gallery filter thing
https://forums.e-hentai.org/index.php?showtopic=276325
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 16 2024, 22:32
Post #125
-CerealKiller-



Lurker
Group: Recruits
Posts: 4
Joined: 21-August 17
Level 22 (Apprentice)


Jump to a random gallery

Didn't want to create a separate thread since this has an external dependency, and it's a pretty hacky implementation.

Modify @match and @exclude to include appropriate urls. Can't add links in first post

CODE

// ==UserScript==
// @name         Exh-Random
// @version      1.0
// @description  Navigate to a random gallery
// @author       ChatGPT
// @run-at       document-end
// @match        <add e-h, ex, and onion url>
// @exclude      <match gallery url with /g/*>
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const Max = localStorage.getItem("EHPS-maxGID");

    // Create the button element
    const button = document.createElement('button');
    button.id = 'randomPageButton';
    button.textContent = 'Go to Random Page';
    button.style.position = 'fixed';
    button.style.top = '10px';
    button.style.right = '10px';
    button.style.padding = '10px';
    button.style.backgroundColor = '#4CAF50';
    button.style.color = 'white';
    button.style.border = 'none';
    button.style.borderRadius = '5px';
    button.style.cursor = 'pointer';

    // Set the onclick event for the button
    button.onclick = function() {
        const randomNumber = Math.floor(Math.random() * Max) + 1;

        // Get the current URL and append &next=random
        const url = window.location.href + `&next=${randomNumber}`;

        // Fetch the HTML of the page
        fetch(url)
        .then(response => response.text())
        .then(html => {
            // Parse the HTML
            const parser = new DOMParser();
            const doc = parser.parseFromString(html, 'text/html');

            // Select all the URLs from the table
            var urls = Array.from(doc.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);

            // If there are no URLs, display a toast
            if (urls.length === 0) {
                // Create a new div element for the toast
                var toast = document.createElement('div');

                // Set the text content of the toast
                toast.textContent = 'No Galleries Detected';

                // Style the toast
                toast.style.position = 'fixed';
                toast.style.top = '55px';
                toast.style.right = '10px';
                toast.style.padding = '10px';
                toast.style.backgroundColor = '#dc3545'; // Red color
                toast.style.color = 'white';
                toast.style.borderRadius = '5px';
                toast.style.opacity = '0';
                toast.style.transition = 'opacity 0.5s ease-in-out';

                // Append the toast to the body
                document.body.appendChild(toast);

                // Fade in the toast
                setTimeout(function() {
                    toast.style.opacity = '1';
                }, 0);

                // Fade out and remove the toast after 3 seconds
                setTimeout(function() {
                    toast.style.opacity = '0';
                    setTimeout(function() {
                        document.body.removeChild(toast);
                    }, 500); // Wait for the fade out transition to finish before removing the toast
                }, 2000);

                return;
            }
            // Select a random URL
            var randomUrl = urls[Math.floor(Math.random() * urls.length)];

            // Open the random URL in a new tab
            window.open(randomUrl, '_blank');
        });
    };

    // Append the button to the body
    document.body.appendChild(button);
})();


Requires Meldo-Megimi/EH-Page-Scrobbler (search on github. Can't include links) installed and running (this script fetches a variable set by that one)

This is mostly coded by ChatGPT and held together by hopes and dreams. If there's a better and more efficient script doing something similar, point me toward that

Will not work for the watched page most of the time because there's an upper limit to how far back you can go. if someone knows what that upper limit is, lmk and I can update the script accordingly

I have not tested all edge cases, so this script might do something unexpected. You have been warned

Spamming the button might trigger bot protection
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 16 2024, 22:53
Post #126
Shank



Roll for Initiative
**********
Group: Global Mods
Posts: 9,278
Joined: 19-May 12
Level 500 (Ponyslayer)


QUOTE(-CerealKiller- @ Jun 16 2024, 20:32) *

Will not work for the watched page most of the time because there's an upper limit to how far back you can go. if someone knows what that upper limit is, lmk and I can update the script accordingly

Unless I missed a change with some of the recent updates, it should be:
Cut off after ~7 days for most users
No cutoff for gold star donators
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 17 2024, 09:35
Post #127
-CerealKiller-



Lurker
Group: Recruits
Posts: 4
Joined: 21-August 17
Level 22 (Apprentice)


QUOTE(Shank @ Jun 16 2024, 12:53) *

Unless I missed a change with some of the recent updates, it should be:
Cut off after ~7 days for most users
No cutoff for gold star donators

Any idea roughly how many galleries are uploaded here per day? That way I can set a max gid range for the watched page to 7 days worth of gids
And is there any way to detect gold star donators? Then I can disable that range limitations for those accounts
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 17 2024, 13:07
Post #128
Shank



Roll for Initiative
**********
Group: Global Mods
Posts: 9,278
Joined: 19-May 12
Level 500 (Ponyslayer)


Best way would probably just be a checkbox that someone with a gold star can tick?
Else the only way I'm aware of, would be their profile page shows they are in the gold star group (or catgirl which also counts), though that misses at least 2 users.

Re average amount of uploads, that'll vary wildly, esp. around events like comiket, but even just, someone figuring out how to use something like pixivutils, so I dunno if any reliable number could be got. There are date selectors (click Jump/Seek to get those options), you might be able to work out some averages by just entering a date, pressing the < Prev button (which takes you to the start of the date), then doing it again for the same date and pressing the > Next button (which takes you to the end of the date), and just calculating the difference between the gid's, though it'll not be perfectly accurate due to private galleries and updated galleries.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 17 2024, 22:46
Post #129
-CerealKiller-



Lurker
Group: Recruits
Posts: 4
Joined: 21-August 17
Level 22 (Apprentice)


Here's the updated script:

CODE
// ==UserScript==
// @name         Exh-Random
// @version      1.0
// @description  Navigate to a random gallery
// @author       -CerealKiller-
// @run-at       document-end
// @match        https://e-hentai.org/*
// @match        https://e-hentai.org/*
// @match        http://e-hentai55ld2wyap5juskbm67czulomrouspdacjamjeloj7ugjbsad.onion/*
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/popular
// @exclude      https://e-hentai.org/popular
// @exclude      https://e-hentai.org/torrents.php
// @exclude      https://e-hentai.org/torrents.php
// @exclude      https://e-hentai.org/uconfig.php
// @exclude      https://e-hentai.org/uconfig.php
// @exclude      https://e-hentai.org/mytags
// @exclude      https://e-hentai.org/mytags
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/gallerypopups.php*
// @exclude      https://e-hentai.org/gallerypopups.php*
// @grant        none
// @icon         https://e-hentai.org/favicon.ico
// ==/UserScript==

(function() {
    'use strict';

    const Max = localStorage.getItem("EHPS-maxGID");
    if (!Max) {
        showToast('Need Userscript "Eh - Page Scrobbler"', document.getElementById('randomPageButton'));
        return;
    }
    const currentUrl = window.location.href;
    const isWatchedPage = currentUrl.startsWith("https://e-hentai.org/watched");

    // create button
    function createButton(id, text, top, right) {
        const button = document.createElement('button');
        button.id = id;
        button.textContent = text;
        button.style.position = 'fixed';
        button.style.top = top;
        button.style.right = right;
        button.style.padding = '10px';
        button.style.backgroundColor = '#4CAF50';
        button.style.color = 'white';
        button.style.border = 'none';
        button.style.borderRadius = '5px';
        button.style.cursor = 'pointer';
        document.body.appendChild(button);
        return button;
    }

    // create checkbox
    function createCheckbox(id, labelText, top, right) {
        const checkbox = document.createElement('input');
        checkbox.type = 'checkbox';
        checkbox.id = id;
        checkbox.style.position = 'fixed';
        checkbox.style.top = top;
        checkbox.style.right = right;

        const label = document.createElement('label');
        label.htmlFor = id;
        label.appendChild(document.createTextNode(labelText));
        label.style.position = 'fixed';
        label.style.top = top;
        label.style.right = `${parseInt(right) + 20}px`;

        document.body.appendChild(checkbox);
        document.body.appendChild(label);

        return checkbox;
    }

    // show toast
    function showToast(message, button) {
        const toast = document.createElement('div');
        toast.textContent = message;
        toast.style.position = 'fixed';
        toast.style.top = `${button.offsetTop + button.offsetHeight + 5}px`;
        toast.style.right = '10px';
        toast.style.padding = '10px';
        toast.style.backgroundColor = '#dc3545';
        toast.style.color = 'white';
        toast.style.borderRadius = '5px';
        toast.style.opacity = '0';
        toast.style.transition = 'opacity 0.5s ease-in-out';
        document.body.appendChild(toast);

        setTimeout(() => {
            toast.style.opacity = '1';
        }, 0);

        setTimeout(() => {
            toast.style.opacity = '0';
            setTimeout(() => {
                document.body.removeChild(toast);
            }, 500);
        }, 2000);
    }

    // handle button click
    async function handleButtonClick() {
        showToast('Loading', document.getElementById('randomPageButton'));

        const isGoldStar = localStorage.getItem('gold') === 'true';
        let randomNumber;
        if (isWatchedPage && !isGoldStar && (new URLSearchParams(window.location.search).has('f_search'))) {
            const newUrl = `${currentUrl}&jump=52d`;
            const response = await fetch(newUrl);
            const html = await response.text();
            const parser = new DOMParser();
            const doc = parser.parseFromString(html, 'text/html');
            let urls = Array.from(doc.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);

            if (urls.length === 0) {
                urls = Array.from(document.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);
            }

            const lastUrl = urls[urls.length - 1];
            const Min = parseInt(lastUrl.match(/\/g\/(\d+)\//)[1]);
            randomNumber = Math.floor(Math.random() * (Max - Min + 1)) + Min;
        } else {
            randomNumber = Math.floor(Math.random() * Max) + 1;
        }

        const url = `${window.location.href}&next=${randomNumber}`;
        const response2 = await fetch(url);
        const html2 = await response2.text();
        const doc2 = new DOMParser().parseFromString(html2, 'text/html');
        const urls = Array.from(doc2.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);

        if (urls.length === 0) {
            showToast('No Galleries Detected', document.getElementById('randomPageButton'));
            return;
        }

        const randomUrl = urls[Math.floor(Math.random() * urls.length)];
        window.open(randomUrl, '_blank');
    }

    // Create random page button
    const button = createButton('randomPageButton', 'Go to Random Gallery', '10px', '10px');
    button.addEventListener('click', handleButtonClick);

    // watched page and gold star donators
    if (isWatchedPage) {
        const checkbox = createCheckbox('goldCheckbox', 'Gold Star Donator?', '10px', `${parseInt(button.style.right) + button.offsetWidth + 5}px`);
        checkbox.addEventListener('change', () => {
            localStorage.setItem('gold', checkbox.checked);
        });

        // Set initial checkbox state based on stored value
        checkbox.checked = localStorage.getItem('gold') === 'true';
    }
})();

The watched page can now select from up to 52 days in the past. From my testing, if no tags are searched for in the watched history, the entire watch history is available, which is restricted to ~52 days if even one tag is searched. Gold start donators can tick the checkbox to bypass this 52-day restriction in the script

Edit: The limit looks much more complicated. I'm seeing different GID limits for different search terms and profiles

This post has been edited by -CerealKiller-: Jun 24 2024, 22:42
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jun 24 2024, 22:46
Post #130
-CerealKiller-



Lurker
Group: Recruits
Posts: 4
Joined: 21-August 17
Level 22 (Apprentice)


Minor update to the randomizer script. Changed some logic and limits
CODE
// ==UserScript==
// @name         Exh-Random
// @version      1.3
// @description  Navigate to a random gallery
// @author       -CerealKiller-
// @run-at       document-end
// @match        https://e-hentai.org/*
// @match        https://e-hentai.org/*
// @match        http://e-hentai55ld2wyap5juskbm67czulomrouspdacjamjeloj7ugjbsad.onion/*
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/popular
// @exclude      https://e-hentai.org/popular
// @exclude      https://e-hentai.org/torrents.php
// @exclude      https://e-hentai.org/torrents.php
// @exclude      https://e-hentai.org/uconfig.php
// @exclude      https://e-hentai.org/uconfig.php
// @exclude      https://e-hentai.org/mytags
// @exclude      https://e-hentai.org/mytags
// @exclude      https://e-hentai.org/g/*
// @exclude      https://e-hentai.org/gallerypopups.php*
// @exclude      https://e-hentai.org/gallerypopups.php*
// @grant        GM_getValue
// @grant        GM_setValue
// @icon         https://e-hentai.org/favicon.ico
// ==/UserScript==

(function() {
    'use strict';

    const CONSTANTS = {
        BUTTON_ID: 'randomPageButton',
        CHECKBOX_ID: 'goldCheckbox',
        TOAST_DURATION: 2000,
        DEBOUNCE_DELAY: 300,
    };

    let cachedMax = null;

    function getMax() {
        if (cachedMax === null) {
            cachedMax = localStorage.getItem("EHPS-maxGID");
        }
        return cachedMax;
    }

    function createButton(id, text, top, right) {
        const button = document.createElement('button');
        button.id = id;
        button.textContent = text;
        button.style.cssText = `
            position: fixed;
            top: ${top};
            right: ${right};
            padding: 10px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        `;
        document.body.appendChild(button);
        return button;
    }

    function createCheckbox(id, labelText, top, right) {
        const checkbox = document.createElement('input');
        checkbox.type = 'checkbox';
        checkbox.id = id;
        checkbox.style.cssText = `
            position: fixed;
            top: ${top};
            right: ${right};
        `;

        const label = document.createElement('label');
        label.htmlFor = id;
        label.appendChild(document.createTextNode(labelText));
        label.style.cssText = `
            position: fixed;
            top: ${top};
            right: ${parseInt(right) + 20}px;
        `;

        document.body.appendChild(checkbox);
        document.body.appendChild(label);

        return checkbox;
    }

    function showToast(message, type = 'info') {
        const toast = document.createElement('div');
        toast.textContent = message;
        toast.style.cssText = `
            position: fixed;
            top: 50px;
            right: 10px;
            padding: 10px;
            color: white;
            border-radius: 5px;
            opacity: 0;
            transition: opacity 0.5s ease-in-out;
        `;

        switch(type) {
            case 'error':
                toast.style.backgroundColor = '#dc3545';
                break;
            case 'success':
                toast.style.backgroundColor = '#28a745';
                break;
            default:
                toast.style.backgroundColor = '#17a2b8';
        }

        document.body.appendChild(toast);

        setTimeout(() => { toast.style.opacity = '1'; }, 0);
        setTimeout(() => {
            toast.style.opacity = '0';
            setTimeout(() => { document.body.removeChild(toast); }, 500);
        }, CONSTANTS.TOAST_DURATION);
    }

    async function fetchAndParseURL(url) {
        try {
            const response = await fetch(url);
            const html = await response.text();
            const parser = new DOMParser();
            const doc = parser.parseFromString(html, 'text/html');
            return Array.from(doc.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);
        } catch (error) {
            console.error('Error fetching and parsing URL:', error);
            showToast('Error fetching gallery data', 'error');
            return [];
        }
    }

    function getDefaultUrls() {
        return Array.from(document.querySelectorAll('.itg.glte td.gl1e a')).map(a => a.href);
    }

    async function handleButtonClick() {
        showToast('Loading', 'info');

        const Max = getMax();
        if (!Max) {
            showToast('Need Userscript "Eh - Page Scrobbler"', 'error');
            return;
        }

        const currentUrl = window.location.href;
        const isWatchedPage = currentUrl.startsWith("https://e-hentai.org/watched");
        const isGoldStar = GM_getValue('gold', false);

        let randomNumber;
        if (isWatchedPage && !isGoldStar && new URLSearchParams(window.location.search).has('f_search') && new URLSearchParams(window.location.search).get('f_search')?.trim() !== '') {
            const Min = Max - 38000;
            randomNumber = Math.floor(Math.random() * (Max - Min + 1)) + Min;
        } else {
            randomNumber = Math.floor(Math.random() * Max) + 1;
        }

        const url = `${window.location.href}&next=${randomNumber}`;
        const urls = ((fetched) => fetched.length === 0 ? getDefaultUrls() : fetched)(await fetchAndParseURL(url));

        if (urls.length > 0) {
            const randomUrl = urls[Math.floor(Math.random() * urls.length)];
            window.open(randomUrl, '_blank');
            showToast('Random gallery opened', 'success');
        } else {
            showToast('No galleries found', 'error');
        }
    }

    function debounce(func, delay) {
        let timeoutId;
        return function(...args) {
            clearTimeout(timeoutId);
            timeoutId = setTimeout(() => func.apply(this, args), delay);
        };
    }

    function init() {
        const button = createButton(CONSTANTS.BUTTON_ID, 'Go to Random Gallery', '10px', '10px');
        button.addEventListener('click', debounce(handleButtonClick, CONSTANTS.DEBOUNCE_DELAY));

        const currentUrl = window.location.href;
        const isWatchedPage = currentUrl.startsWith("https://e-hentai.org/watched");

        if (isWatchedPage) {
            const checkbox = createCheckbox(CONSTANTS.CHECKBOX_ID, 'Gold Star Donator?', '10px', `${parseInt(button.style.right) + button.offsetWidth + 5}px`);
            checkbox.addEventListener('change', () => {
                GM_setValue('gold', checkbox.checked);
            });
            checkbox.checked = GM_getValue('gold', false);
        }
    }

    init();
})();
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Sep 5 2024, 05:05
Post #131
rexmexmax



Lurker
Group: Recruits
Posts: 5
Joined: 13-January 17
Level 82 (Master)


A Script Request:

Some way to mark galleries as read/complete so it's easily visible in search results.
(EDIT: You can mark galleries with ratings (the stars), they change the star colors visible in search. This post contains some CSS for a style extension to make the change more visible.)

I tried [sleazyfork.org] EhxVisited and Mayriads master script but EhxVisited doesn't work in Incognito (doesn't remember/store which was visited) and favorites are needed for the latter to hide galleries.

This script is an example of what I want: [sleazyfork.org] NHentai Improved "Mark as read Feature" which works as intended, in incognito, regardless of account, with no limit.

The goal being to just know what I read, since tagging and rating don't have any visible changes in search and favorite just puts some black bars around date.

Unrelated Request:
A way to quick search for hentai versions of gallery, like all works from search to google (title + "hentai") or to AniDB/MAL.

Thanks for reading and If I missed something let me know.

This post has been edited by rexmexmax: Sep 7 2024, 20:17
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Sep 11 2024, 17:10
Post #132
moodyclaus



Casual Poster
****
Group: Members
Posts: 274
Joined: 1-June 22
Level 211 (Champion)


Made a new version for "Auto fjord changer for Vigs", since the original is not available anymore
I didn't get to see it before it was removed but I assume it's what it was doing, if not, feel free to remove my post.

Attached File  auto_fjord_changer_1.1.user.js.txt ( 451bytes ) Number of downloads: 32


This post has been edited by moodyclaus: Oct 29 2024, 20:08
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Sep 11 2024, 23:16
Post #133
romanicyte



Veteran Poster
********
Group: Members
Posts: 2,906
Joined: 4-August 18
Level 455 (Dovahkiin)


QUOTE(moodyclaus @ Sep 11 2024, 12:10) *

Made a new version for "Auto fjord changer for Vigs", since the original is not available anymore
I didn't get to see it before it was removed but I assume it's what it was doing, if not, feel free to remove my post.

[attachmentid=179689]

Thank you, extremely useful.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Oct 16 2024, 22:05
Post #134
FabulousCupcake



Casual Poster
****
Group: Gold Star Club
Posts: 494
Joined: 15-April 14
Level 451 (Dovahkiin)


Re: Site Changelog 2024-10-15
QUOTE

- A test build that adds support for upcoming changes to image and thumbnail handling is now running on the onion site. The changes are mostly internal, but there are some thumbnail-related DOM changes in case people want to check for script compatibility. This will be pushed to the main site in a few days.


If anyone's too lazy to check the onion site (and solve the damn captcha lmao), here's a sample of the old and new thumbnail DOM:

CODE

<div id="gdt">
  <div class="gdtl" style="height:303px">
    <a href="https://e-hentai.org/s/87f46378eb/3092507-1">
      <img alt="001" title="Page 1: 000.jpg" src="https://s.e-hentai.org/t/87/f4/87f46378eb409034c3f907bd5116ac9ea3aaa958-903142-1450-2048-jpg_l.jpg">
      </a>
    </div>
    <div class="gdtl" style="height:303px">
      <a href="https://e-hentai.org/s/266ec3f4c5/3092507-2">
        <img alt="002" title="Page 2: 001.jpg" src="https://s.e-hentai.org/t/26/6e/266ec3f4c5951361b0b28591f11a14132db7b9da-797463-1450-2048-jpg_l.jpg">
      </a>
    </div>
    <div class="gdtl" style="height:303px">...</div>
    ...
    <div class="gdtl" style="height:303px">...</div>
    <div class="c"></div>
  </div>
</div>


CODE

<div id="gdt" class="gt200">
  <a href="https://e-hentai.org/s/87f46378eb/3092507-1">
    <div title="Page 1: 000.jpg" style="width:200px;height:282px;background:transparent url(/t/87/f4/87f46378eb409034c3f907bd5116ac9ea3aaa958-903142-1450-2048-jpg_l.jpg) 0 0 no-repeat"></div>
  </a>
  <a href="https://e-hentai.org/s/266ec3f4c5/3092507-2">
    <div title="Page 2: 001.jpg" style="width:200px;height:282px;background:transparent url(/t/26/6e/266ec3f4c5951361b0b28591f11a14132db7b9da-797463-1450-2048-jpg_l.jpg) 0 0 no-repeat"></div>
  </a>
  <a href=.../3092507-3">...</a>
  ...
  <a href=.../3092507-20">...</a>
</div>


They're also now styled with grids over float
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Oct 25 2024, 12:38
Post #135
TheGreatKing



Lurker
Group: Lurkers
Posts: 2
Joined: 14-November 13


Any chance someone could update the "eze" downloader script for the new website changes? Seems to have finally broken.
I've been using it to download galleries in their compressed formats for years because of the useful info.json it adds to the zip.
The github was last updated it 2019 so I'm not counting on the original dev to update it at this point.
Thanks
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Oct 26 2024, 02:02
Post #136
jkworld



Lurker
Group: Lurkers
Posts: 1
Joined: 11-May 19
Level 58 (Artisan)


QUOTE(TheGreatKing @ Oct 25 2024, 12:38) *

Any chance someone could update the "eze" downloader script for the new website changes? Seems to have finally broken.
I've been using it to download galleries in their compressed formats for years because of the useful info.json it adds to the zip.
The github was last updated it 2019 so I'm not counting on the original dev to update it at this point.
Thanks


You can make these changes and it seems to work. Don't know if other functionality is broken.

Change this line
nodes = n.querySelectorAll(".gdtm");
to this
nodes = n.querySelectorAll("a");


Then look for this block.
Add the n2 = n; line
and add the // to all the lines missing it.

```
else {
// Elements
n2 = n;

// if (
// (n = n.querySelector("div")) !== null &&
// (n2 = n.querySelector("a")) !== null
// ) {
image.url = n2.getAttribute("href") || "";

if ((n2 = n2.querySelector("img")) !== null) {
image.filename = n2.getAttribute("title") || "";
image.index = (parseInt(n2.getAttribute("alt") || "", 10) || 1) - 1;
}

if ((m = re_image_url.exec(n.getAttribute("style") || ""))) {
// Setup image
image.thumbnail = m[3];
image.width = parseInt(m[1], 10);
image.height = parseInt(m[2], 10);
image.x_offset = parseInt(m[4], 10);
}
// }
}
```
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Oct 26 2024, 04:54
Post #137
TheGreatKing



Lurker
Group: Lurkers
Posts: 2
Joined: 14-November 13


QUOTE(jkworld @ Oct 25 2024, 17:02) *

You can make these changes and it seems to work. Don't know if other functionality is broken.
...


Amazing! Works perfectly, thank you so much. I was able to hack together another solution but this is much more convenient.
As far as other features go, I haven't noticed any other problems, yet.

Thanks again!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Oct 29 2024, 20:11
Post #138
moodyclaus



Casual Poster
****
Group: Members
Posts: 274
Joined: 1-June 22
Level 211 (Champion)


QUOTE(moodyclaus @ Sep 11 2024, 16:10) *

Made a new version for "Auto fjord changer for Vigs", since the original is not available anymore
I didn't get to see it before it was removed but I assume it's what it was doing, if not, feel free to remove my post.

Attached File  auto_fjord_changer_1.1.user.js.txt ( 451bytes ) Number of downloads: 32



Just updated it to make it works on links to a specific page as well.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Nov 23 2024, 21:26
Post #139
ciccabanana



Lurker
Group: Recruits
Posts: 8
Joined: 7-September 17
Level 51 (Expert)


QUOTE(rexmexmax @ Sep 5 2024, 04:05) *

A Script Request:

Some way to mark galleries as read/complete so it's easily visible in search results.
(EDIT: You can mark galleries with ratings (the stars), they change the star colors visible in search. This post contains some CSS for a style extension to make the change more visible.)

I tried [sleazyfork.org] EhxVisited and Mayriads master script but EhxVisited doesn't work in Incognito (doesn't remember/store which was visited) and favorites are needed for the latter to hide galleries.

This script is an example of what I want: [sleazyfork.org] NHentai Improved "Mark as read Feature" which works as intended, in incognito, regardless of account, with no limit.

The goal being to just know what I read, since tagging and rating don't have any visible changes in search and favorite just puts some black bars around date.

Unrelated Request:
A way to quick search for hentai versions of gallery, like all works from search to google (title + "hentai") or to AniDB/MAL.

Thanks for reading and If I missed something let me know.


Sorry but what do you mean with "... EhxVisited doesn't work in Incognito (doesn't remember/store which was visited) and favorites are needed for the latter to hide galleries"

I tried EhxVisited and it remembers which gallery i have opened during a session, highlighting them on the search page with the color that can be set in the settings.
Even the funtion for hide galleries work, you only need to press the red X in the search page for hide a gallery.

If you want a buttons inside a gallery for toggle "Mark as read"<->"Mark as unread" or a rectagle over the gallery with written "READ" as the scripts "NHentai Improved" should be simple, but that has nothing to do with the incognito mode.
On the other hand the script will not remember, and will not have to remember, the visited or hidden between two separate Incognito sessions.
(N.B. When you close all incognito tabs ad open a new incognito tab it's a new Incognito session).

So I don't quite understand what do you mean. Can you elaborate?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Jan 1 2025, 17:56
Post #140
imty



Casual Poster
***
Group: Gold Star Club
Posts: 222
Joined: 20-August 16
Level 360 (Godslayer)


I've created a user script for MPV to try to switch the display mode from vertical to horizontal.
It might still have some issues, but I think it works quite well.
https://forums.e-hentai.org/index.php?showtopic=281945
User is offlineProfile CardPM
Go to the top of the page
+Quote Post


8 Pages V « < 5 6 7 8 >
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 


Lo-Fi Version Time is now: 10th June 2025 - 03:16