[RELEASE] Stream Link/File Manager for Channels [Streaming Library Manager Extension]

THANK YOU! :love_you_gesture:

@babsonnexus when in the (Playlist BETA) tab, underneath Playlist Manager Navigation, when I go to the home settings and try to navigate up and down the page freezes and then you lose the inability to scroll up or down. Is this something that you are aware about and any plans on a fix. Thanks, Also is there a way where in the new playlist options that you have a option where it auto tells you all of the copies of a program you have and if you want to create parent and child streams based off the analysis of said files, as of right now trying to sort and rank all of these channels is a tedious task. Adding a auto function would solve this. I have created a few projects in chatgpt that does this, please consider adding enhanced functionality if that is the scope of your project, if not no spilt milk its all good. Take care just my recommendations thats all.

I'm not sure if you mean Main Page in PLM, Home, or Settings, but in all cases I cannot replicate what you are talking about. Scrolling with the scroll bar, scroll wheel, touch, page up/down, and arrows all have no issues for me. Please make sure you are on the latest version. If you are still experiencing an issue, I will need a lot more details like browser, operating system, orientation of screen, if you can click anything else, etc.... Screen shots and/or video would be much more helpful, as would any details from the logs.

There is no way for PLM to know if two stations are truly the same, even if they have the exact same name. The point is that they are all unique, and it is up to you to tell PLM if two or more stations should belong to the same Parent. Further, that is a user-controlled choice for how to use PLM. While that is my preferred method, others may want to maintain multiple copies of a station for backup purposes. That means it is up to the end-user to decide how they want to use PLM and its features.

It's a one-time activity. After you finish, you'll only have to worry about new stations. I don't see a value-add for further automation here. PLM already sorts everything alphabetically, so closely and same-named unassigned stations should be near each other, if not in a sequence.

So far, sounds out of scope, unless there is something I am not understanding in this request?

While not a new version, I have updated the Docker Compose / Portainer Stack directions so that you can use a local folder on your host machine to store SLM/PLM's "program files" locally instead of inside the Docker Volumes area:

If you already have a working Docker Container, you do not need to take any action and can continue to use it as-is without issue. If you would like to take advantage of this, I would recommend manually exporting the program_files directory and putting it where you want it to be in your local host system before proceeding.

@bnhf, please update OliveTin / Project One-Click at your earliest convenience. Thanks!

I was thinking about this the other day.

I think, in theory, if two channels are truly the same, I would think they would use the same Gracenote ID for their EPG.

For example, for the channel A&E that is available in TVE and Frndly TV, I can see that they use the same Gracenote ID:

DirecTV (TVE):

#EXTINF:-1 channel-id="6043" tvg-id="6043" tvg-chno="6043" tvg-logo="https://tmsimg.fancybits.co/assets/s51529_h3_ba.png?w=360&h=270" tvc-guide-stationid="51529" tvg-name="AETVHD" group-title="HD",AETV
http://127.0.0.1:8089/devices/TVE-DTV/channels/6043/stream.mpg?format=ts&codec=copy

tvc-guide-stationid="51529"

And Frndly TV:

#EXTINF:-1 channel-id="4000" tvg-id="4000" tvg-chno="4000" tvg-logo="https://tmsimg.fancybits.co/assets/s51529_h3_ba.png?w=360&h=270" tvc-guide-stationid="51529" tvg-name="AETVHD" group-title="HD",A&E
http://127.0.0.1:8089/devices/M3U-FrndlyTV(withEPG)/channels/4000/stream.mpg?format=ts&codec=copy

tvc-guide-stationid="51529"

Same Gracenote ID and they even have different names: "AETV" (TVE) vs. "A&E" (Frndly TV).

I'm not sure if this is a piece of data that is reliable in all cases.

Maybe PLM could make a suggestion for the parent if it detects two (or more) identical Gracenote IDs.

And maybe even provide an option: "Automatically add channels to parents with same Gracenote IDs" or something like that. :grin:

1 Like

@babsonnexus I have the same issue, my page seems to freeze sometimes as well but I think it is a double scroll issue. There are 2 scroll bars on some pages and it is really hard to navigate. If you are outside of the inner frame and are moving your scroll wheel nothing happens. You have to hover and expose the correct scroll bar and then move your wheel up and down. If its possible it would be great to just have a single frame to scroll. I attached a video to demonstrate what I am talking about.

Thanks, the video was very helpful to see.

