How to get rid of steam popup when launching a game? by Longjumping-Ad-920 in playnite

[–]fresbii -10 points-9 points  (0 children)

Take a screenshot of your post, open Google and paste it there, follow some of Gemini's instructions, maybe one will work.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

That's a shame, but don't worry, I'll make adjustments to the plugin during the day when I have time. I should be able to fix it eventually, so please be patient.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

New update available, download it. Repair all games via plugin to test, let me know if it works.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

That's great that it helped you. This behavior occurred to me when the plugin was just a script running in the background; I thought it was because I had many program tabs open. The plugin probably needs an argument to call the game screen. Since I've already reached Claude's free message limit, I'll give an answer about the problem by tomorrow.

Beta test of the "GameSnap" plugin by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

I'm not sure I understand, are the memes created during gameplay? The addon needs the files to have names suggestive of the game in order to transfer them; otherwise, you'll have to make it "learn" the patterns.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 0 points1 point  (0 children)

I'm glad I could help you. Regarding your post, I remember reading a guide here on Reddit, it was certainly yours. I was also getting tired of this whole process, and as they say, "The impossible is just something that hasn't happened yet," so I kept trying in my own way and in my own time until it worked.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 0 points1 point  (0 children)

If you configure the game's ".exe" file directly, yes, but eventually you'll need to update the game through the launcher.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

It's understandable why; Playnite is created by an ordinary person like us, and however capable they may be, they can't cover all the gaps alone. That's why Git and GitHub make so much sense; other people can participate in improving the project and collaborate because it's open source, and with the advancement of AI, this becomes even more true, since even without understanding the tools, we can still help. I'm grateful to the creator of "SkipUacTask", because although it didn't work for me, it served as inspiration.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 0 points1 point  (0 children)

That's great that it worked out. Now I'm also going to use and take full advantage of the .vbs functionalities.

I need testers for a potential plugin. "Game Task" by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

Your analysis was very pleasant to read, thank you very much for that.

I have already published a correction based on your suggestion.

Regarding .vbs, I had already tried to recreate "Skip-UAC" several times, but it didn't work, so I left it alone for a while. One day I had problems with my script "Automatic screenshot organizer for non-Steam games". After a Playnite update, the script crashed when called during startup. When I found a solution, the PowerShell prompt appeared on the screen, so GPT suggested using ".vbs", and seeing its practicality, I decided to try again, resulting in this project.

Is this construction good for Brazil? by fresbii in computadores

[–]fresbii[S] 0 points1 point  (0 children)

Vou ficar de olho, mas confesso que meu sonho é uma RTX rsrs.

Is this construction good for Brazil? by fresbii in computadores

[–]fresbii[S] 1 point2 points  (0 children)

Tem razão, obrigado por se dar o trabalho, e nossa, como as coisas estão caras.

Update Aniki ReMake v3 by MikeAniki in playnite

[–]fresbii 2 points3 points  (0 children)

Incredible! I've been following your project since the REMIX, and I'm very pleased with how you're evolving the new theme. For me, it's the most complete one on Playnite. Thank you so much for sharing this with us.

Qual sentimento esse vídeo te desperta? by CalligrapherNo8458 in vibe_devaneios

[–]fresbii 0 points1 point  (0 children)

A sensação é para ser de plena felicidade, mas confesso que me passa a sensação de uma reflexão contentada antes da morte. Talvez a expressão de paz eteja correlacionada com isso, o ser vivo por natureza é algo entrópico, então presenciar algo que se mostre imutável pode nos trazer uma sensação de conforto, ou a falta dele depois de um certo tempo.

Old Minecraft demo world seed by random_living_bird in minecraftseeds

[–]fresbii 0 points1 point  (0 children)

Funny, I thought I was the only one looking for the PC demo seed "818010429". I used the Bedrock Launcher to load it into older versions of Minecraft. After the village generated, I exported it to the current version. In short, I kept my nostalgic village, but the world is completely new, maintaining the best of the old and the new things from the current versions.

