Playlist Maximum Size

  • 8 December 2017
  • 4 replies
  • 456 views

Have a few play lists on my WD MyCloud NAS. I have 15 playlists in total that all work except my largest (8792 songs) that will not open in the Apple IOS App or the Microsoft Program. Does anyone know the song limit for m3u play lists?

4 replies

I have this problem too. I would love for them to fix it. It ruins my Sonos experience. When I got my first sonos many years ago, I did not have an issue with the size of my playlists. Now there are issues and the playlists won't fully queue or save. I have a total of 19k songs and trying to add one M3U playlist from my NAW of around 8k songs. Right now it's the only playlist on my sonos and it either will not load/save or will get truncated at around 2500 tracks. If I try to import playlists under 2k songs, I don't have a problem.
This boils down to the available amount of memory on the speakers to deal with the various operations that occur with a playlist.

Sonos is somewhat restricted in some ways that they continue to support their earliest devices, call ZonePlayers of various numbers. At the time these devices were designed and manufactured, I would suspect that memory was fairly expensive to purchase. I would assume they took a choice to satisfy the 99th percentile of users, but not overspend to reach that last 1%. Probably a wise business decision, but presents minor concerns at a later point in time.

One potential immediately available solution is to look at the Plex integration, which resolves this, but requires a bit of setup on your part. Others recommend using playlists generated on an external site like Apple Music or Google, and importing them, but you still wouldn’t be able to modify them within Sonos’ controller.

I have this issue as well. I have a playlist that I can modify, but can’t save.

Caveat....I just live with this issue, and haven’t made a lot of effort to deal with it. There are others here who might have more useful information for you.
Actually this probably isn't a memory limitation. A queue can contain tens of thousands of tracks. It's more likely to be a timeout problem when loading a large M3U playlist. Sonos allows 15 seconds for the operation.

Typically it puts up an error message of some kind -- such as a 1002 timeout -- and truncates the list. A faster network and/or more responsive network storage can help, otherwise the obvious workaround is to break large playlists into smaller ones.
My system won't load playlists over 1000 songs. I have many playlists (generated by Mediamonkey) that are longer than that. I use a vbs script to make sub-lists from the big ones, of 999 songs max each. So, FiveStarRock.m3u gets FiveStarRock1.m3u, FiveStarRock2.m3u, FiveStarRock3.m3u etc. Each sublist is way more than long enough to play for hours in the mood I desire.

The script I adapted from something I found online. I do need to manually edit it for the correct filename for each master playlist, then run it in a windows command prompt.

code:
Option Explicit

Private Const INPUT_TEXT_FILE = "G:\Playlists\Shared Playlists MM\4StarWorkout.m3u"
Private Const REPEAT_HEADER_ROW = True
Private Const LINES_PER_PART = 1998

Dim oFileSystem, oInputFile, oOutputFile, iOutputFile, iLineCounter, sHeaderLine, sLine, sFileExt, sStart

sStart = Now()

sFileExt = Right(INPUT_TEXT_FILE,Len(INPUT_TEXT_FILE)-InstrRev(INPUT_TEXT_FILE,".")+1)
iLineCounter = 0
iOutputFile = 1

Set oFileSystem = CreateObject("Scripting.FileSystemObject")
Set oInputFile = oFileSystem.OpenTextFile(INPUT_TEXT_FILE, 1, False)
Set oOutputFile = oFileSystem.OpenTextFile(Replace(INPUT_TEXT_FILE, sFileExt, "_" & iOutputFile & sFileExt), 2, True)

If REPEAT_HEADER_ROW Then
iLineCounter = 1
sHeaderLine = oInputFile.ReadLine()
Call oOutputFile.WriteLine(sHeaderLine)
End If

Do While Not oInputFile.AtEndOfStream
sLine = oInputFile.ReadLine()
Call oOutputFile.WriteLine(sLine)
iLineCounter = iLineCounter + 1
If iLineCounter Mod LINES_PER_PART = 0 Then
iOutputFile = iOutputFile + 1
Call oOutputFile.Close()
Set oOutputFile = oFileSystem.OpenTextFile(Replace(INPUT_TEXT_FILE, sFileExt, "_" & iOutputFile & sFileExt), 2, True)
If REPEAT_HEADER_ROW Then
Call oOutputFile.WriteLine(sHeaderLine)
End If
End If
Loop

Call oInputFile.Close()
Call oOutputFile.Close()
Set oFileSystem = Nothing

Call MsgBox("Done" & vbCrLf & "Lines Processed:" & iLineCounter & vbCrLf & "Part Files: " & iOutputFile & vbCrLf & "Start Time: " & sStart & vbCrLf & "Finish Time: " & Now())

Reply