Now, here's the thing: I cannot get rid of the inner frame. It's part of the solution for how I got all the performance improvements and filtering to work. However, I can change the size of it. Basically, I've told it to be as big as it can possibly be. So, the choices are:

  • Make inner frame horizontally smaller, keep height
  • Make inner frame vertically smaller, keep width
  • Make inner frame both vertically and horizontally smaller
  • Leave inner frame alone, it's not a big deal

0 voters

EDIT: Sorry, noticed a typo and when I corrected it, it reset the poll. Please revote if you did before!

Working on adding the new Compose to Project One-Click. After I made the changes, I deleted the SLM stack, volume and image. Spinning SLM up using the original slm_files volume name, everything started as expected.

However, I thought I'd try using /data/slm as a directory binding in place of the slm_files volume. With the binding, startup was a bit different, and contained some tracebacks:

2024-11-11 13:32:51.531176:  Beginning Initialization Process (see log for details)...

2024-11-11 13:32:51.768951:  SUCCESS: https://www.justwatch.com is accessible. Continuing...

2024-11-11 13:32:51.769222:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Search Defaults: Filter out already bookmarked'.

2024-11-11 13:32:51.769262:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: On/Off'.

2024-11-11 13:32:51.769294:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Starting station number'.

2024-11-11 13:32:51.769318:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Max number of stations per m3u'.

2024-11-11 13:32:51.769339:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Update Stations Process Schedule On/Off'.

2024-11-11 13:32:51.769363:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Update Stations Process Schedule Time'.

2024-11-11 13:32:51.769383:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Update m3u(s) and XML EPG(s) Process Schedule On/Off'.

2024-11-11 13:32:51.769405:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Update m3u(s) and XML EPG(s) Process Schedule Start Time'.

2024-11-11 13:32:51.769426:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'Playlist Manager: Update m3u(s) and XML EPG(s) Process Schedule Frequency'.

2024-11-11 13:32:51.769447:  INFO: New row added to StreamLinkManager_Settings.csv... it was for 'SLM: End-to-End Process Schedule Frequency'.

