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
