yardlight8
Lurker
- Joined
- Nov 1, 2025
- Posts
- 17
- Reaction score
- 0
IS there any tool that can rip darkfans videos? i searched for a while and the methods that i found are not working anymore
data-token// ==UserScript==
// @name Darkfans Click to Copy Data-Token
// @namespace http://tampermonkey.net
// @version 1.5
// @description Adds a floating button to copy the data-token on demand.
// @author You
// @include /^https?:\/\/(?:[^\/]+\.)?darkfans\.com/.*$/
// @grant GM_setClipboard
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// 1. Create the floating button
const btn = document.createElement('button');
btn.textContent = '📋 Copy Token';
// Style the button to float in the bottom-right corner
btn.style.position = 'fixed';
btn.style.bottom = '20px';
btn.style.right = '20px';
btn.style.zIndex = '10000';
btn.style.backgroundColor = '#007bff';
btn.style.color = '#fff';
btn.style.border = 'none';
btn.style.borderRadius = '5px';
btn.style.padding = '10px 15px';
btn.style.cursor = 'pointer';
btn.style.fontFamily = 'sans-serif';
btn.style.fontSize = '14px';
btn.style.fontWeight = 'bold';
btn.style.boxShadow = '0 4px 6px rgba(0,0,0,0.2)';
btn.style.transition = 'background-color 0.2s';
// Hover effects
btn.onmouseover = () => btn.style.backgroundColor = '#0056b3';
btn.onmouseout = () => btn.style.backgroundColor = '#007bff';
// 2. Define what happens when clicked
btn.onclick = function() {
const element = document.querySelector('[data-token]');
if (element) {
const token = element.getAttribute('data-token');
if (token) {
// Copy to clipboard via Tampermonkey API
GM_setClipboard(token);
// Visual feedback on the button
btn.textContent = '✅ Copied!';
btn.style.backgroundColor = '#28a745';
// Reset button text after 2 seconds
setTimeout(() => {
btn.textContent = '📋 Copy Token';
btn.style.backgroundColor = '#007bff';
}, 2000);
return;
}
}
// Error feedback if token isn't found
btn.textContent = '❌ No Token Found';
btn.style.backgroundColor = '#dc3545';
setTimeout(() => {
btn.textContent = '📋 Copy Token';
btn.style.backgroundColor = '#007bff';
}, 2000);
};
// 3. Inject the button into the webpage
document.body.appendChild(btn);
})();
// ==UserScript==
// @name Fastevo Auto-Download
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Grabs DataToken, POSTs to Fastevo, copies N_m3u8DL-RE command to clipboard
// @include /^https?:\/\/(?:[^\/]+\.)?darkfans\.com/.*$/
// @grant GM_setClipboard
// @grant GM_xmlhttpRequest
// @connect larley.dev
// ==/UserScript==
(function() {
'use strict';
const btn = document.createElement('button');
btn.textContent = '⬇ Auto Download';
Object.assign(btn.style, {
position: 'fixed', bottom: '20px', right: '20px', zIndex: '10000',
backgroundColor: '#007bff', color: '#fff', border: 'none',
borderRadius: '5px', padding: '10px 15px', cursor: 'pointer',
fontFamily: 'sans-serif', fontSize: '14px', fontWeight: 'bold',
boxShadow: '0 4px 6px rgba(0,0,0,0.2)', transition: 'background-color 0.2s'
});
btn.onmouseover = () => btn.style.backgroundColor = '#0056b3';
btn.onmouseout = () => btn.style.backgroundColor = '#007bff';
function setStatus(text, color, reset = true) {
btn.textContent = text;
btn.style.backgroundColor = color;
if (reset) {
setTimeout(() => {
btn.textContent = '⬇ Auto Download';
btn.style.backgroundColor = '#007bff';
}, 3000);
}
}
function gmFetch(url, opts = {}) {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: opts.method || 'GET',
url,
headers: opts.headers || {},
data: opts.body || null,
withCredentials: true,
timeout: 30000,
onload: r => resolve(r.responseText),
onerror: e => reject(new Error('Network error')),
ontimeout: () => reject(new Error('Timeout'))
});
});
}
btn.onclick = async function() {
const el = document.querySelector('[data-token]');
if (!el || !el.getAttribute('data-token')) {
setStatus('❌ No Token Found', '#dc3545');
return;
}
const token = el.getAttribute('data-token');
try {
setStatus('⏳ Fetching page…', '#ffc107', false);
// 1. GET the Fastevo page to obtain a fresh __RequestVerificationToken
const html = await gmFetch('https://larley.dev/Page/Fastevo');
const doc = new DOMParser().parseFromString(html, 'text/html');
const rvtInput = doc.querySelector('input[name="__RequestVerificationToken"]');
if (!rvtInput) throw new Error('No antiforgery token on page');
const rvt = rvtInput.value;
setStatus('⏳ Submitting token…', '#ffc107', false);
// 2. POST the DataToken
const body = new URLSearchParams();
body.append('DataToken', token);
body.append('__RequestVerificationToken', rvt);
const respHtml = await gmFetch('https://larley.dev/Page/Fastevo', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: body.toString()
});
// 3. Parse the command input
const respDoc = new DOMParser().parseFromString(respHtml, 'text/html');
const cmdInput = respDoc.querySelector('#command');
if (!cmdInput || !cmdInput.value) throw new Error('No command in response');
const command = cmdInput.value; // already decoded by DOMParser
// 4. Copy to clipboard - PowerShell monitor will pick it up
GM_setClipboard(command);
setStatus('✅ Sent! Watch cmd window', '#28a745');
} catch (e) {
console.error('[Fastevo Auto]', e);
setStatus('❌ ' + e.message, '#dc3545');
}
};
document.body.appendChild(btn);
})();
# FastevoMonitor.ps1
# Watches clipboard for N_m3u8DL-RE commands and runs them automatically.
$lastClipboard = ""
Write-Host "=== Fastevo N_m3u8DL-RE Clipboard Monitor ===" -ForegroundColor Cyan
Write-Host "Click the Tampermonkey button to start a download." -ForegroundColor Cyan
Write-Host "Press Ctrl+C to stop.`n" -ForegroundColor Cyan
while ($true) {
try {
$current = Get-Clipboard -Raw
if ($current -and $current -ne $lastClipboard) {
$lastClipboard = $current
# Match a command that has N_m3u8DL-RE plus at least one --key
if ($current -match 'N_m3u8DL-RE' -and $current -match '--key') {
$command = $current.Trim()
$ts = Get-Date -Format 'HH:mm:ss'
Write-Host "[$ts] Detected download command. Launching..." -ForegroundColor Green
# Build a temp .bat
# We append "-sv best -sa best" so it skips the interactive Spectre.Console prompt
$tempBat = [System.IO.Path]::GetTempFileName() + ".bat"
$bat = @"
@echo off
title Fastevo Download
echo Running: $command -sv best -sa best
echo.
$command -sv best -sa best
echo.
echo === Process finished ===
pause >nul
"@
Set-Content -Path $tempBat -Value $bat -Encoding ASCII
Start-Process -FilePath "cmd.exe" -ArgumentList "/c", "`"$tempBat`""
# Avoid re-triggering on the same clipboard content
Start-Sleep -Seconds 3
}
}
} catch {
Write-Host "Error: $_" -ForegroundColor Red
}
Start-Sleep -Milliseconds 500
}