Mittwoch, Mai 20, 2026

How to run djShow 4.2.0 for Mixxx

 


djShow 4.2.0 für Mixxx

 

djShow 4.2.0 can be used to display song information using Mixxx.

It needs some tweaking though….

I'll show you how I managed to do it.  Code for *.vbs or *.bat Files was provided by google Gemini.

 

Step-by-step Instructions:

1.      Download djShow 4.2.0 from the official github project site: https://github.com/SevaXXL/djShow

and extract folders

 

My setup:

 

I run djShow.exe from the folder \Downloads\djShow-win-4.2.0

 

In the modules folder, there must be the virtualdj.vbs File (which is used to display song-info from Virtual-DJ, see my other project docu)

 

 

However, the functionality of the virtualdj.vbs File is no longer used (or rather replaced by the other script file) and you can wipe out the content completely. (notice file size=0)

I recommend using notepad++ for editing.   So.. please erase any content from the file virtualdj.vbs.

 

It is only used by djShow.exe as it is hard-coded to use the script virtualdj.vbs when present in the subfolder \modules.

 

2.      Create a separate folder for the Mixxx-Scripts

In my example, it looks as follows:

2.1.                       Create a file named mixxx_live.ps1  (note the ending must read *.ps1

2.2.                       Create a file named mixxx_starten.bat (note the ending must read *.bat

Enter the following code into the *.bat File:

----------copy text below---------

@echo off

title Mixxx zu djShow Starter

echo Starte PowerShell-Skript im sichtbaren Modus...

cd /d "C:\Users\rener\Downloads\Mixxx_Script_DJ_Show"

powershell.exe -NoExit -ExecutionPolicy Bypass -File "mixxx_live.ps1"

pause

-------------------end text------------

 

2.3 Download the sqlite3.exe from the official sqllite-website: https://sqlite.org/download.html  
è use the sqlite-tools-win-x64-3530100.zip  (or the appropriate version according your system)

Note: è the sqlite3.exe file should be stored in the same directory folder as the two other files, see above.

 

2.4. Edit the mixxx_live.ps1 file to contain the following code:

------Copy code below-------------

# --- CONFIGURATION ---

$dbPath = "$env:USERPROFILE\AppData\Local\Mixxx\mixxxdb.sqlite"

$serverUrl = "http://localhost:3000/data"

$sqliteExe = "$PSScriptRoot\sqlite3.exe"

 

# UTF-8 BOMBER: Zwingt PowerShell, externe Konsolen-Ausgaben (sqlite3) als UTF-8 zu lesen

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

$OutputEncoding = [System.Text.Encoding]::UTF8

 

Clear-Host

Write-Host "=========================================" -ForegroundColor Magenta

Write-Host "   MIXXX SQLITE ENGINE (UTF-8 CORRECTED) " -ForegroundColor Green

Write-Host "=========================================" -ForegroundColor Magenta

 

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

    Write-Host "FEHLER: sqlite3.exe wurde nicht im Skript-Ordner gefunden!" -ForegroundColor Red

    Exit

}

 

Write-Host "Ueberwache Mixxx-Datenbank mit Sonderzeichen-Korrektur..." -ForegroundColor Cyan

$lastTrackKey = ""

 

while ($true) {

    if (Test-Path $dbPath) {

        try {

            # Temporaere Kopie fuer Live-Zugriff

            $tempDb = "$env:TEMP\mixxx_cli_live.sqlite"

            Copy-Item $dbPath $tempDb -Force -ErrorAction SilentlyContinue

 

            # SQL-Abfrage liefert UTF-8 Daten

            $query = "SELECT library.artist || ' ## ' || library.title FROM playlisttracks JOIN library ON playlisttracks.track_id = library.id ORDER BY playlisttracks.id DESC LIMIT 1;"

           

            # Ausfuehren ueber das CLI-Tool

            $result = & $sqliteExe $tempDb $query

            Remove-Item $tempDb -Force -ErrorAction SilentlyContinue

 

            if ($result -and $result -match " ## ") {

                $parts = $result -split " ## ", 2

                $foundArtist = $parts[0].Trim()

                $foundTitle = $parts[1].Trim()

 

                if ($foundArtist -and $foundTitle) {

                    $trackKey = "$foundArtist|$foundTitle"

 

                    if ($trackKey -ne $lastTrackKey) {

                        $lastTrackKey = $trackKey

 

                        # Foto-Code generieren (Hier entfernen wir Akzente fuer Dateinamen!)

                        $photoFile = $foundArtist.ToLower()

                       

                        # Typische Tango-Sonderzeichen fuer den Bildnamen saubermachen

                        $photoFile = $photoFile -replace '[áàâãä]','a' -replace '[éèêë]','e' -replace '[íìîï]','i' -replace '[óòôõö]','o' -replace '[úùûü]','u'

                        $photoFile = $photoFile -replace 'ñ','n' -replace 'ç','c' -replace 'ß','ss'

                        $photoFile = $photoFile -replace "[^a-z0-9]", "_" -replace "_+", "_"

                        $photoFile = $photoFile.Trim("_")

 

                        # Sendeformat fuer djShow (Sowohl PowerShell als auch Node.js sprechen jetzt UTF-8)

                        $cleanText = "Genre: Tango`r`nArtist: $foundArtist`r`nTitle: $foundTitle"

                        if ($photoFile) { $cleanText += "`r`nPhoto: $photoFile" }

 

                        Write-Host "--- NEUER SONG GEFUNDEN ---" -ForegroundColor Yellow

                        Write-Host "Interpret: $foundArtist" -ForegroundColor White

                        Write-Host "Titel:     $foundTitle" -ForegroundColor White

                        Write-Host "---------------------------" -ForegroundColor Gray

 

                        # Daten abschicken mit explizitem UTF-8 Header

                        $bytesOut = [System.Text.Encoding]::UTF8.GetBytes($cleanText)

                        Invoke-RestMethod -Uri $serverUrl -Method Post -Body $bytesOut -ContentType "text/plain; charset=utf-8" -ErrorAction SilentlyContinue

                    }

                }

            }

        } catch {

            # Schutzschaltung

        }

    }

    Start-Sleep -Seconds 2

}

 

-----------end code------------------

 

Start djshow.exe first, then the batch file mixxx_starten.bat  (or whatever you named it)

 

 

 

Then start Mixxx and play your tangos/vals/milongas….

 

Check your localhost website in your browser, according the URL in the djshow window.. here it's localhost:3000 or http://192.168.1.118:3000

 

 

 

 


Keine Kommentare: