goon/scripts/dump_pornapp_sites.ps1
goon-foss ad0284585b Initial commit
Goon — self-hosted aggregator for adult-content scene metadata.

Indexes scenes from TPDB, StashDB, and 30+ public adult tube sites.
Cross-source deduplication via perceptual hash + Levenshtein distance.
FastAPI backend + APScheduler worker + React Native (Expo) mobile client.

FOSS, ad-free, donation-funded. See README for details.
2026-05-20 10:10:22 +02:00

54 lines
2 KiB
PowerShell

$adb = "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe"
$outDir = "$env:TEMP\aio_dumps"
New-Item -ItemType Directory -Force -Path $outDir | Out-Null
$allSites = New-Object 'System.Collections.Generic.HashSet[string]'
$prevSig = ""
$stableCount = 0
$maxIters = 50
for ($i = 1; $i -le $maxIters; $i++) {
# Dump UI hierarchy
& $adb shell uiautomator dump /sdcard/ui.xml 2>&1 | Out-Null
& $adb pull /sdcard/ui.xml "$outDir\ui_$i.xml" 2>&1 | Out-Null
[xml]$x = Get-Content "$outDir\ui_$i.xml" -Raw
# Collect text nodes that look like tube names (non-empty, not generic UI labels)
$nodes = $x.SelectNodes("//node[@text!='']")
$skip = @("All Sites","Search site","Top Porn Sites (HD + 4K)","Gay Porn","Trans Porn","VR Porn",
"Promo Offer","Paysites","Search","NSFWSwipe.com")
$newOnPage = @()
foreach ($n in $nodes) {
$t = $n.text.Trim()
if ($t.Length -lt 2 -or $t.Length -gt 40) { continue }
if ($skip -contains $t) { continue }
if ($t -match '^[\d\W]+$') { continue } # numeric / punctuation only
if ($allSites.Add($t)) { $newOnPage += $t }
}
# Compute signature for "page didn't change"
$sig = ($nodes | ForEach-Object { $_.text }) -join '|'
if ($sig -eq $prevSig) {
$stableCount++
if ($stableCount -ge 2) {
Write-Output "iter $i — page stable, stop"
break
}
} else {
$stableCount = 0
$prevSig = $sig
}
Write-Output ("iter " + $i + ": +" + $newOnPage.Count + " new, total=" + $allSites.Count)
# Scroll down (drag top of list toward bottom = content scrolls up = next page)
& $adb shell input swipe 540 2000 540 400 250
Start-Sleep -Milliseconds 600
}
Write-Output ""
Write-Output "=== TOTAL UNIQUE TUBES: $($allSites.Count) ==="
$allSites | Sort-Object | ForEach-Object { Write-Output $_ }
$allSites | Sort-Object | Out-File -Encoding utf8 "$outDir\all_tubes.txt"
Write-Output ""
Write-Output "saved to: $outDir\all_tubes.txt"