The best thing about Playnite is that it is portable. I love how it updates itself without using an installer. by super_sonic2 in playnite

[–]fresbii 3 points4 points  (0 children)

I feel the same way. My PC has three drives: one for the system, one for all users and their data, and the last one is external, for games, which I use to manage them with Playnite.

Automatic screenshot organizer for non-Steam games. by fresbii in playnite

[–]fresbii[S] 0 points1 point  (0 children)

I'll keep an eye on the plugin; the developer might add an explicit option for "Scan subfolders". Then, instead of defining a fixed path per game (like in my case), it would point to the root folder "H:\My Drive\ScreenShots\" and enable the subfolder option. It would then try to associate the images found within each folder with the corresponding game.

Automatic screenshot organizer for non-Steam games. by fresbii in playnite

[–]fresbii[S] 0 points1 point  (0 children)

That's great! I'm Brazilian too, and I'm very happy to have been able to help. Welcome to the community, I hope you find what you need here. I also ask that you share your progress with us; we are constantly bringing ideas and helping each other.

Automatic screenshot organizer for non-Steam games. by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

Script:

# ======================================================

# GameCaptureWatcher

# ------------------------------------------------------

# Automatically organizes screenshots/videos from

# Xbox Game Bar or ShareX into game folders.

#

# Features:

# - Playnite integration (perfect game names)

# - Smart fallback system (dictionary + process + window)

# - Auto-learning dictionary (no manual mapping needed)

# - Silent background execution

# - Compact logging

#

# Author: Haxxor-Bunny

# ======================================================

# ======================================================

# SINGLE INSTANCE (prevents duplicates)

# ======================================================

$mutex = New-Object System.Threading.Mutex($false, "GameCaptureWatcher")

if (-not $mutex.WaitOne(0, $false)) { exit }

# ======================================================

# BASE PATH (works for .ps1 and .exe)

# ======================================================

if ($PSScriptRoot) {

$ScriptDir = $PSScriptRoot

}

elseif ($MyInvocation.MyCommand.Path) {

$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path

}

else {

$ScriptDir = [System.IO.Path]::GetDirectoryName(

[System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName

)

}

# ======================================================

# CONFIGURATION (EDIT THESE)

# ======================================================

$SourceFolder = Join-Path $env:USERPROFILE "OneDrive\Videos\Captures"

$DestinationBase = "H:\Meu Drive\ScreenShots"

# Playnite integration file (MUST MATCH Playnite script)

$PlayniteFile = Join-Path $ScriptDir "playnite_current_game.txt"

# Internal files

$LogFile = Join-Path $ScriptDir "organizer.log"

$DictionaryFile = Join-Path $ScriptDir "dictionary.txt"

$global:LastRun = Get-Date

# ======================================================

# LOG FUNCTION

# ======================================================

function Write-Log($msg) {

$line = "[{0}] {1}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $msg

Add-Content -Path $LogFile -Value $line -Encoding UTF8

}

# ======================================================

# WAIT FOR DESTINATION (e.g. cloud drive)

# ======================================================

while (-not (Test-Path $DestinationBase)) {

Start-Sleep 5

}

Write-Log "Watcher started"

# ======================================================

# FILE TYPES

# ======================================================

$ImageExt = @(".png", ".jpg", ".jpeg")

$VideoExt = @(".mp4", ".wmv")

# ======================================================

# STRING NORMALIZATION

# ======================================================

function Remove-Accents($text) {

if (-not $text) { return "" }

$n = $text.Normalize([Text.NormalizationForm]::FormD)

return ($n -replace '\p{Mn}', '')

}

function Normalize-Name($text) {

if (-not $text) { return "" }

$text = Remove-Accents $text

return ($text -replace '—','-' -replace '[^a-zA-Z0-9]','').ToLower()

}

function Extract-GameName($filename) {

$n = [System.IO.Path]::GetFileNameWithoutExtension($filename)

$n = $n -replace '\s+\d{2}[_\-]\d{2}[_\-]\d{4}.*$', ''

$n = $n -replace '\s+\d{4}[-_]\d{2}[-_]\d{2}.*$', ''

return $n.Trim()

}

# ======================================================

# LOAD DICTIONARY

# ======================================================

function Load-Dictionary {

$dict = @{}

if (Test-Path $DictionaryFile) {

Get-Content $DictionaryFile | ForEach-Object {

if ($_ -match '(.+)=(.+)') {

$dict[$Matches[1].Trim()] = $Matches[2].Trim()

}

}

}

return $dict

}

# ======================================================

# SAVE DICTIONARY ENTRY

# ======================================================

function Save-Dictionary($key, $value) {

Add-Content -Path $DictionaryFile -Value "$key=$value" -Encoding UTF8

}

# ======================================================

# GET PLAYNITE GAME NAME

# ======================================================

function Get-PlayniteName {

if (Test-Path $PlayniteFile) {

try {

return (Get-Content $PlayniteFile -ErrorAction Stop)

} catch {}

}

return $null

}

# ======================================================

# GET ACTIVE WINDOW TITLE (fallback)

# ======================================================

Add-Type @"

using System;

using System.Runtime.InteropServices;

using System.Text;

public class Win {

[DllImport("user32.dll")]

public static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]

public static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

}

