// ==UserScript==
// @name [Premium] Coinpayu.com
// @namespace https://greasyfork.org/users/1162863
// @version 3.3.1
// @description Open and close Framed and Frameless Ads with Overlay for settings
// @author Andrewblood
// @match *://*.coinpayu.com/*
// @exclude *://*.coinpayu.com/login
// @icon https://www.google.com/s2/favicons?sz=64&domain=coinpayu.com
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addStyle
// @grant window.close
// @antifeature referral-link Referral-Link is in this Script integrated.
// @license Copyright Andrewblood
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
// CSS-Stile mit GM_addStyle hinzufügen
GM_addStyle(`
#customOverlay {
position: fixed;
bottom: 20px;
right: 20px;
width: 300px;
background-color: rgba(0, 0, 0, 0.8);
color: white;
z-index: 10000;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: center; /* Zentriert den Inhalt horizontal */
justify-content: center; /* Zentriert den Inhalt vertikal */
}
#overlayTitle {
font-size: 18px;
font-weight: bold;
margin-bottom: 15px;
text-align: center;
width: 100%;
}
#status {
font-size: 16px; /* Gleiche Größe wie die Schalter */
color: #00aaff; /* Hellblau wie der Button */
margin-top: -10px; /* 5px näher zur Überschrift */
margin-bottom: 10px; /* 5px Abstand nach unten */
}
.toggleSwitchWrapper {
display: flex;
align-items: center;
cursor: pointer;
margin-bottom: 10px;
width: 100%;
}
.toggleSwitch {
display: none;
}
.switchSpan {
width: 60px;
height: 30px;
background-color: #ccc;
position: relative;
border-radius: 30px;
transition: background-color 0.3s;
margin-right: 10px;
}
.switchHandle {
width: 26px;
height: 26px;
background-color: #fff;
position: absolute;
border-radius: 50%;
top: 2px;
left: 2px;
transition: transform 0.3s;
}
.toggleText {
flex-grow: 1;
font-size: 16px;
color: white;
}
#customOverlay button {
margin-top: 20px;
background-color: #00aaff;
color: white;
border: none;
padding: 10px 20px;
font-size: 14px;
cursor: pointer;
border-radius: 5px;
transition: background-color 0.3s;
text-align: center;
}
#customOverlay button:hover {
background-color: #0099dd;
}
#info-overlay {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 80%;
height: 80%;
background-color: rgba(0, 0, 0, 0.8);
color: white;
z-index: 99999;
padding: 20px;
display: none;
overflow-y: auto;
}
#info-overlay h2 {
text-align: center;
color: white;
}
#info-overlay a {
color: #00aaff;
}
`);
// Overlay-Div erstellen
var overlay = document.createElement('div');
overlay.id = 'customOverlay';
// Überschrift erstellen
var title = document.createElement('div');
title.id = 'overlayTitle';
title.textContent = 'Coinpayu Script from Andrewblood';
overlay.appendChild(title);
function setStatus(html) {
Status.textContent = html;
}
var Status = document.createElement('div');
Status.id = 'status';
overlay.appendChild(Status);
// Funktion zum Erstellen eines Toggle-Schalters
function createToggleSwitch(id, labelText) {
var toggle = document.createElement('label');
toggle.className = 'toggleSwitchWrapper';
var switchInput = document.createElement('input');
switchInput.type = 'checkbox';
switchInput.id = id;
switchInput.className = 'toggleSwitch';
var switchSpan = document.createElement('span');
switchSpan.className = 'switchSpan';
var switchHandle = document.createElement('span');
switchHandle.className = 'switchHandle';
var toggleText = document.createElement('span');
toggleText.className = 'toggleText';
toggleText.textContent = labelText;
toggle.appendChild(switchInput);
toggle.appendChild(switchSpan);
switchSpan.appendChild(switchHandle);
toggle.appendChild(toggleText);
overlay.appendChild(toggle);
// Initialen Status des Schalters setzen
updateToggle(switchInput, switchSpan, switchHandle);
// Schalter-Event-Handler
switchInput.addEventListener('change', function() {
const isChecked = this.checked;
GM_setValue(id + '_toggleStatus', isChecked);
switchSpan.style.backgroundColor = isChecked ? '#00aaff' : '#ccc';
switchHandle.style.transform = isChecked ? 'translateX(30px)' : 'translateX(0)';
});
}
// Funktion zum Aktualisieren des Toggle-Schalters
function updateToggle(switchInput, switchSpan, switchHandle) {
const isChecked = GM_getValue(switchInput.id + '_toggleStatus', false);
switchInput.checked = isChecked;
switchSpan.style.backgroundColor = isChecked ? '#00aaff' : '#ccc';
switchHandle.style.transform = isChecked ? 'translateX(30px)' : 'translateX(0)';
}
// Drei Toggle-Schalter mit Texten erstellen
createToggleSwitch('toggleSwitch1', 'Framed Ads');
createToggleSwitch('toggleSwitch2', 'Frameless Ads');
createToggleSwitch('toggleSwitch3', 'Close after work');
var moreInfoButton = document.createElement('button');
moreInfoButton.textContent = 'More Info';
moreInfoButton.addEventListener('click', openInfoOverlay);
overlay.appendChild(moreInfoButton);
// Overlay zur Seite hinzufügen
document.body.appendChild(overlay);
function openInfoOverlay() {
var infoOverlay = document.getElementById('info-overlay');
if (!infoOverlay) {
infoOverlay = document.createElement('div');
infoOverlay.id = 'info-overlay';
infoOverlay.innerHTML = `
Additional Information
Go to the Dashboard and it start after reloading the page.
Framed Ads: It opens the first aviable site in the list and stay on it, when one site is completed it starts with the Next.
When all sites completed it goes to Framless Ads.
Frameless Ads: It opens and close site by site.
When all sites completed it close coinpayu or go after 3 hour to Framless Ads and begin from new.
You can activate and deactivate the functions in the Overlay as desired.
Download Captcha Solver
HCaptcha + ReCaptcha: NoCoding Data Scraper and CAPTCHA Solver - Install Here
Antibot Words: AB Links Solver - Install Here
Cf-Turnstile: Autopass Cloudflare CAPTCHA - Install Here
Support
If you have any questions or need assistance, don't hesitate to reach out the creator and supporter, Andrewblood.
Privacy Policy
This script stores user data locally within TamperMonkey and is exclusively used for script functionality.
It is not shared with the script creator or third parties.
`;
document.body.appendChild(infoOverlay);
}
infoOverlay.style.display = 'block';
document.addEventListener('click', function(event) {
if (!infoOverlay.contains(event.target) && event.target !== moreInfoButton) {
closeInfoOverlay();
}
});
}
function closeInfoOverlay() {
var infoOverlay = document.getElementById('info-overlay');
if (infoOverlay) {
infoOverlay.style.display = 'none';
}
}
setStatus("Script gestartet");
// Funktion für das Schließen der Tabs
var oldfunction = unsafeWindow.open;
var windowName = "";
function newFunction(params1, params2) {
if (!params2 || params2 == "_blank") {
windowName = "popUpWindow";
} else {
windowName = params2;
}
return oldfunction(params1, windowName);
}
unsafeWindow.open = newFunction;
unsafeWindow.onbeforeunload = function() {
unsafeWindow.open('', windowName).close();
};
// Referal Code einfügen
if (window.location.href.includes("register")) {
if (!window.location.href.includes("Andrewblood")) {
window.location.replace("https://www.coinpayu.com/register?r=Andrewblood");
}
}
// Fenster von Framed Ad schließen
if (window.location.href.includes("coinpayu.com/dashboard/view_active?id=")) {
var intervalId = setInterval(function() {
var waittime = document.querySelector("#app > div > div > div > div > div");
if (waittime && waittime.style.width === "100%") {
clearInterval(intervalId);
setTimeout(function() {
setStatus('Schließe Fenster von Framed Ad.');
window.close();
}, 500);
}
}, 100);
}
setTimeout(function() {
console.log('Klicke auf #toViewAds');
document.querySelector("#toViewAds").click();
setTimeout(function() {
console.log('Klicke auf das zweite Element in #viewads');
document.querySelector("#viewads > div:nth-child(2) > p", "#viewads > div.nav-head.dashboard-actived > p").click();
}, 500);
}, 1000 * 2);
// 1. Funktion für Framed Ads
async function processFramedAds() {
setStatus('Starte Verarbeitung von Framed Ads');
var headlineElement = document.querySelector("#app > div > div.coinpayu-dashboard-content > div.main-panel > div > div > h6");
if (GM_getValue('toggleSwitch1_toggleStatus', false) && headlineElement.innerText.includes("Framed")) {
return new Promise(resolve => {
function processNextFramedElement() {
setStatus('Verarbeite nächsten Framed Ad Element');
var element = document.querySelector('.clearfix.ags-list-box:not(.gray-all)');
if (element) {
var firstElement = element.querySelector('.text-overflow.ags-description > span');
var timeElement = element.querySelector('.ags-detail-time span');
var urlElement = element.querySelector('.text-overflow.ags-description');
var url = urlElement.getAttribute('title');
var time = parseInt(timeElement.textContent);
setStatus('Open ' + url + ' for ' + time + ' seconds.');
urlElement.removeAttribute('title');
if (firstElement) {
firstElement.click();
setTimeout(function() {
var interval = setInterval(function() {
var alertElementGreen = document.querySelector(".alert-div.alert-green");
var alertElementRed = document.querySelector(".alert-div.alert-red");
if (alertElementGreen) {
clearInterval(interval);
setTimeout(function() {
processNextFramedElement();
}, 3000);
} else if (alertElementRed) {
clearInterval(interval);
element.remove();
setTimeout(function() {
processNextFramedElement();
}, 7000);
}
}, 1000);
}, 3000);
}
} else {
setStatus('Framed Ads abgeschlossen.');
document.querySelector("#viewads > div:nth-child(1) > p").click();
setTimeout(function() {
resolve();
}, 2000);
}
}
processNextFramedElement();
});
}
}
// 2. Funktion für Frameless Ads
async function processFramelessAds() {
setStatus('Starte Verarbeitung von Frameless Ads');
var headlineElement = document.querySelector("#app > div > div.coinpayu-dashboard-content > div.main-panel > div > div > h6");
if (GM_getValue('toggleSwitch2_toggleStatus', false) && headlineElement?.innerText.includes("Frameless")) {
setStatus('Frameless Ads Toggle ist aktiviert und die Überschrift ist vorhanden.');
return new Promise(resolve => {
function processNextFramelessElement() {
setStatus('Verarbeite nächsten Frameless Ad Element');
var element = document.querySelector('.clearfix.ags-list-box:not(.gray-all)');
if (element) {
var firstElement = element.querySelector('.text-overflow.ags-description > span');
var timeElement = element.querySelector('.ags-detail-time span');
var urlElement = element.querySelector('.text-overflow.ags-description');
var url = urlElement.getAttribute('title');
var time = parseInt(timeElement.textContent);
setStatus('Open ' + url + ' for ' + time + ' seconds.');
urlElement.removeAttribute('title');
if (firstElement) {
firstElement.click();
unsafeWindow.open('', windowName).close();
setTimeout(function() {
var interval = setInterval(function() {
var alertElementGreen = document.querySelector(".alert-div.alert-green");
var alertElementRed = document.querySelector(".alert-div.alert-red");
if (alertElementGreen) {
clearInterval(interval);
setTimeout(function() {
processNextFramelessElement();
}, 3000);
} else if (alertElementRed) {
clearInterval(interval);
element.remove();
setTimeout(function() {
processNextFramelessElement();
}, 7000);
}
}, 1000);
}, 3000);
}
} else {
setStatus('Keine weiteren Frameless Ads gefunden.');
resolve();
}
}
processNextFramelessElement();
});
} else {
setStatus('Frameless Ads Toggle ist nicht aktiviert oder Überschrift nicht vorhanden.');
}
}
// 3. Funktion für das Schließen nach der Arbeit oder Seiten-Neuladen nach 3 Stunden
async function closeAfterWork() {
setStatus('Überprüfe, ob Schließen nach Arbeit aktiviert ist.');
if (GM_getValue('toggleSwitch3_toggleStatus', false)) {
// Wenn der Toggle aktiviert ist, schließe das Fenster
return new Promise(resolve => {
setTimeout(function() {
setStatus('Schließe Fenster nach der Arbeit.');
window.close();
resolve();
}, 3000); // 3 Sekunden warten vor dem Schließen
});
} else {
// Wenn der Toggle nicht aktiviert ist, lade die Seite nach 3 Stunden neu
return new Promise(resolve => {
setStatus('Lade die Seite nach 3 Stunden neu.');
setTimeout(function() {
window.location.href = "https://www.coinpayu.com/dashboard";
resolve();
}, 3 * 60 * 60 * 1000); // 3 Stunden in Millisekunden
});
}
}
// Funktionen in Reihenfolge ausführen
setTimeout(async function run() {
setStatus('Starte alle Funktionen nach 5 Sekunden');
await processFramedAds();
await processFramelessAds();
await closeAfterWork();
}, 5000); // 5 Sekunden warten, bevor die Funktionen ausgeführt werden
})();