CamGirlFinder Fix Redirect

Add a button that add and fix the redirect to some camsite next to the model name.

2025-05-10 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         CamGirlFinder Fix Redirect
// @namespace    https://greasyfork.org/fr/users/1468290-payamarre
// @version      1.0
// @license MIT
// @description  Add a button that add and fix the redirect to some camsite next to the model name.
// @author       NoOne
// @match        http://camgirlfinder.net/models/*
// @match        https://camgirlfinder.net/models/*
// @grant        none
// ==/UserScript==
/*If the page don't open make sure to add an execption to your adblocker for the site. Example,
@@||stripchat.com^$popup
@@||stripchat.com^$document*/

(function () {
    'use strict';

    // SVG icon for the button
    const svgIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 25px; height: 25px;">
        <path stroke-linecap="round" stroke-linejoin="round" d="M9 17.25v1.007a3 3 0 0 1-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0 1 15 18.257V17.25m6-12V15a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 15V5.25m18 0A2.25 2.25 0 0 0 18.75 3H5.25A2.25 2.25 0 0 0 3 5.25m18 0V12a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 12V5.25" />
    </svg>`;

    // Function to add the redirect button outside the link
    function addRedirectButton() {
        const currentUrl = window.location.href;
        const modelName = currentUrl.split('/').pop();

        // Find the <a rel="nofollow"> tag
        const modelLink = document.querySelector('a[rel="nofollow"]');

        if (modelLink) {
            // Create the button
            const button = document.createElement('button');
            button.innerHTML = svgIcon;
            button.style.cursor = 'pointer';
            button.style.background = 'none';
            button.style.padding = '0';
            button.style.marginLeft = '15px'; // Space between the model name and the button
            button.style.height = '40px';  // Increased size
            button.style.width = '40px';   // Increased size
            button.style.transition = 'all 1s ease'; // Increased transition time
            button.style.display = 'inline-flex';  // Keeps the button inline with text
            button.style.alignItems = 'center';  // Vertically center the SVG inside button
            button.style.justifyContent = 'center';  // Horizontally center the SVG inside button
            button.style.verticalAlign = 'middle'; // Ensures the button stays aligned with the text
            button.style.color = '#f5f5f5'; // Default icon color
            button.style.borderRadius = '20%'; // Slightly rounded corners with 20% radius
            button.style.border = '1px solid #f5f5f5'; // Light border on hover

            // Add hover effect using CSS classes
            button.addEventListener('mouseover', function () {
                button.style.color = '#272727'; // Change icon color on hover
                button.style.background = '#f5f5f5'; // Background color on hover
            });

            button.addEventListener('mouseout', function () {
                button.style.color = '#f5f5f5'; // Reset icon color when mouse leaves
                button.style.background = 'none'; // Remove background on mouse out
            });

            // Add click effect to simulate button press (reduce size)
            button.addEventListener('click', function () {
                // Temporarily shrink the button to 20% of its original size
                button.style.transform = 'scale(0.2)'; // Shrink the button on click
                setTimeout(() => {
                    // After the animation, return to the normal size
                    button.style.transform = 'scale(1)';
                }, 100); // After 100ms, restore the button size
                if (currentUrl.includes('/models/cb/')) {
                    const url = `https://chaturbate.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/sc/')) {
                    const url = `https://stripchat.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/c4/')) {
                    const url = `https://cam4.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/cs/')) {
                    const url = `https://camsoda.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/f4f/')) {
                    const url = `https://flirt4free.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/bc/')) {
                    const url = `https://bongacams.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/ctv/')) {
                    const url = `https://cherry.tv/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/im/')) {
                    const url = `https://imlive.com/live-sex-chat/cam-girls/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/lj/')) {
                    const url = `https://livejasmin.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
/*                } else if (currentUrl.includes('/models/mfc/')) {
                    const url = `https://MFC.im/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab //MFC not working well.*/
                } else if (currentUrl.includes('/models/stv/')) {
                    const url = `https://showup.tv/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/sm/')) {
                    const url = `https://streamate.com/cam/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/sr/')) {
                    const url = `https://streamray.com/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/xl/')) {
                    const url = `https://xlovecam.com/chat/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else if (currentUrl.includes('/models/atv/')) {
                    const url = `https://amateur.tv/${modelName}`;
                    window.open(url, '_blank');  // Opens in a new tab
                } else {
                    alert('No model found.');
                }
            });

            // Append the button just after the model name
            modelLink.parentNode.insertBefore(button, modelLink.nextSibling);
        }
    }

    // Run the function to add the button
    addRedirectButton();
})();