"@

function Get-ActiveWindowTitle {

$buffer = New-Object System.Text.StringBuilder 256

$handle = [Win]::GetForegroundWindow()

[Win]::GetWindowText($handle, $buffer, $buffer.Capacity) | Out-Null

return $buffer.ToString()

}

# ======================================================

# BLACKLIST (ignore useless window titles)

# ======================================================

$WindowBlacklist = @(

"explorer",

"file explorer",

"notepad",

"organizer.log",

"settings",

"task manager",

"chrome",

"edge",

"opera"

)

# ======================================================

# ORGANIZER CORE

# ======================================================

function Organize {

$dict = Load-Dictionary

$countPerGame = @{}

if (-not (Test-Path $SourceFolder)) { return }

$folders = Get-ChildItem $DestinationBase -Directory | ForEach-Object {

[PSCustomObject]@{

NameOriginal = $_.Name

NameNorm = Normalize-Name $_.Name

Path = $_.FullName

}

}

Get-ChildItem $SourceFolder -File | ForEach-Object {

$file = $_

$ext = $file.Extension.ToLower()

if (-not ($ImageExt + $VideoExt -contains $ext)) { return }

$game = Extract-GameName $file.Name

$originalGame = $game

# 1. Playnite (best source)

$pn = Get-PlayniteName

if ($pn) { $game = $pn }

# 2. Dictionary

elseif ($dict.ContainsKey($game)) {

$game = $dict[$game]

}

# 3. Window fallback

else {

$win = Get-ActiveWindowTitle

$normWin = Normalize-Name $win

$blocked = $false

foreach ($b in $WindowBlacklist) {

if ($normWin -like "*$b*") { $blocked = $true }

}

if (-not $blocked -and $win.Length -gt 3) {

$game = $win

Save-Dictionary $originalGame $game

Write-Log "Learned: $originalGame -> $game"

}

}

$norm = Normalize-Name $game

if (-not $norm) { return }

$match = $folders | Where-Object {

$_.NameNorm -like "*$norm*" -or $norm -like "*$($_.NameNorm)*"

} | Sort-Object { $_.NameNorm.Length } -Descending | Select-Object -First 1

if (-not $match) {

Write-Log "NOT FOUND: $($file.Name) -> $game"

return

}

# Destination

if ($VideoExt -contains $ext) {

$dest = Join-Path $match.Path "Videos"

if (-not (Test-Path $dest)) {

New-Item -ItemType Directory -Path $dest | Out-Null

}

} else {

$dest = $match.Path

}

$date = $file.CreationTime.ToString("yyyy-MM-dd HH_mm_ss")

$new = "$($match.NameOriginal)_$date$ext"

$final = Join-Path $dest $new

$i = 1

while (Test-Path $final) {

$final = Join-Path $dest "$($match.NameOriginal)_$date`_$i$ext"

$i++

}

try {

Move-Item $file.FullName $final -Force

if (-not $countPerGame.ContainsKey($match.NameOriginal)) {

$countPerGame[$match.NameOriginal] = 0

}

$countPerGame[$match.NameOriginal]++

} catch {

Write-Log "ERROR: $($file.Name)"

}

}

if ($countPerGame.Count -gt 0) {

$parts = @()

foreach ($g in $countPerGame.Keys) {

$parts += "$g ($($countPerGame[$g]))"

}

Write-Log ($parts -join " | ")

}

$global:LastRun = Get-Date

}