2024-11-11 13:32:51.991272:  INFO: Adding new rows to StreamLinkManager_StreamingServices.csv...

    ADDED: Netflix

    ADDED: Disney Plus

    ADDED: Amazon Prime Video

    ADDED: Max Amazon Channel

    ADDED: Epix Amazon Channel

    ADDED: Paramount+ Amazon Channel

    ADDED: Discovery+ Amazon Channel

    ADDED: AMC+ Amazon Channel

    ADDED: PBS Kids Amazon Channel

    ADDED: Cinemax Amazon Channel

    ADDED: Hallmark Movies Now Amazon Channel

    ADDED: PBS Masterpiece Amazon Channel

    ADDED: MZ Choice Amazon Channel

    ADDED: Shudder Amazon Channel

    ADDED: MUBI Amazon Channel

    ADDED: AcornTV Amazon Channel

    ADDED: BritBox Amazon Channel

    ADDED: Fandor Amazon Channel

    ADDED: Screambox Amazon Channel

    ADDED: Sundance Now Amazon Channel

    ADDED: Bet+ Amazon Channel

    ADDED: DreamWorksTV Amazon Channel

    ADDED: ShortsTV Amazon Channel

    ADDED: Starz Amazon Channel

    ADDED: Cohen Media Amazon Channel

    ADDED: Full Moon Amazon Channel

    ADDED: RetroCrush Amazon Channel

    ADDED: Apple TV Plus

    ADDED: MLS Season Pass

    ADDED: Apple TV

    ADDED: Hulu

    ADDED: Crunchyroll

    ADDED: fuboTV

    ADDED: Max

    ADDED: BR Sports

    ADDED: Crunchyroll Amazon Channel

    ADDED: Peacock Premium

    ADDED: Kocowa

    ADDED: Amazon Video

    ADDED: Google Play Movies

    ADDED: YouTube

    ADDED: Paramount Plus

    ADDED: Paramount+ with Showtime

    ADDED: Paramount Plus Apple TV Channel 

    ADDED: Starz Apple TV Channel

    ADDED: AMC Plus Apple TV Channel 

    ADDED: Britbox Apple TV Channel 

    ADDED: Paramount+ Amazon Channel

    ADDED: The Roku Channel

    ADDED: Paramount+ Roku Premium Channel

    ADDED: Starz Roku Premium Channel

    ADDED: AMC+ Roku Premium Channel

    ADDED: MGM Plus Roku Premium Channel

    ADDED: AMC+

    ADDED: YouTube Premium

    ADDED: YouTube Free

    ADDED: The CW

    ADDED: Hoopla

    ADDED: Fandango At Home

    ADDED: Starz

    ADDED: VUDU Free

    ADDED: Criterion Channel

    ADDED: PBS

    ADDED: FXNow

    ADDED: JustWatchTV

    ADDED: Tubi TV

    ADDED: Kanopy

    ADDED: Microsoft Store

    ADDED: Sun Nxt

    ADDED: Crackle

    ADDED: AMC

    ADDED: AMC Theatres

    ADDED: Fandor

    ADDED: Curiosity Stream

    ADDED: NBC

    ADDED: MGM Plus

    ADDED: Freeform

    ADDED: History

    ADDED: A&E

    ADDED: Lifetime

    ADDED: Shudder

    ADDED: Screambox

    ADDED: Acorn TV

    ADDED: Sundance Now

    ADDED: GuideDoc

    ADDED: BritBox

    ADDED: MUBI

    ADDED: Netflix Kids

    ADDED: ALLBLK

    ADDED: History Vault

    ADDED: Yupp TV

    ADDED: MyOutdoorTV

    ADDED: WWE Network

    ADDED: Pure Flix

    ADDED: Lifetime Movie Club

    ADDED: Sling TV Orange and Blue

    ADDED: Sling TV Sports Extras

    ADDED: Spamflix

    ADDED: Pluto TV

    ADDED: BYUtv

    ADDED: HiDive

    ADDED: VIX 

    ADDED: Night Flight Plus

    ADDED: Retrocrush

    ADDED: Dekkoo

    ADDED: Shout! Factory TV

    ADDED: Chai Flicks

    ADDED: OVID

    ADDED: Mhz Choice

    ADDED: Vice TV 

    ADDED: Adult Swim

    ADDED: USA Network

    ADDED: Fox

    ADDED: FlixFling

    ADDED: Rakuten Viki

    ADDED: TCM

    ADDED: Bravo TV

    ADDED: TNT

    ADDED: Food Network

    ADDED: BBC America

    ADDED: IndieFlix

    ADDED: AHCTV

    ADDED: TLC

    ADDED: DIY Network

    ADDED: HGTV

    ADDED: Investigation Discovery

    ADDED: Science Channel

    ADDED: Destination America

    ADDED: Discovery Life

    ADDED: Animal Planet

    ADDED: Discovery

    ADDED: Travel Channel

    ADDED: Cooking Channel

    ADDED: Here TV

    ADDED: VH1

    ADDED: Flix Premiere

    ADDED: TBS

    ADDED: AsianCrush

    ADDED: Revry

    ADDED: DOCSVILLE

    ADDED: Spectrum On Demand

    ADDED: OXYGEN

    ADDED: Hi-YAH

    ADDED: tru TV

    ADDED: DisneyNOW

    ADDED: WeTV

    ADDED: ARROW

    ADDED: Plex

    ADDED: Plex Live TV

    ADDED: Plex Player

    ADDED: Plex Channel

    ADDED: WOW Presents Plus

    ADDED: Magellan TV

    ADDED: BroadwayHD

    ADDED: The Oprah Winfrey Network

    ADDED: Filmzie

    ADDED: MovieSaints

    ADDED: True Story

    ADDED: Martha Stewart TV

    ADDED: DocAlliance Films

    ADDED: OnDemandKorea

    ADDED: FlixHouse

    ADDED: Hoichoi

    ADDED: iQIYI

    ADDED: Metrograph

    ADDED: Public Domain Movies

    ADDED: Freevee

    ADDED: Eventive

    ADDED: Cultpix

    ADDED: FilmBox+

    ADDED: aha

    ADDED: ESPN

    ADDED: F1TV Pro

    ADDED: Bet+

    ADDED: NFL Plus

    ADDED: NBA League Pass

    ADDED: ESPN 2

    ADDED: ESPN 3

    ADDED: ESPN Deportes

    ADDED: ESPN Plus

    ADDED: MLB TV

    ADDED: Takflix

    ADDED: Tennis Channel

    ADDED: Klassiki

    ADDED: DAZN

    ADDED: Fox Sports 1

    ADDED: NHL Network

    ADDED: Twitch

    ADDED: Netflix basic with Ads

    ADDED: Tubi TV Sports

    ADDED: Fox Sports

    ADDED: Sling TV Orange

    ADDED: Sling TV Sports Extras

    ADDED: Sling TV Blue

    ADDED: Sling TV Sports Extras

    ADDED: Flo Rugby

    ADDED: YouTube Sports

    ADDED: Popflick

    ADDED: Courtside 1891

    ADDED: FOX Soccer Plus

    ADDED: Tennis TV

    ADDED: ViX Premium Amazon Channel

    ADDED: MLB.TV Amazon Channel

    ADDED: NBA TV Amazon Channel

    ADDED: NBA League Pass Amazon Channel

    ADDED: Runtime

    ADDED: MLB Network

    ADDED: Sling TV Sports Extras

    ADDED: BLAST.tv

    ADDED: Fandango

    ADDED: Bally Sports

    ADDED: The FA Player

    ADDED: beIN SPORTS

    ADDED: Fox Sports 2

    ADDED: WILLOW

    ADDED: Telemundo

    ADDED: Discovery +

    ADDED: NFL Sunday Ticket

    ADDED: Reveel

    ADDED: Ovation TV

    ADDED: BR Sports

    ADDED: Angel Studios

    ADDED: Cineverse

    ADDED: AD tv

    ADDED: Midnight Pulp

    ADDED: FYI Network

    ADDED: Xumo Play

    ADDED: National Geographic

    ADDED: Atom Tickets

    ADDED: Shahid VIP

    ADDED: DistroTV

    ADDED: myfilmfriend

    ADDED: Cinemark

    ADDED: Outside Watch

    ADDED: Cinepolis Cinemas

    ADDED: Fanatiz

    ADDED: NBA League Pass on YouTube TV

    ADDED: Citytv

    ADDED: FIFA+

    ADDED: Univer Video

    ADDED: GlewedTV

    ADDED: Fox Deportes

    ADDED: DFB Play

    ADDED: Toon Goggles

    ADDED: A&E Crime Central Apple TV Channel

    ADDED: Acorn TV Apple TV

    ADDED: ALLBLK Apple TV channel

    ADDED: UP Faith & Family Apple TV Channel

    ADDED: Tastemade Apple TV Channel

    ADDED: Sundance Now Apple TV Channel

    ADDED: Shudder Apple TV Channel

    ADDED: ScreenPix Apple TV Channel

    ADDED: OUTtv Apple TV Channel

    ADDED: Lifetime Movie Club Apple TV Channel

Exception in thread Thread-1 (check_schedule):

Traceback (most recent call last):

  File "/usr/local/lib/python3.12/threading.py", line 1075, in _bootstrap_inner

    ADDED: Hallmark Movies Now Apple TV Channel

    ADDED: Eros Now Select Apple TV Channel

    ADDED: CuriosityStream Apple TV Channel

    ADDED: Cinemax Apple TV Channel

    ADDED: BBC Select Apple Tv channel

    ADDED: BET+  Apple TV channel

    ADDED: Carnegie Hall+ Apple TV Channel

    ADDED: IFC Films Unlimited Apple TV Channel

    ADDED: HISTORY Vault Apple TV Channel

    ADDED: BTV

    ADDED: HISTORY Vault Amazon Channel

    ADDED: Carnegie Hall+ Amazon Channel

    ADDED: Lifetime Movie Club Amazon Channel

    ADDED: Film Movement Plus

    ADDED: NWSL+

    ADDED: EuroLeague TV

    ADDED: Cricbuzz

    ADDED: Amazon Prime Video with Ads

    ADDED: Troma NOW

    ADDED: ABC

    ADDED: Regal Cinemas

    ADDED: Harkins Theatres

    ADDED: B&B Theatres

    ADDED: Marcus Theatres

    ADDED: Sports on Max

    ADDED: Kino Film Collection

    ADDED: Tubi TV Live

    ADDED: Pluto TV Live

    ADDED: Cineverse LiveTV

    ADDED: Strand Releasing Amazon Channel

    ADDED: Peacock Premium Plus

    ADDED: Univision NOW

    ADDED: ALLBLK Amazon channel 

    ADDED: NFL Network

    ADDED: Vix Gratis Amazon Channel

    ADDED: The Rugby Network

    ADDED: Apple TV Plus Amazon Channel

    ADDED: Motorvision TV Amazon Channel

    ADDED: Stingray Classica Amazon Channel

    ADDED: Stingray Djazz Amazon Channel

    ADDED: Stingray Karaoke Amazon Channel

    ADDED: TV1000 Russian Kino Amazon Channel

