VideoHelp Forum




+ Reply to Thread
Page 3 of 3
FirstFirst 1 2 3
Results 61 to 87 of 87
  1. Originally Posted by hunter7 View Post
    got carried away by other stuff and completely forgot to push an update

    I'll fix it tomorrow
    Any new developments? I'm still unable to download any https://abyssplay.pages.dev videos
    Quote Quote  
  2. Member
    Join Date
    Mar 2024
    Location
    Africa
    Search Comp PM
    Does anyone know how to grab the video id, the old tricks don't work anymore.
    Quote Quote  
  3. Since the other downloader is broken: https://github.com/DevLARLEY/AbyssGet
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  4. Code:
    AbyssGet https://abysscdn.com/?v=K8R6OOjS7
    16:44:07 Info: Requesting payload for video https://abysscdn.com/?v=K8R6OOjS7...
    Unhandled exception: Jint.Runtime.JavaScriptException: Unexpected token ';' (<anonymous>:1:1065)
     ---> Error: Unexpected token ';' (<anonymous>:1:1065)
       at <anonymous>:1:7
       --- End of inner exception stack trace ---
       at Jint.Runtime.ExceptionHelper.ThrowSyntaxError(Realm, String, SourceLocation&) + 0x22
       at Jint.AcornimaExtensions.ParseScriptGuarded(Parser, Realm, String, String, Boolean) + 0xa0
       at Jint.Engine.Execute(String, String) + 0x71
       at AbyssGet.Util.Helpers.<RequestPayload>d__2.MoveNext() + 0xb19
    --- End of stack trace from previous location ---
       at AbyssGet.Abyss.<DownloadVideosWithPrompt>d__15.MoveNext() + 0x12e
    --- End of stack trace from previous location ---
       at AbyssGet.Util.CommandLine.<HandleCommandAsync>d__11.MoveNext() + 0x53
    --- End of stack trace from previous location ---
       at System.CommandLine.NamingConventionBinder.CommandHandler.<GetExitCodeAsync>d__66.MoveNext() + 0x97
    --- End of stack trace from previous location ---
       at System.CommandLine.NamingConventionBinder.ModelBindingCommandHandler.<InvokeAsync>d__11.MoveNext() + 0x62
    --- End of stack trace from previous location ---
       at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext() + 0x54
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext() + 0x52
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext() + 0x57
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext() + 0x5a
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext() + 0x5f
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext() + 0xe9
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext() + 0x57
    Quote Quote  
  5. Have you tried v1.1.0?
    Code:
    PS AbyssGet\win-x64> .\AbyssGet.exe https://abysscdn.com/?v=K8R6OOjS7         
    16:42:36 Info: Requesting payload for video https://abysscdn.com/?v=K8R6OOjS7...
    16:42:36 Info: Getting videos for 1 payload...
    > [ ] | K8R6OOjS7 | ednV819wzR-USPXcXOJqtoOUPxnTTZMb | 
        [ ] | 2160p | h264 | mp4 |  627 MB                 
        [ ] | 1440p | h264 | mp4 |  449 MB                 
        [ ] | 1080p | h264 | mp4 |  241 MB                 
        [ ] | 1080p |  av1 | mp4 |  210 MB                 
        [ ] |  720p | h264 | mp4 |  137 MB                 
        [ ] |  360p | h264 | mp4 |   77 MB                 
                                                           
    (Press <space> to select, <enter> to accept)
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  6. I can't build the executable file.
    'Visual Studio' 2017.

    Error:

    '...Microsoft Visual Studio\MSBuild\15.0\Bin\Microsoft.Common.CurrentVe rsion.targets(1179,5): error MSB3644: Reference assemblies for the framework '.NETFramework,Version=v9.0' could not be found. To resolve this error, install the SDK or targeting pack for this framework version, or retarget your application to the version for which the SDK or targeting pack is installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and used instead of reference assemblies, and may therefore incorrectly target the selected framework.'

    What can I do?
    Quote Quote  
  7. Originally Posted by larley View Post
    Have you tried v1.1.0?
    Code:
    PS AbyssGet\win-x64> .\AbyssGet.exe https://abysscdn.com/?v=K8R6OOjS7         
    16:42:36 Info: Requesting payload for video https://abysscdn.com/?v=K8R6OOjS7...
    16:42:36 Info: Getting videos for 1 payload...
    > [ ] | K8R6OOjS7 | ednV819wzR-USPXcXOJqtoOUPxnTTZMb | 
        [ ] | 2160p | h264 | mp4 |  627 MB                 
        [ ] | 1440p | h264 | mp4 |  449 MB                 
        [ ] | 1080p | h264 | mp4 |  241 MB                 
        [ ] | 1080p |  av1 | mp4 |  210 MB                 
        [ ] |  720p | h264 | mp4 |  137 MB                 
        [ ] |  360p | h264 | mp4 |   77 MB                 
                                                           
    (Press <space> to select, <enter> to accept)
    I tried it and getting a similar error:
    HTML Code:
    Unhandled exception: Jint.Runtime.JavaScriptException: Unexpected token ';' (<anonymous>:1:1059)
     ---> Error: Unexpected token ';' (<anonymous>:1:1059)
       at <anonymous>:1:7
       --- End of inner exception stack trace ---
       at Jint.Runtime.ExceptionHelper.ThrowSyntaxError(Realm, String, SourceLocation&) + 0x22
       at Jint.AcornimaExtensions.ParseScriptGuarded(Parser, Realm, String, String, Boolean) + 0xa0
       at Jint.Engine.Execute(String, String) + 0x71
       at AbyssGet.Util.Helpers.<RequestPayload>d__2.MoveNext() + 0xb19
    --- End of stack trace from previous location ---
       at AbyssGet.Abyss.<DownloadVideosWithPrompt>d__15.MoveNext() + 0x12e
    --- End of stack trace from previous location ---
       at AbyssGet.Util.CommandLine.<HandleCommandAsync>d__11.MoveNext() + 0x53
    --- End of stack trace from previous location ---
       at System.CommandLine.NamingConventionBinder.CommandHandler.<GetExitCodeAsync>d__66.MoveNext() + 0x97
    --- End of stack trace from previous location ---
       at System.CommandLine.NamingConventionBinder.ModelBindingCommandHandler.<InvokeAsync>d__11.MoveNext() + 0x62
    --- End of stack trace from previous location ---
       at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext() + 0x54
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext() + 0x52
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext() + 0x57
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext() + 0x5a
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext() + 0x5f
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext() + 0xe9
    --- End of stack trace from previous location ---
       at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext() + 0x57
    Quote Quote  
  8. AbyssGet --version
    1.0.0+07fc50634ff90d7cda79640dcb1591536c17a956

    OK. It works. Thanks!
    Quote Quote  
  9. Originally Posted by smile0 View Post
    Does anyone know how to grab the video id, the old tricks don't work anymore.
    You can still f12 with debugger bypass like in chrome to always continue or use script override in firefox to remove the anti debugger. Some site's I've seen you can use view page source to see embed with whatever trick to hide it. Some are using XOR crypto, but page source have the key. It's easy to decrypt.

    One easy trick is to use UblockOrigin element picker and it'll show the final url of the player.

    I also made userscript to get it

    Code:
    // ==UserScript==
    // @name         Abyss Slug Extractor
    // @version      1
    // @description  Extract slug from requests, display it with copy button, and toggle full request log.
    // @icon64       https://abyss.to/favicon.ico
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==
    
    (function () {
        'use strict';
    
        const slugRegex = /.*tunnel.*[?&]slug=([^&]+)/;
        let lastSlug = null;
    
        // ----- Top Panel -----
        const topPanel = document.createElement('div');
        Object.assign(topPanel.style, {
            position: 'fixed',
            top: '10px',
            left: '50%',
            transform: 'translateX(-50%)',
            display: 'none',
            alignItems: 'center',
            background: '#333',
            padding: '8px 16px',
            borderRadius: '8px',
            zIndex: '9999',
            fontFamily: 'Consolas, monospace',
            color: 'white',
            gap: '10px'
        });
    
        const slugDisplay = document.createElement('span');
        topPanel.appendChild(slugDisplay);
    
        const copyBtn = document.createElement('button');
        copyBtn.textContent = 'Copy Slug';
        Object.assign(copyBtn.style, {
            fontSize: '14px',
            background: '#4CAF50',
            color: 'white',
            border: 'none',
            borderRadius: '5px',
            padding: '6px 12px',
            cursor: 'pointer',
            fontFamily: 'Consolas, monospace'
        });
    
        copyBtn.addEventListener('click', () => {
            if (lastSlug) {
                navigator.clipboard.writeText(lastSlug).then(() => {
                    copyBtn.textContent = 'Copied!';
                    setTimeout(() => copyBtn.textContent = 'Copy Slug', 1500);
                });
            }
        });
    
        const toggleLogBtn = document.createElement('button');
        toggleLogBtn.textContent = 'Show All Requests';
        Object.assign(toggleLogBtn.style, {
            fontSize: '14px',
            background: '#2196F3',
            color: 'white',
            border: 'none',
            borderRadius: '5px',
            padding: '6px 12px',
            cursor: 'pointer',
            fontFamily: 'Consolas, monospace'
        });
    
        topPanel.appendChild(copyBtn);
        topPanel.appendChild(toggleLogBtn);
        document.body.appendChild(topPanel);
    
        // ----- Log Panel -----
        const logPanel = document.createElement('div');
        Object.assign(logPanel.style, {
            position: 'fixed',
            bottom: '10px',
            right: '10px',
            width: 'auto',
            height: '200px',
            background: 'rgba(0,0,0,0.85)',
            color: 'white',
            fontSize: '16px',
            overflowY: 'auto',
            zIndex: '9999',
            padding: '10px',
            borderRadius: '10px',
            display: 'none',
            fontFamily: 'Consolas, monospace'
        });
    
        document.body.appendChild(logPanel);
    
        toggleLogBtn.addEventListener('click', () => {
            const isVisible = logPanel.style.display === 'block';
            logPanel.style.display = isVisible ? 'none' : 'block';
            toggleLogBtn.textContent = isVisible ? 'Show All Requests' : 'Hide All Requests';
        });
    
        function showSlug(slug) {
            lastSlug = slug;
            slugDisplay.textContent = slug;
            topPanel.style.display = 'flex';
            console.log('Slug found:', slug);
        }
    
        function logRequest(type, url) {
            const entry = document.createElement('div');
            entry.textContent = `[${type}] ${url}`;
            logPanel.appendChild(entry);
            logPanel.scrollTop = logPanel.scrollHeight;
        }
    
        function handleRequest(type, url) {
            logRequest(type, url);
            const match = slugRegex.exec(url);
            if (match && match[1]) {
                showSlug(match[1]);
            }
        }
    
        const originalFetch = window.fetch;
        window.fetch = function (...args) {
            const [url] = args;
            if (typeof url === 'string') {
                handleRequest('fetch', url);
            } else if (url instanceof Request) {
                handleRequest('fetch', url.url);
            }
            return originalFetch.apply(this, args);
        };
    
        const originalOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open = function (method, url, ...rest) {
            this.addEventListener('loadstart', () => {
                handleRequest('XHR', url);
            });
            return originalOpen.call(this, method, url, ...rest);
        };
    })();
    Last edited by cibkosglowendnl; 23rd May 2025 at 00:38.
    Quote Quote  
  10. Noob here. Can somebody please tell me what I have to do to get an .exe of AbyssGet?
    Quote Quote  
  11. Originally Posted by atalanta View Post
    Noob here. Can somebody please tell me what I have to do to get an .exe of AbyssGet?
    Latest winx64
    https://github.com/DevLARLEY/AbyssGet/actions/runs/14975097823/artifacts/3106912706

    Linux
    https://github.com/DevLARLEY/AbyssGet/actions/runs/14975097823/artifacts/3106911716
    Quote Quote  
  12. Hello I tried to use the github tool but it just closed itself when I tried to open the exe file. I just need to download these 3 video from abyss, for my archive:
    https://abysscdn.com/?v=GZr_NbnAwvD (4.mp4)
    https://abysscdn.com/?v=kzGEXYtPBn (8.mp4)
    https://abysscdn.com/?v=ick53d8Yw (9.mp4)
    these are the links I suppose. can anyone download and upload them to somewhere(that won't drop the video quality) so I can download them for myself? because I couldn't do it myself.
    Last edited by mane323; 17th May 2025 at 11:34.
    Quote Quote  
  13. Member
    Join Date
    Feb 2006
    Location
    United States
    Search Comp PM
    error i get - ./AbyssGet https://abysscdn.com/?v=ZHO0R7ZkR
    20:24:25 Info: Requesting payload for video https://abysscdn.com/?v=ZHO0R7ZkR...
    Unhandled exception: System.ArgumentOutOfRangeException: length ('-7') must be a non-negative value. (Parameter 'length')
    Actual value was -7.
    at System.ArgumentOutOfRangeException.ThrowNegative[T](T, String) + 0x73
    at System.ArgumentOutOfRangeException.ThrowIfNegative[T](T, String) + 0xf
    at System.String.ThrowSubstringArgumentOutOfRange(Int 32, Int32) + 0x1f
    at System.String.Substring(Int32, Int32) + 0x37
    at AbyssGet.Tls.CustomHttpClient.ToResponseMessage(St ring) + 0x10a
    at AbyssGet.Tls.CustomHttpClient.<SendAsync>d__2.Move Next() + 0x63
    --- End of stack trace from previous location ---
    at AbyssGet.Util.Helpers.<RequestPayload>d__2.MoveNex t() + 0x90
    --- End of stack trace from previous location ---
    at AbyssGet.Abyss.<DownloadVideosWithPrompt>d__15.Mov eNext() + 0x13f
    --- End of stack trace from previous location ---
    at AbyssGet.Util.CommandLine.<HandleCommandAsync>d__1 1.MoveNext() + 0x54
    --- End of stack trace from previous location ---
    at System.CommandLine.NamingConventionBinder.CommandH andler.<GetExitCodeAsync>d__66.MoveNext() + 0x9a
    --- End of stack trace from previous location ---
    at System.CommandLine.NamingConventionBinder.ModelBin dingCommandHandler.<InvokeAsync>d__11.MoveNext() + 0x60
    --- End of stack trace from previous location ---
    at System.CommandLine.Invocation.InvocationPipeline.< >c__DisplayClass4_0.<<BuildInvocationChain>b__0>d. MoveNext() + 0x56
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass17_0.<<UseParseErrorReporti ng>b__0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveN ext() + 0x52
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass22_0.<<UseVersionOption>b__ 0>d.MoveNext() + 0x58
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass19_0.<<UseTypoCorrections>b __0>d.MoveNext() + 0x5c
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext () + 0x5f
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass16_0.<<UseParseDirective>b_ _0>d.MoveNext() + 0x56
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.Mov eNext() + 0xea
    --- End of stack trace from previous location ---
    at System.CommandLine.Builder.CommandLineBuilderExten sions.<>c__DisplayClass8_0.<<UseExceptionHandler>b __0>d.MoveNext() + 0x58
    Quote Quote  
  14. Seems like you've been 'blocked' by the server. (Server is returning nothing)
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  15. Originally Posted by october262 View Post
    error i get - ./AbyssGet https://abysscdn.com/?v=ZHO0R7ZkR
    20:24:25 Info: Requesting payload for video https://abysscdn.com/?v=ZHO0R7ZkR...
    Unhandled exception: System.ArgumentOutOfRangeException: length ('-7') must be a non-negative value. (Parameter 'length')
    all work fine here. thanks larley for another wonderful tool

    Image
    [Attachment 87033 - Click to enlarge]


    Image
    [Attachment 87034 - Click to enlarge]
    Quote Quote  
  16. Member
    Join Date
    Feb 2006
    Location
    United States
    Search Comp PM
    using this example link - https://abysscdn.com/?v=K8R6OOjS7
    same error. is there something else i need to install in Ubuntu x64

    even running ./AbyssGet --version gives same error
    Last edited by october262; 17th May 2025 at 15:05.
    Quote Quote  
  17. Originally Posted by october262 View Post
    using this example link - https://abysscdn.com/?v=K8R6OOjS7
    same error. is there something else i need to install in Ubuntu x64

    even running ./AbyssGet --version gives same error
    YOU only have error. again all work fine here

    Image
    [Attachment 87061 - Click to enlarge]


    Image
    [Attachment 87062 - Click to enlarge]
    Quote Quote  
  18. I can confirm that this is an issue with the TlsClient not working on Ubuntu for some reason
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  19. This works, but I need to open Visual Studio to run it
    Is there a way to run this normally?
    Quote Quote  
  20. just get the artifact from here: https://github.com/DevLARLEY/AbyssGet/actions/runs/14975097823
    you need to be logged into github
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  
  21. Originally Posted by larley View Post
    just get the artifact from here: https://github.com/DevLARLEY/AbyssGet/actions/runs/14975097823
    you need to be logged into github
    Thanks!
    Last edited by Kaos111; 21st May 2025 at 07:00.
    Quote Quote  
  22. Originally Posted by larley View Post
    just get the artifact from here: https://github.com/DevLARLEY/AbyssGet/actions/runs/14975097823
    you need to be logged into github
    I forgot to say this, but you the goat!
    Thanks for all this king!
    Quote Quote  
  23. Member
    Join Date
    Mar 2024
    Location
    Africa
    Search Comp PM
    How do I grab the video id, the dev tools trick does not work anymore.
    Quote Quote  
  24. Member
    Join Date
    Feb 2006
    Location
    United States
    Search Comp PM
    Originally Posted by smile0 View Post
    How do I grab the video id, the dev tools trick does not work anymore.
    see post #70
    Quote Quote  
  25. Originally Posted by smile0 View Post
    How do I grab the video id, the dev tools trick does not work anymore.
    I made a Userscript to just get it for all ya

    Code:
    // ==UserScript==
    // @name         Abyss Slug Extractor
    // @version      1
    // @description  Extract slug from requests, display it with copy button, and toggle full request log.
    // @icon64       https://abyss.to/favicon.ico
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==
    
    (function () {
        'use strict';
    
        const slugRegex = /.*tunnel.*[?&]slug=([^&]+)/;
        let lastSlug = null;
    
        // ----- Top Panel -----
        const topPanel = document.createElement('div');
        Object.assign(topPanel.style, {
            position: 'fixed',
            top: '10px',
            left: '50%',
            transform: 'translateX(-50%)',
            display: 'none',
            alignItems: 'center',
            background: '#333',
            padding: '8px 16px',
            borderRadius: '8px',
            zIndex: '9999',
            fontFamily: 'Consolas, monospace',
            color: 'white',
            gap: '10px'
        });
    
        const slugDisplay = document.createElement('span');
        topPanel.appendChild(slugDisplay);
    
        const copyBtn = document.createElement('button');
        copyBtn.textContent = 'Copy Slug';
        Object.assign(copyBtn.style, {
            fontSize: '14px',
            background: '#4CAF50',
            color: 'white',
            border: 'none',
            borderRadius: '5px',
            padding: '6px 12px',
            cursor: 'pointer',
            fontFamily: 'Consolas, monospace'
        });
    
        copyBtn.addEventListener('click', () => {
            if (lastSlug) {
                navigator.clipboard.writeText(lastSlug).then(() => {
                    copyBtn.textContent = 'Copied!';
                    setTimeout(() => copyBtn.textContent = 'Copy Slug', 1500);
                });
            }
        });
    
        const toggleLogBtn = document.createElement('button');
        toggleLogBtn.textContent = 'Show All Requests';
        Object.assign(toggleLogBtn.style, {
            fontSize: '14px',
            background: '#2196F3',
            color: 'white',
            border: 'none',
            borderRadius: '5px',
            padding: '6px 12px',
            cursor: 'pointer',
            fontFamily: 'Consolas, monospace'
        });
    
        topPanel.appendChild(copyBtn);
        topPanel.appendChild(toggleLogBtn);
        document.body.appendChild(topPanel);
    
        // ----- Log Panel -----
        const logPanel = document.createElement('div');
        Object.assign(logPanel.style, {
            position: 'fixed',
            bottom: '10px',
            right: '10px',
            width: 'auto',
            height: '200px',
            background: 'rgba(0,0,0,0.85)',
            color: 'white',
            fontSize: '16px',
            overflowY: 'auto',
            zIndex: '9999',
            padding: '10px',
            borderRadius: '10px',
            display: 'none',
            fontFamily: 'Consolas, monospace'
        });
    
        document.body.appendChild(logPanel);
    
        toggleLogBtn.addEventListener('click', () => {
            const isVisible = logPanel.style.display === 'block';
            logPanel.style.display = isVisible ? 'none' : 'block';
            toggleLogBtn.textContent = isVisible ? 'Show All Requests' : 'Hide All Requests';
        });
    
        function showSlug(slug) {
            lastSlug = slug;
            slugDisplay.textContent = slug;
            topPanel.style.display = 'flex';
            console.log('Slug found:', slug);
        }
    
        function logRequest(type, url) {
            const entry = document.createElement('div');
            entry.textContent = `[${type}] ${url}`;
            logPanel.appendChild(entry);
            logPanel.scrollTop = logPanel.scrollHeight;
        }
    
        function handleRequest(type, url) {
            logRequest(type, url);
            const match = slugRegex.exec(url);
            if (match && match[1]) {
                showSlug(match[1]);
            }
        }
    
        const originalFetch = window.fetch;
        window.fetch = function (...args) {
            const [url] = args;
            if (typeof url === 'string') {
                handleRequest('fetch', url);
            } else if (url instanceof Request) {
                handleRequest('fetch', url.url);
            }
            return originalFetch.apply(this, args);
        };
    
        const originalOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open = function (method, url, ...rest) {
            this.addEventListener('loadstart', () => {
                handleRequest('XHR', url);
            });
            return originalOpen.call(this, method, url, ...rest);
        };
    })();
    Quote Quote  
  26. Member
    Join Date
    Mar 2024
    Location
    Africa
    Search Comp PM
    thank you very much
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!