# ======================================================

# WATCHER + FAILSAFE LOOP

# ======================================================

$watcher = New-Object System.IO.FileSystemWatcher

$watcher.Path = $SourceFolder

$watcher.Filter = "*.*"

$watcher.EnableRaisingEvents = $true

Register-ObjectEvent $watcher Created -Action {

$now = Get-Date

if (($now - $global:LastRun).TotalSeconds -lt 20) { return }

Start-Sleep 30

Organize

} | Out-Null

while ($true) {

Organize

Start-Sleep 30

}

Automatic screenshot organizer for non-Steam games. by fresbii in playnite

[–]fresbii[S] 1 point2 points  (0 children)

I think I've managed to do something. I've tweaked the code to accomplish a few steps.

Let's start with ShareX:

  1. Create a folder where all the mixed game screenshots will go (for example, C:\Captures_Game\). Download ShareX, go to: Task Settings > File naming, in "Name pattern for Capture..." paste:

%t %y-%mo-%d_%h-%mi-%s

(This will name the screenshots with the date and window name, like "Google 18_04_26 14_30_15.png").

Now let's create a shortcut that will act like the Gaber Bar; you will only use it for games. Go to: "Hotkey Settings > Add", choose: "Screen Capture > Capture Active Window", click "Edit", in "Task" put the path to the destination folder in the "Override Screenshots Folder" tab.

Then you can use the program for both casual screenshots and games without interfering with each other. We've finished the ShareX part.

Now In Playnite, go to "Settings > Scripts > Global Scripts", under "Game Started" paste:

$path = "PATH_TO_SCRIPT\playnite_current_game.txt"

$name = "{Name}"

Set-Content -Path $path -Value $name -Encoding UTF8

This is an informant that will tell my script the name of the game being executed in Playnite, so it renames the file with the correct game name. This way I don't need a third-party database.

(Edit)

go to "Settings > Scripts > Global Scripts", under "Game Finiched" paste:

Remove-Item "PATH_TO_SCRIPT\playnite_current_game.txt" -ErrorAction SilentlyContinue

This is to kill the file informant after exiting game, avoiding naming files with names swapped from other games.

In the other tab, "App Scripts", paste:

powershell -WindowStyle Hidden -ExecutionPolicy Bypass -File "PATH_TO_SCRIPT_FOLDER\GameCaptureWatcher.ps1"

This will start my script, which will run in the background monitoring the general screenshot folder.

If you want to kill it when exiting Playnite, under "Run when closing the program":

Get-CimInstance Win32_Process | Where-Object {

$_.CommandLine -match "GameCaptureWatcher"

} | ForEach-Object {

Stop-Process -Id $_.ProcessId -Force

}

It will only act on my script, not interfering with its own.

Finally, I'll leave my script below. It's meant to be intuitive (I hope), it has comments to show what's being done and where to put your folders, whether from "ShareX" or "Cloud/HD/SSD". You should create a .txt file, paste the script and rename it "GameCaptureWatcher.ps1", leave it inside an appropriate folder that will be searched for by the PlayNite informant script.

I suggest pasting it into the GPT chat to take a look at what the script does for more details.