2024-11-11 13:32:51.994141:  INFO: Finished adding new rows.

2024-11-11 13:32:52.037505:  WARNING: Channels URL not found at http://dvr-wetty.local:8089

2024-11-11 13:32:52.037532:  WARNING: Please change Channels URL in settings

2024-11-11 13:32:52.037538:  Initialization Complete. Starting Stream Link Manager for Channels...

2024-11-11 13:32:52.039846:  INFO: Server starting on port 5000

 * Serving Flask app 'slm'

    self.run()

  File "/usr/local/lib/python3.12/threading.py", line 1012, in run

    self._target(*self._args, **self._kwargs)

  File "/app/slm.py", line 7915, in check_schedule

    auto_update_schedule_frequency = settings[18]["settings"]

                                     ~~~~~~~~^^^^

IndexError: list index out of range

 * Debug mode: off

I'll hold off on publishing for the moment. Let me know what you think.

Your logs indicate you already had SLM files in that directory, like really, really, really old versions of the files, maybe even Alpha ones. Looks like they missed one of the many updates and, consequently, your settings file is missing certain things that should be in there now, causing an error. Delete the StreamLinkManager_Settings.csv file in that directory and restart the container and it should be happy.

Ha! I hadn't even considered that. Probably from back when I was messing around using wetty as a base for the cli version. Good spot -- I'll delete all that and try it again.

EDIT: Yes -- looks good now. I'll publish an update shortly.

1 Like

New bnhf/olivetin:latest (aka bnhf/olivetin:2024.11.11) pushed just now incorporating the latest SLM Docker Compose and sample environment variables.

The thread containing a complete list of Docker Compose examples for every CDVR-related extension has been updated as well:

v2024.11.13.1347 has been release as stable. The SLM related items are:


FIXED: {SLM} After adding a program using 'New & Updated', it would forget the date and default back to today; now will retain the input date

The date was being reset before, but now it will remember it:

This is even true if you leave the page and come back.


All other updates are PLM related:

1 Like

From now on, all details and examples of updates will only be documented in the GitHub repo. Check out this one with some great stuff!

Of course, I'll still post these notices here. I'm just trying to limit my documentation activities to one place.

2 Likes

In honor of SLM Docker reaching over 1000 downloads (and I have no way to know how many downloads the other versions have), here's a couple of updates for things that probably no one would have noticed!

1 Like

Congrats on this milestone! :partying_face:

Hi, Love the app, but every time it's updated, my install goes into an infinite loop generating the following message. I've done a complete remove and install 4 times, but feel like I've lost a lot of time rebuilding playlists. Any idea, why I'm having this issue? Thanks

2024-11-24 05:47:34.957534: Beginning Initialization Process (see log for details)...
2024-11-24 05:47:35.192758: SUCCESS: https://www.justwatch.com is accessible. Continuing...
Traceback (most recent call last):
File "/app/slm.py", line 1082, in
check_and_create_csv(csv_file)
File "/app/slm.py", line 437, in check_and_create_csv
check_and_add_column(csv_file, 'special_action', 'None')
File "/app/slm.py", line 645, in check_and_add_column
if column_name not in fieldnames:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable

Just a heads up that you should never need to do this, even in a rebuild. Make sure you have a copy of the program_files directory or it is protected in volumes or whatever. So long as you have that, everything in SLM/PLM will remain and rebuild itself. But speaking of those files...

I was able to replicate your issue exactly by deleting all of the content (including header rows) inside the StreamLinkManager_BookmarksStatus.csv file. I have no idea how you managed to do that, but it won't be an issue going forward even if you do:

Thank you sir, I'm an example of not being able to make something idiot proof. :slight_smile: If there is a way I can usually break it, but appreciate you looking into it and making things more robust for those of us prone to making a mess. The things you learn best you are not taught. Keep up the great work.

Quick thought, I was never using the Stream Link portion of the program, only the Playlists, is it possible that this would/could have led to an empty header in the CSV?

At first, I didn't think I could figure out a way to make it happen, but then I came across one! Details in the fix:

I don't know if that is what you did, but I was able to make it happen this way, so now it's impossible to do so.

2 Likes