Resource icon

VLC Now Playing Monitor - Metadata Display 1.3.4 - Bug Fixes

icy404

New Member
icy404 submitted a new resource:

VLC Now Playing Monitor - Metadata Display - Automatically detects and displays currently playing song metadata from VLC Video Source real-time

VLC Now Playing Monitor

Automatically detects and displays the currently playing song from your VLC Video Source, reading actual ID3 metadata tags (title, artist, album) instead of relying on manual timing.

✨ Features

  • Real-time Detection: Automatically detects which song VLC is currently playing
  • Metadata Support: Reads ID3 tags (title, artist, album) from MP3, FLAC, OGG, M4A, WAV, OPUS, AAC files
  • Customizable Format: Use variables like `{title} -...

Read more about this resource...
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

5 Major Changes coming with v1.0.5

Added Multi-Platform Support
Prior to version 1.0.0, the script used lsof, which is primarily a Linux based library.

Fixed Performance Issues (direct source reading)
  • VLC source reading is now the primary method (instant, no file system scanning)
  • lsof now only checks obs process, not entire folder.
  • Much faster and more reliable

Module-Level Imports
  • mutagen imported at top with...

Read the rest of this update entry...
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

Parse text error

All users are pleased to not download or run the script. It has a fatal error which im trying to find and fix. If you still have the old version of the file, please use that, otherwise it wont work.

I will fix this as soon as humanly possible, and i know some might be frustrated, but mistakes happen, and im really sorry for that. See ya in a bit lads.

Read the rest of this update entry...
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

Update v1.2.5 - Bug Fixes

Fixed Issues:
  1. File output not working by default - The script now automatically writes to a default output file path. Previously, users had to manually configure the output file path in settings.
  2. Song titles with dashes displayed incorrectly - Fixed formatting logic that was removing dashes from song names. Files like "Song Title - Artist Name.mp3" now display correctly with the dash preserved.
  3. Folder monitoring mode parsing metadata instead of...

Read the rest of this update entry...
 
Hello, just wanted to say thanks for the script. However, it doesn't exactly do what it should (on Windows). There were two problems that I've experienced:

  1. The script itself contained a minor error - easily fixable - but still one that prohibited execution:
Python:
16 # ==================== Version Info ====================
17 __version__ = "1.2.5
18 __author__ = "icy404"
19 __updated__ = "2025-11-11"
20 
21 # ==================== Configuration ====================
The python interpreter (at least in my 3.12 version) was complaining about line 17 having an unterminated string literal - fixed by appending '"' to the end - no biggie.

2. Once problem #1 is out of the way, and proper sources are created (which isn't explained all that great - especially the VLC source that needs to be created in obs and populated with the playlist), the script only recognizes the first item in the playlist. Even if the playback continues to further items. The text in the text source remains the same, the same one displayed for the first item. Maybe I'll play around with the script to see what can be done to fix this.​
Thanks,
dr0nk
 
Ok, I think I found the reason why it doesn't work:
Python:
419 def get_playing_file():
420     """Cross-platform file detection"""
421     # Method 1: Try VLC source first (most reliable and cross-platform)
422     if vlc_source_name:
423         file = get_vlc_current_file()
424         if file:
425             return file
426    
427     # Method 2: Fallback to file monitoring
428     if not music_folder:
429         return None
430    
431     system = platform.system()
432    
433     if system == 'Windows':
434         return get_playing_file_windows()
435     elif system in ['Linux', 'Darwin']:  # Darwin = macOS
Even with proper configuration the function get_vlc_current_file() on line 423 gets called on windows (which I assume - it shouldn't be?) and the return is 'None'. Swapping this call for get_playing_file_windows() does the trick and the text source gets updated with the currently playing song. Unfortunately, this is very inefficient since every time get_playing_file_windows() gets called it searches for the obs process via psutil - but I will fix that for myself.

Thanks again,
dr0nk
 
Ok, I think I found the reason why it doesn't work:
Python:
419 def get_playing_file():
420     """Cross-platform file detection"""
421     # Method 1: Try VLC source first (most reliable and cross-platform)
422     if vlc_source_name:
423         file = get_vlc_current_file()
424         if file:
425             return file
426   
427     # Method 2: Fallback to file monitoring
428     if not music_folder:
429         return None
430   
431     system = platform.system()
432   
433     if system == 'Windows':
434         return get_playing_file_windows()
435     elif system in ['Linux', 'Darwin']:  # Darwin = macOS
Even with proper configuration the function get_vlc_current_file() on line 423 gets called on windows (which I assume - it shouldn't be?) and the return is 'None'. Swapping this call for get_playing_file_windows() does the trick and the text source gets updated with the currently playing song. Unfortunately, this is very inefficient since every time get_playing_file_windows() gets called it searches for the obs process via psutil - but I will fix that for myself.

Thanks again,
dr0nk
Hey there!
Thanks a lot for catching those problems. I just noticed the version string error, as for the windows side, I don't have an immediate fix, since I solely run Linux in my system, and i run Windows in a VM just to simply play some games. If you have a good suggestion for the fix, I would be happy to add it to the script.

Again, thank you for pointing out the issues dr0nk. Thats very cool from u.
icy404
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

Version 1.3.0 Fixes

As pointed out before from dr0nk, the previous version of the script did have some issues that would stop the script dead on its tracks. In response to these issues, I've come up with the neccessary fixes (lets hope i didnt break something else again xD)

1. Unterminated string literal in version info

Original issue:
Python:
16 # ==================== Version Info ====================
17...

Read the rest of this update entry...
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

Hotfix (I'm literally stupid)

Yeaaah... I kinda foreshadowed it myself in the previous version upload `1.3.0`... due to an IDE error masive chunks of the code were gone. This basically made the properties not render in OBS, which made the script unusable, since you couldn't set up the script up for work. Thank God I keep copies of previous versions, and through a cross reference, despite adding more code to the 1.3.0 version, it roughly had almost the same number of lines as 1.2.5....so yeahh *sigh*

Funny enough these...

Read the rest of this update entry...
 
Hey there!
Thanks a lot for catching those problems. I just noticed the version string error, as for the windows side, I don't have an immediate fix, since I solely run Linux in my system, and i run Windows in a VM just to simply play some games. If you have a good suggestion for the fix, I would be happy to add it to the script.

Again, thank you for pointing out the issues dr0nk. Thats very cool from u.
icy404
Well, according to the forum post, I linked earlier, one of the solutions to avoid the camera freezing is to spawn the main loop, that does the sleeping and checking whether the current playlist item changed, inside a separate thread. Unfortunately, I'm not a python specialist and I couldn't find a way to do that from inside obs. I have found another solution for this task so maybe I didn't really try hard enough.
 
Well, according to the forum post, I linked earlier, one of the solutions to avoid the camera freezing is to spawn the main loop, that does the sleeping and checking whether the current playlist item changed, inside a separate thread. Unfortunately, I'm not a python specialist and I couldn't find a way to do that from inside obs. I have found another solution for this task so maybe I didn't really try hard enough.
Hey there dr0nk,
Sorry for the late reply, and I will get on that as soon as humanly possible.
I really appreciate your help and countless insights. I should have it done in under an hour or so.
 
icy404 updated VLC Now Playing Monitor - Metadata Display with a new update entry:

Update: v1.3.2 - Critical Fixes for Windows Playlist Tracking (the last update for this year)! :(

Hey there, thanks to @dr0nk for the detailed bug reports! I've identified and fixed two critical issues that were preventing proper playlist tracking, especially on Windows.

Before the update I want to tell to whoever reads this, Happy New Years 2025
View attachment 117489May you have a better and more prosperous new year, and hopefully good health for you and your loved ones. This year is been a bit of a journey for me (I know right? this guy is...

Read the rest of this update entry...
 
Back
Top