In Channels DVR, users have the ability to add "Stream Links" and "Stream Files" as local content. They can also integrate additional custom stations by integrating streaming m3u playlists. While these tools are powerful, they have limitations that often require a fair bit of maintenance. But what if we could make the whole process a little... easier?
NOTE: Some of the visuals seen in the videos and in the screen shots below may be out of date as updates to format and functionality have been applied to the program.
Stream Links/Files appear as normal Movies, TV Shows, and Videos next to recorded and other content. While Stream Files act like regular local media and directly play in the Channels app or admin web page, Stream Links do not. Instead, clicking on one of these launches the appropriate app or web page and plays the content there. In order to do either, the process consists of creating .strmlnk
or .strm
files, putting them in the appropriate location, and running updates in the Channels DVR admin interface to get the content to appear. As can be imagined, the activity around creation and maintenance is incredibly manual and cumbersome.
Enter Stream Link/Files Manager!
SLM is a background service that sets up a web-based graphical user interface (GUI) for interaction. In the GUI, users can search for any Movie or TV Show and bookmark it. If it cannot be found, manual additions are allowed. Assuming a program is found, for "Stream Links", the software will parse through a user-derived list of Streaming Services (i.e., Disney+, Hulu, Netflix, Hoopla, Kanopy, etc...) in priority order—including setting a preferred service for a particular Movie or Episode as an overarching setting—in order to determine the appropriate link. There is also the ability to input user-derived links, especially when dealing with "Stream Files". After this, the necessary folders and files will be created, along with completing all other administrative tasks. Should a bookmark move from one Streaming Service to another or the user does a manual adjustment, SLM will automatically update everywhere that is required. But this is just the beginning of its capabilities! To learn more, watch the video here:
There are a lot of fantastic methods for integrating custom stations into Channels DVR, especially from FAST and similar providers like Pluto, Plex, Tubi, Samsung TV+, ESPN+, NFL+, and plenty more! The problem is, they require a fair bit of maintenance. For instance, there are whole threads and tools dedicated just to keeping track of which stations have been added and removed. And that doesn't even get into the redundancy of when each of these services have the same stations, but you have to decide which one you want to put in your Channel Collection before it inevitably disappears without you knowing it and not realizing you need to put a replacement in its spot.
Enter Playlist Manager, a custom add-on for Stream Link (+Files +Playlists) Manager for Channels!
From a high-level perspective, PLM works on the same premise as SLM. The idea is that there is some piece of content that can come from multiple sources that you have legal access to and it will "assign" which one to use based upon a priority that you set. With SLM, it takes a movie or an episode of a TV show and parses through all the streaming services you have set, sees if it is there, and assigns the appropriate Stream Link. Similarly, with PLM, it takes a "parent" station that you define and parses through all the playlists that you have set, sees if there is a matching "child" station, and assigns the appropriate info to m3u and EPG files that can be integrated into Channels DVR or any other similar tool. Still, this is just the beginning of its capabilities!
To see a short demonstration, watch the video here:
NOTE: This is a BETA release, which means there may be bugs, issues, and enhancements to deal with. Feedback is greatly appreciated to address these, and each will be dealt with accordingly. Nevertheless, please be forewarned that some fixes may require a manual intervention on your part to keep using this tool after an update.
Image (edited) courtesy of SpaceX, CC0, via Wikimedia Commons.
There are several methods to install Stream Link (+Files + Playlists) Manager for Channels and only one should be followed. While Docker is the preferred route for those who have it as it is the most controlled path, if you are not comfortable with Docker or are having issues, you can do a straight self-deployment in Windows or Linux, or use Python in any OS type. For those unfamiliar with Docker, you can easily install Docker Desktop as a stand-alone application. If you are installing Docker in Windows, please set up Windows Subsystem for Linux (WSL) first by following these directions. Channels DVR users who have deployed OliveTin for Channels and/or Project One-Click can use those, as well, to simplify the process. Just follow one of these paths throughout the entire installation, doing the step-by-step actions exactly as described.
You can also follow along in the video here:
As a general note, it does not matter "where" Stream Link (+Files +Playlists) Manager for Channels is installed; it could even be placed in the Channels DVR directory. The only requirements are that it must be on a machine and in a location that has directory access to the Channels DVR directory and be able to see the Channels DVR Administrative webpage.
If you are not using OliveTin/Project One-Click, it is recommended to install via Stack using Portainer (Docker Desktop | Docker Standalone). Otherwise, you can use the single command line method as shown below.
services:
slm:
image: ghcr.io/babsonnexus/stream-link-manager-for-channels:${TAG:-latest}
container_name: slm
ports:
- "${SLM_PORT:-5000}:5000"
volumes:
- ${SLM_HOST_FOLDER:-slm_files}:/app/program_files
- ${CHANNELS_FOLDER}:/app/channels_folder
environment:
- TZ=${TIMEZONE:-UTC}
restart: unless-stopped
volumes:
slm_files:
Environment variables are included, some required, some optional.
TAG | OPTIONAL | Which version of the program you want. The default is "latest" if you do not add.
SLM_PORT | OPTIONAL | The port you want to access the program from in the web browser. The default is "5000" if you do not add.
CHANNELS_FOLDER | REQUIRED | The path to your Channels DVR parent directory (see details in Startup below), i.e., /usr/lib/channels-dvr
. You could optionally put in any parent path, so long as the Channels DVR path is accessible somewhere inside. Note that spaces are fine and you do not have to enclose the path in quotes. In Windows, your slashes should go the opposite of the normal way, i.e., C:/Files/Media/Channels DVR
. In MacOS, be sure to include your /Volumes
first, i.e., /Volumes/external-hdd/Channels DVR
. Be careful not to put extra characters as your system may then create that directory anyway. In other words, there will be no error as the directory exists, but it is not set to where you want it to be.
SLM_HOST_FOLDER | OPTIONAL | The path on your local host machine where you would like the program files for Stream Link (+Files +Playlists) Manager for Channels to reside. As will be discussed in more detail later, these are the files that the application uses to manage the entire solution. The software itself can be replaced at any time, but these files have all of your settings, bookmarks, etc.... As such, you may desire to have them available on your local machine that is hosting Docker in order to back them up. If you do not add this, it will be set to slm_files
inside the Volumes
area of Docker Desktop itself.
TIMEZONE | OPTIONAL | The timezone you want to use. To know what to input, go here, find your timezone, make sure it is a "Canonical" Type, and use the "TZ identifier". The default is "UTC" if you do not add. Please keep this in mind when using the scheduler function.
Follow the directions above for SLM_PORT in place of [YOUR_PORT_HERE]
(except now it is REQUIRED), CHANNELS_FOLDER in place of [PATH_TO_CHANNELS_FOLDER]
, SLM_HOST_FOLDER in place of [PATH_TO_HOST_SLM_FOLDER]
(except now it is required, too, but you can put in the default value of slm_files
), and TIMEZONE in place of [TIMEZONE]
. Do not leave the [
and ]
when putting in your values.
docker run -d --restart=unless-stopped --name slm -p [YOUR_PORT_HERE]:5000 -v [PATH_TO_HOST_SLM_FOLDER]:/app/program_files -v "[PATH_TO_CHANNELS_FOLDER]":/app/channels_folder -e TZ="[TIMEZONE]" ghcr.io/babsonnexus/stream-link-manager-for-channels:latest
docker run -d --restart=unless-stopped --name slm --network=host -e SLM_PORT=[YOUR_PORT_HERE] -v [PATH_TO_HOST_SLM_FOLDER]:/app/program_files -v "[PATH_TO_CHANNELS_FOLDER]":/app/channels_folder -e TZ="[TIMEZONE]" ghcr.io/babsonnexus/stream-link-manager-for-channels:latest
docker run -d --restart=unless-stopped --name slm -p 7900:5000 -v "C:/Temp/SLM Host Test":/app/program_files -v "C:/Files/Media/Channels DVR":/app/channels_folder -e TZ="America/New_York" ghcr.io/babsonnexus/stream-link-manager-for-channels:latest
docker run -d --restart=unless-stopped --name slm --network=host -e SLM_PORT=7900 -v slm_files:/app/program_files -v "/somewhere/channels_dvr":/app/channels_folder -e TZ="America/New_York" ghcr.io/babsonnexus/stream-link-manager-for-channels:latest
Command Prompt
, navigate to that directory, and enter the following command:slm.bat install
If using PowerShell, type in:
.\slm.bat install
slm.bat port
If using PowerShell, type in:
.\slm.bat port
Note that this will also open the port in the Windows firewall as a safety measure. Even if you want the default port of 5000, this is recommended to be run if you want to access the program on another machine.
During the process, you may receive a popup asking for permission to run. Accept and continue.
Additionally, in the Windows Firewall rules:
Command Prompt
and opening a new one. In the new Command Prompt
, you can confirm that that the port variable is being read correctly by typing:echo %SLM_PORT%
If using PowerShell, type in:
$env:SLM_PORT
You can also do so by opening a terminal, navigating to that directory, and entering the following command:
wget -q -O "slm.sh" 'https://raw.githubusercontent.com/babsonnexus/stream-link-manager-for-channels/main/executables/slm.sh'
slm.sh
file:chmod +x "slm.sh"
./slm.sh install
... a whole lot of lines related to installing requirements and building the executable...
./slm.sh port
Note that this will also open the port in the firewall as a safety measure. Even if you want the default port of 5000, this is recommended to be run if you want to access the program on another machine.
source ~/.bashrc
printenv SLM_PORT
Using Python directly is not recommended, however it is available as an option. As this is highly technical, only limited support is provided. It is expected that you are fairly familiar with Python and have pip installed.
Download the slm_python.zip file and place it in the final destination folder.
Navigate to that directory and extract the contents. Make sure you have not created another subdirectory. When complete, remove the slm_python.zip
. It should now look something like this:
pip install -r requirements.txt
pyinstaller --noconfirm --onedir --console --add-data "requirements.txt;." --add-data "static;static/" --add-data "templates;templates/" "slm.py"
Or...
pyinstaller --noconfirm --onedir --console --add-data "requirements.txt:." --add-data "static:static/" --add-data "templates:templates/" "slm.py"
Or...
pyinstaller --noconfirm --onedir --console --add-data="requirements.txt:." --add-data="static:static/" --add-data="templates:templates/" "slm.py"
build
and slm.spec
.dist
contains the entire executable program. You can leave it in its current location, rename it, and/or move it somewhere else.SLM_PORT
(case sensitive) and giving it a value of the port you want to use. If you don't, the program will run on port 5000. You may also need to open the port up to bypass firewalls or other such settings.As with any program, there may be a need to update the code for stability, bug fixes, or general upgades. When a new version becomes available, you can easily upgrade using the directions below. To know when a new version is released, set up a watch on this Github repo.
This way, you'll get an email whenever a new version is released, plus you can see exactly what has changed.
During an upgrade, the program_files
directory is protected.
This is the most important directory as it contains all the settings, bookmarks, logs, backups, and other crucial information. As a best-practice, you may want to make a manual backup of this folder in case anything goes wrong during an upgrade. With this directory, even a fresh install can be restored with your details.
program_files
will be protected, so there should be no concerns about losing your settings and critical files.If you are using Portainer
, you can use the Recreate
button:
When the option comes up, make sure "Re-pull image" is selected.
It then rebuilds the Image and the Container with all the original command lines. Remember to delete the old, unused Image afterwards.
Command Prompt
, navigate to your Stream Link (+Files +Playlists) Manager for Channels directory and type in the following command:slm.bat upgrade
If using PowerShell, type in:
.\slm.bat upgrade
slm.exe
was terminated or not running, allowing the upgrade to take place. After the upgrade, you will need to restart the program manually or with a reboot. See Startup below../slm.sh upgrade
... a whole lot of lines related to installing requirements and building the executable...
/slm
application was terminated or not running, allowing the upgrade to take place. After the upgrade, you will need to restart the program manually or with a reboot. See Startup below.Make sure Stream Link (+Files +Playlists) Manager for Channels is closed and is not running in the background.
Copy the program_files
directory under _internal
to a safe location.
Completely delete all the files and subfolders.
Follow the directions for installation and replace the entire file content that were deleted in the prior step. If you have built an executable, you will have to redo those steps, as well.
Move the program_files
directory you saved earlier back under the _internal
directory.
Restart the program and everything should work the same as before.
Since Stream Link (+Files +Playlists) Manager for Channels is designed to run as a service that you access through a webpage, it should be set up to launch at system startup. There may also be reasons to start manually, like after initial installation or an upgrade.
Command Prompt
, navigate to your Stream Link (+Files +Playlists) Manager for Channels directory and type in the following command:slm.bat startup
If using PowerShell, type in:
.\slm.bat startup
Task Scheduler
, you should now see a task called "Stream Link (+Files +Playlists) Manager for Channels":Task Scheduler
slm.bat
fileCommand Prompt
, typing in slm.bat
Task Manager
you will see a slm.exe
running in the background:./slm.sh startup
ls /etc/init.d # For Debian/Ubuntu/Mint
ls /etc/systemd/system # For RedHat/CentOS/Fedora/Arch/Manjaro/OpenSUSE
ls /usr/local/etc/rc.d # For Synology
You should see a file named slm_startup.sh
:
./slm.sh
ps aux
You should see ./slm
running in the background. If you want to only look for that process, type:
ps aux | grep [s]lm
In either case, you should see something similar to this:
You have the option for how you want to handle this. Since Stream Link (+Files +Playlists) Manager for Channels is designed to be a background service, just running the program like this...
python slm.py
... or with the executable you generated will result in a window sitting there like this:
If that does not bother you, you should be fine. However, it is recommended to build an automation script that will start the process in the background and make it start upon login/bootup. For instance, if you wanted to do this in MacOS, you would:
slm.app
in the directory you created earlier, open it in Script Editor, and enter the following AppleScript code:do shell script "nohup /usr/local/bin/python3 /[YOUR_SLM_DIRECTORY]/slm.py &> /dev/null &"
Replace [YOUR_SLM_DIRECTORY]
with the path you created earlier and save the file.
slm.app
to run at startup:System Preferences
> Users & Groups
.Login Items
tab.+
button and add the slm.app
you created.While the Initialization process attempts to find all the necessary values—even noting when it has to use a substitute value—do not worry if any of the searches faulter. There are various levels of safety checks and automatic timeouts that will move the process along. More so, you can always make adjustments in the Settings
later. To be clear, any "error" or the like shown are not failures and are expected behavior. Everything directly related to Stream Link (+Files +Playlists) Manager for Channels is managed from the Settings
area as discussed below.
Also worth highlighting: if you are using Docker, you may still see it says it starts on port 5000. There are no concerns about this as it is being mapped correctly so long as you gave a port value.
https://localhost:[YOUR_PORT_HERE]
i.e.,
Default...
https://localhost:5000
Example Mapped...
https://localhost:7900
If you are on a different machine than where Stream Link (+Files +Playlists) Manager for Channels is installed, you will need to use the name or IP Address of that machine in place of localhost
and make sure the port is open (as discussed in the installation directions) to be accessed.
With the program running, there are a number of activities you should do before getting underway. Also, as a personal preference, if you click on the palette button...
... you can change to "Dark Mode":
Aside from the visuals, everything will function exactly the same.
Settings
area. You should see something like this:Note for instance the difference between a US and GB list:
Click Save
after you have selected your country, preferred language, default number of programs to come up when you search, and if you want to hide previously bookmarked programs from search. Please be advised that only certain country/language combinations are valid. A non-exhaustive list is available here.
Remember to click Save
when complete.
Be sure to keep this up-to-date as you subscribe, unsubscribe, and change preferences. This list is what determines which Stream Links you will get.
Out-of-the-box, several are included that are all functional as well as informative:
Changing hulu.com/watch
to disneyplus.com/play
allows Hulu content to play within in the Disney+ app. This is off by default, but can be activated by clicking the checkbox and saving. It should be noted that not all Hulu content is available within Disney+. To work around this, Stream Link Overrides
may be used as discussed below.
All Netflix Movies and Shows come from JustWatch with a link that contains netflix.com/title
, which goes to the landing page of that content. However, if you change title
to watch
, it will play automatically. However, that only works for Movies, hence why that is in the dropdown selection For Object Type
. This is on be default.
While JustWatch does provide Amazon links directly for Movies and Shows, the links that are given do not work in all situations, notably on Apple TV and the web. To get around this, the links can be converted with the string watch.amazon.com/detail?gti=
being replaced with www.amazon.com/gp/video/detail/
. This is on by default.
At the time of this program's launch, Vudu
had changed its name to Fandango at Home
and created a newly named app, but did not fix the app to accept Vudu
links that it was still using. Since deep linking directly is not possible, this mapping says to replace any link that contains vudu.com
in its entirety with a link that will just launch their app generically. This is off by default.
It is not required to set these immediately; they can be added, deleted, or modified at any time.
During Initialization, an attempt was made at determining the correct link. However, that may not have succeeded or the selection may not be the case for you. Modify if necessary and click the Test
button to confirm that Stream Link (+Files +Playlists) Manager for Channels can attach to Channels DVR.
You also have the option to let Stream Link (+Files +Playlists) Manager for Channels attempt to determine the link again by clicking the Scan
button:
In Docker, you may not be able to see local DNS. If that is the case, you can use this:
http://host.docker.internal:8089
You can navigate up the directory structure or manually type in a path to get where you want.
When you get to where you want, use the Select
button to set that directory.
If you are using Docker, you should literally have a directory named "channels_folder" right underneath /app
.
This is the folder you set during installation and should be what you are using. It will look something like this:
Do note that you must use the parent Channels DVR directory, not the Imports
or anything similar. If you do not set this correctly or do not have access from the machine you installed Stream Link (+Files +Playlists) Manager for Channels on, then you will not be able to generate Stream Links that Channels DVR can see, nor be able to get updates from Channels DVR when programs are watched and deleted.
Advanced / Experimental
, you will find some tools to manage the program and your results.Run 'Prune' function in Channels
is on by default, which means that the program will initiate a delete in Channels DVR for any missing personal media, not just Stream Links. You may decide that you do not want this to run automatically.
Scheduler
.In the End-to-End Process
, several steps are taken. These can all be seen and initiated manually in the Run Processes
area.
These tasks are:
While these can all be done manually, it is recommended to set a schedule to run automatically at some point during the day.
Note that this can take a significant amount of time, depending upon the number of Movies and Episodes that you have bookmarked. Also, the clock shown should match your system and locale settings. After a process is complete, you can see pertinent notifications in the Home
area (newest on top), such as if there are changes to Streaming Services or new episodes were added.
If you are looking for additional detail as to what transpired, the Logs
area contains more information.
Unlike the notifications and live process trackers, the log is in order of action.
Add Programs
.Here, you can search for a program you want to bookmark.
The default order is by best-match / popularity, but you can also choose to have the results re-display in alphabetical order and/or filter only for Movies or Shows.
Another option for searching is to see what has been New & Updated
on the Streaming Services you selected in the Settings
above. This will give you a list of Movies and Shows that have been added or updated on those services.
The list is limited to a single day and 100 entries, displayed alphabetically. Clicking Today
will give you that list for this day. On the other hand, you can select any date and click New & Updated
to get the Movies and Shows from that day.
No matter the search method, clicking on a Movie will get you something like this:
Notice that the Search
and other line buttons are no longer available. You must finish this process by selecting Done
or Generate Stream Links
. If you do not generate Stream Links at the time of creation, they will be created (if valid) during the next run of the process as detailed above. Although it is not necessary, if you review the logs, you can generally see a successfully generated Stream Link appear as so:
10 Buildings That Changed America (2013) assigned Stream Link: https://www.kanopy.com/product/10-buildings-changed-america
On the other hand, if a Stream Link could not be generated, a reason will be given:
12 Angry Men (1957) assigned Stream Link: None due to 'Watched' status
Amélie (2001) assigned Stream Link: None due to not found on your selected streaming services
In order for a Stream Link to be generated, the Movie or Episode must first have an Unwatched
status, and then be available on one of the Streaming Services that were selected during Settings
. The Watched / Unwatched
status applies even if you put in a link of your own to override whatever may or may not be generated. This completely optional feature is not required, so leave it blank if you do not want to put anything there.
Once an add has been complete, you can search again. If we select a Show this time, it will have slightly different options:
Per episode, season, or for the entire show (or a Movie if bookmarking that), you can uncheck to mark it as Watched
. It is important to note that in SLM, the term Watched
does not mean that you have ever seen the Episode or Movie. Marking something as Watched
means that you are finished with it and do not want to generate a Stream Link/File for it. It is the equivalent of deleting an Episode or Movie from within Channels DVR. As discussed above, during the Import Updates from Channels
process, this program checks to see if a generated Stream Link/File file has been deleted. If it has been, it will be marked as Watched
and will no longer generate a Stream Link/File in the future. This is why it is equally important for users to not modify or delete the files that are generated by this program. Doing so could make Movies and Shows become erroneously marked as Watched
. Only this program should modify anything in the created slm
directories.
Aside from these considerations, per episode, you have the same Stream Link Override
option as a Movie, as well as the ability to put a prefix on the generated file. For instance, by default, a file name will be S01E01.strmlnk
. However, as an example, you may want to designate that this is a subtitled episode and that dubbed episodes might become available in the future. For this, a prefix of (SUB)
will result in a file name of (SUB) S01E01.strmlnk
. More so, there is a selection called Special Action
that can also be propagated down to the individual episodes from the entire show or per season perspective:
In most cases, users will leave this as None
, but there are situations when it will necessary to take advantage of these functions. For instance, if your Movie or Show is available on multiple Streaming Services but you prefer it to be on one with a lower priority, you can make that assignment. Another situation might be that you have a link to the media directly and, thus, would want to create a "Stream File" instead of "Stream Link". In this case, you would select Make STRM
.
While searching, you may come across programs you are not interested in. In these cases, you can always hit the Hide
button to the right of the program so that it never appears again.
For Shows in particular, it may be an older title that is no longer putting out episodes. In these cases, it is not worth the time and resources to have SLM continue to search for new episodes. As such, there is the ability under Bookmark Action
to Disable Get New Episodes
. Note that this is also where the "Hide" option is, the same as just shown from the button above. In most cases, though, this too will be left as None
.
Sometimes when searching, you still might not be able to find the Movie or Show you are looking for. While uncommon (see Troubleshooting / FAQ
), it may happen, especially for rare or foreign content. In these cases, you can always create a manual bookmark.
While Movies are relatively the same as with a search, Shows provide a different setup when clicking Add Manual
:
Note that you will only be allowed to continue once you've correctly put in the number of seasons and episodes per season.
Here you will see the episodes created as designed by the user. It should be highlighted that manual entries require a Stream Link Override
to be entered, otherwise they will not generate a Stream Link file.
Modify Programs
area to make any update as desired.For instance, here is a Show that was created using search, but the search will only link to the subtitled episodes. In order to get dubbed episodes, a number of inputs are needed:
While you can delete an episode, if it is a searched bookmark and not a manual one, the episode will just get re-added as "unwatched". Aside from deleting episodes, there is also the ability to add additional episodes:
This is also a good area just to check on the status of Movies and Shows.
Note that the Current Stream Link
field will always be greyed out and unable to be modified. If it is blank, this is an indication that no Stream Link was generated. If you want to change the Stream Link, give it one when none was generated, or input something for a Stream File, that is what the Stream Link Override
field is for. After regenerating Stream Links/Files through any method discussed thus far or below, you should see something like this:
The Current Stream Link
field having the skipped_for_override
or strm_must_use_override
value lets you know a Stream Link/File file was creating using the Stream Link Override
value that was input.
Movies are fairly similar to Shows in the options, including updating the Title
and Release Year
itself if the data is incorrect or not how you want it.
Programs that were previously hidden are not show in the list by default. However, you can select the Show Hidden
button and they will then be in the list.
At this point, you can edit them and make them not hidden by changing their Bookmark Status
to "None".
Settings
and scroll down to Advanced / Experimental
.Use Playlist Manager
and click save. When you do so, a lot of things will become available both in the front-end and the back-end. Most notably, you will now see Playlists (BETA)
in the navigation pane.Playlists (BETA)
area, you will see something like this:Manage Playlists
. Scrolling towards the bottom, you should see the Enter Playlists
section, appearing somewhat like this:Enter Playlists
area above.Prioritize Playlists
section. In the end, PLM will parse through each of these sources in priority order (excluding inactive playlists) to find the matches for individual stations, and this sequence will determine which one to use. For instance, CBS News is available on many providers, but based upon the order shown below, in this example it will take the one from Channels (TVE) over the ones on Plex, Pluto, etc...Main Page
, there is a button called Update Station List
. Pressing this will then read through each of the m3u playlists and gather all the stations for your assignment.As shown at the top, PLM will give you the status for each of the stations it finds in the provided m3u(s). "Unassigned" stations are ones that need to be given a "Parent". The Parents themselves are a grouping of the stations that came from the m3u sources.
Unassigned Stations
and clicking the Expand / Collapse
button will show you all the stations (in alphabetical order) that are looking to have a Parent assignment. The only way a station becomes available is if it has been assigned to a Parent. There is no penalty for not assigning a station aside from not being able to see what's new.Make Parent
. Clicking this will create a new Parent that has the same name as that station and assigns that station as a "Child" to that "Parent". For instance, if we click Make Parent
for 00s Replay, we will end up with a new Parent like this in the Parent Stations
area:Make Parent
, the second one will now have that new Parent as an option for selection.Set Parent
button to save this selection. The same activity can also be done with the "Ignore" option. This is like the "Hidden" choice in Channels to make a station not available in the final product.Save All
button to set each of them. This includes the "Make Parent" option so you can push multiple stations into new Parents all at once.Modify Assigned Stations
section:Main Page
updates to let you know the status of your stations. "Assigned to Parent" means that a Parent has at least one child and will create a unique station. "Redundant" means that a Parent has additional children (i.e., repeating/same stations) and that they are available if the higher priority option goes away for any reason.Update m3u(s) and XML EPG(s)
. This is the process that will parse through all of these parent-child assignments and create the playlists and guide links that you will load into Channels DVR or other tools. It should be noted that when PLM processes a station, if a certain field does not have a value in the higher priority playlist, it will take that field from a lower priority one. For instance, if your preferred playlist does not have a "description", but a lower priority one does, it will get that "description" and make it available in the final output.Settings
area under Advanced / Experimental
, at the spot where you turned on PLM, there are two additional inputs. One is the station number you would like to start at, with a default of 10000
. Each new Parent that is added will increase this value by one.The other choice is the Max Stations per m3u
, with a default of 750
. This is the number of stations that will be in an m3u file before it splits into a new file, 750 being the maximum Channels DVR allows at the time of this writing. This can be set to any positive integer. It should be noted the XML EPG data is split by the same stations in the end-result m3u(s).
Further up under the Scheduler
section are two more things for you to set. The first is the equivalent of the Update Station List
button. Turning this on will run a process once per day at the time you set to update the station list, thus giving you an automated way to handle changes and get new selections in the Unassigned Stations
section.
Notifications
pane in the Home
area. You will get info on "Added", "Removed", and "Modified" stations, the latter meaning there has been a change in at least one field of provided data.02:01 PM
and select Every 6 hours
, it will run at 02:01 PM
, 08:01 PM
, 02:01 AM
, and 08:01 AM
.Logs
area.In order to streamline answers to some questions you may have, certain reports and queries have been made available in the same named area:
To navigate the data, there are several functions such as number of results per page...
... number of entries being show out of how many...
... page navigation between those entries...
... and the ability to filter both by a general search...
... and on individual columns:
Aside from the function covered above, there is not much else a user needs to do. There is the Files
area for viewing the backend data that fuels all of the above, as well as exporting those files for backup and migration purposes.
You can also completely replace those files, though it is not recommended to do so unless you are specifically directed.
Lastly, there is the About
area to see the latest version information, credits, and other information.
First, make sure you have selected the correct country code and saved. If that is already done, please make a request for the missing service by filling out this form. Note that JustWatch is responsible for the availability of Streaming Services and SLM is just a downstream consumer.
JustWatch is responsible for the list of Streaming Services and their definitions, as such there is no specific guidance from the perspective of this program. However, it is most likely a question of content. For instance, "Apple TV" is Apple's generic name for all streaming content available for purchase and/or rent, just as "Amazon Video" is for Amazon. Each have exclusive content available for paying subscribers, hence "Apple TV Plus" and "Amazon Prime Video". Notably, in these highlighted examples, if you make your settings to have either the basic tier or the subscription tier as the top priority, the Stream Links that are generated will be exactly the same, therefore they will launch the same apps on your device. Due to this, if you have access to the subscription tier, then it may be redundant to have both. Nevertheless, that might not be the case for these or other services with multiple tiers and/or separate apps.
For example, say your Streaming Services were this:
Then, if you add About Schmidt
, it will end up with an Amazon link:
But if you do this:
You will end up with Apple links:
Yet, if you do this:
You end up with no Stream Link:
It is all a function of what services you have selected and the data on JustWatch. As such, it is up to you to manage your services and find the best combination that works for your particular use case.
While new Streaming Services are brought online and shut down on a regular basis, they also sometimes just change names. Any name change will result in the "old name" being removed and the "new name" being added. If this happens to you, all you need to do is return to the Setttings
area, add the "new name", and prioritize it. The next time you generate your Stream Links, any missing Movies and Shows that were removed will be recreated. Remember, there is a difference between "bookmarking" a Movie or Show and having Stream Links for it.
JustWatch is the provider for all of the information. If there are any issues, please let them know by filling out this form or emailing them at feedback@justwatch.com. It is unlikely that they will make an update in a timely manner as they are also dependent upon upstream data, so please take advantage of the manual and override capabilities built into the program, or using mapping if possible.
SLM is completely dependent upon Movie and Show data from the JustWatch website, which in turn is a consumer of other upstream data. There may be a gap in any of those steps along the way, especially for non-domestic content and independent studios. Sometimes, though, you may even be able to see the content on JustWatch but are unable to find it in this program. There appears to be a small gap of time (usually one or two days) for some content to be completely discoverable by the tools that this program uses.
Go to the JustWatch website and search for it on there. A Movie or Show might be available, but still be missing links to the appropriate streaming service. If it is brand new, it might also take a day or two until they update their data, which is what SLM uses. Should the links be missing on JustWatch, submit a request by filling out this form or sending an e-mail to feedback@justwatch.com. If you can confirm JustWatch has a working link on there and it still won't show up in this program, please submit an issue request with as much detail as possible. There may be an edge case for how that particular Movie or Show is stored on JustWatch that this software has not accounted for.
Generating the Stream Link(s) is not enough; you need to update personal media from within Channels so that it appears inside that interface. There are several ways to deal with this. First and foremost, within this software, under Run Processes
, is a button that will do all the necessary steps:
However, it is worth noting that there is a setting in Channels for how often it scans for personal media:
As such, you could just wait for that to run if you have it set for a particular interval.
There are two main potential situations. The most likely one is that the Streaming Service's app itself is written incorrectly and cannot accept "deep links". Without this, nothing can be done. You can request the app developers to update their program. In a similar vein, they may have programmed it to accept "deep links", but only in a certain way. If there is a systematic method to do a replacement in the generated link, then it could be added to SLM in the Stream Link Mappings
setting. For instance, JustWatch provides a link for Amazon content like watch.amazon.com/detail?gti=
and, by default, this program replaces it with www.amazon.com/gp/video/detail/
. If this is the case, please add a new mapping. Further, do let the community know about your mapping and, if it is useful for many people, it will be added to the default list that comes with a new installation.
There is also the possibility that the link cleaning and replacement process that this program is doing is overzealous. Please also put in a request for those situations and examples of working Stream Links.
There are two components that relate to this. First is the quality of the links provided by JustWatch. For instance, with Disney+, JustWatch only has links to generic landing pages and does not have individual episode information like it has for Hulu. There is nothing that can be done aside from requesting that JustWatch updates their data.
The second situation is that even though JustWatch provides links to more generic areas, there may be systematic ways to correct them. As an example, JustWatch provides a link to a movie on Netflix that looks like this: http://www.netflix.com/title/81078554
. However, if you replace title
with watch
, it will play automatically. This being a “systematic way” to do a replace, it was included in the Stream Link Mappings
settings as highlighted above. If you have more examples that could be accomplished this way, please let the community know. If they are deemed benefitial for other users, they will be added to the default list that comes with a new installation.
There is no "right way" to approach this; PLM is a tool to use as you please, with thousands of possibilities on what you might want to do. While one user might desire to have PLM playlists be the only sources in Channels, others will not choose to go down that path. For instance, there is no great replacement for how Channels handles TVE (unless you have Frndly or use ADBTuner or CC4C for every station), so a user who wants those stations would have to keep that as a source no matter what, just at a lower priority so it is not used by default.
In the end, it's totally up to the end user how far they want to take this. Give it a try, play around, and see what happens. There's no danger in just starting PLM up!
There are too many potential sources to answer that question. Most available m3u playlists can be imported directly, so that is one-for-one. For something like the HDHR, you could do this:
http://hdhomerun.local/lineup.m3u
or...
http://[IP_ADDRESS_OF_HDHR]/lineup.m3u
However, if you do that, you must set your Gracenote ID
at the Parent level correctly. Similarly, you could use tools like ADBTuner or Chrome Capture for Channels for getting more "traditional" cable/TVE stations into Channels. PLM will accept playlists for both of those and plenty of other tools discussed elsewhere.
WARNING: m3u URL not found for '[MY_M3U_OR_XML]'. Skipping...
First, make sure your link is http
instead of https
as that latter may not be able to be read. Next, there may be an issue with how the program is trying to talk to certain location, especially if that location is in-network and/or you are using Docker; most especially if you are going container-to-container. In either case, the potential solutions are, instead of http://localhost:[PORT]
, try:
http://[COMPUTER_NAME].local:[PORT]
http://[IP_ADDRESS]:[PORT]
http://host.docker.internal:[PORT]
Also, you can test these in the Channels URL
section of Settings
, making sure you get a positive response. Just be sure not to save!
If you see a situation like this...
... the most likely culprit is the file type for the images. The Channels DVR apps require images to be either .png
or .jpg
, unlike the web which can accept about anything.
Follow the directions related to "TIMEZONE" in the installation steps above.
This block is just an indicator to let you know nothing is stuck and that things are still running in the background. For actions that last less than a couple of seconds, not enough time will pass to begin to fill it in. For anything longer, you will see information fill up to the top, but it will all clear out when the process finishes running. However, there are some issues with certain browsers like Safari where it seems incapable of displaying what is happening. Rest assured that although the background process is running as expected, you can always verify in the logs if desired.
Image (edited) courtesy of SpaceX, CC0, via Wikimedia Commons.
This project and its upkeep is the work of one person. While it is provided free of charge with no expectations of payment, tips are greatly appreciated!