OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

From the mind of @chDVRuser :slight_smile:: A new OliveTin Action to send notifications, via Apprise, when the Samsung-TVPlus container's XML guide data has become stale. This has been pushed today as bnhf/olivetin:latest (aka bnhf/olivetin:2025.03.30).

This will likely be expanded in the future to support notifications for other container's XML EPG files. But for now, it's being road tested with Samsung-TVPlus.

2 Likes

Just copy the XMLTV Guide Data URL from your Custom Channel settings


I'm having it check every hour and alert me if the Samsung EPG xml is more than 2.5hrs (150 minutes) old. It uses the generated_ts timestamp in the xml to determine when it was generated.

2 Likes

:partying_face: Party at the OliveTin thread! :tada:

OliveTin-for-Channels passes the 25K download mark...

"pull_count":25130

Thanks to all who have contributed!

2 Likes

Apologies if this info is found within this megathread - I couldn't figure out which combination of terms to use to find the specific answer.

I use Olivetin for Channels (O4C) to export one of my channel collections for use in other viewers (though I use the Channels client mostly. I noticed some channels are missing. That channel collection has channels from 4 sources that otherwise work fine and show perfectly within the Channels client. Most are in the SLM MPEG-TS and HLS m3u8 files, but I have a couple of others I manage because I've had to do some EPG mix and match on them and they're easier to track that way.

Again, they show info in the EPG on Channels and all work fine in the collection. But when I use O4C to export the m3u file for that Channels collection it looks like I'm getting the stations in the SLM MPEG-TS and HLS files but none of the others. Any way to fix that?

UPDATE - by correcting the missing channels in such a way that they are output with channel and guide data in the SLM HLS files, they are now created properly in the O4C output file. It seems it isn't outputting my "EPG problems" source channels that appear in that collection for some reason, even though I can watch them just fine in Channels DVR client. Not sure why O4C is not processing that Source or the other non-SLM ones the same way as the SLM-fed Sources.

It's a reasonably simple script, that's grabbing data from three curl commands:

The first determines which channels are in a given collection:
curl http://$dvr/dvr/collections/channels

The second gives me a cross reference for what channel-ids are assigned to what channel numbers in the CDVR guide:
curl http://$dvr/devices/ANY/guide/now

And the third is the full CDVR M3U:
curl http://$dvr/devices/ANY/channels

After that, it's pretty much jq magic to index and filter. Any reason to believe your data wouldn't show up in full using those curl commands?

bnhf/olivetin:latest (aka bnhf/olivetin:2025.04.03) pushed this morning with support for the latest v0.5 version of Channelwatch. More details here:

No reason at all.....it's really odd. Going to keep looking into it when I can. For now I'm trying to pull as much back into SLM as possible, because those files are grabbed just fine.

Following up on my previous message. There isn't anything that would appear to be off with my sources as best I can tell.

If I go to http://ip:8089/devices I can see all the channels, separated by each and all of the sources listed.
If I go to http://ip:8089/devices/ANY/guide, I see programs for those channels, BUT I notice that the ones not from Source: "xmltv:SLM", for example, show "placeholder". The other fields look correct, I think, but I guess that's what causes them to not show in my other clients. The output of http://ip:8089/devices/ANY/channels looks complete as well, taking me back to the fact it seems to be those strange guide outputs....

Using this URL in your browser:

http://$dvr/dvr/collections/channels

could you post the JSON for the collection is question? It should look something like this:

{"slug":"1","name":"DirecTV","items":["3","5","8","10","12","15","77","202","204","206","207","208","209","212","213","215","216","217","218","219","221","229","230","236","238","239","241","242","245","245A","247","247A","246","248","249","249A","252","253","254","256","258","259","264","269","276","304","305","311","312","346","501","502","503","504","505","506","507","509","570","610","611","612","618"],"created_at":1726938232315,"updated_at":1726938527132}

Sure. You can see the fullnames of the channels that don't export properly from the Favs collection reflected in the EPG problems collection. Maybe some special DRM or something is impacting PLM's handling of them? I know D&D Adventures, for example, doesn't export in some other EPGs? I'd thought it might have something to do with the + and & symbols in some of those channel names, but that doesn't apply to Showtime.

[{"slug":"1","name":"Favs","items":["plm_0105","plm_0140","plm_0107","plm_0021","plm_0104","plm_0018","plm_0106","plm_0174","plm_0257","plm_0258","plm_0161","plm_0162","plm_0163","plm_0164","plm_0218","plm_0172","plm_0173","plm_0139","plm_0180","plm_0154","plm_0170","plm_0358","plm_0123","plm_0111","plm_0108","plm_0153","plm_0282","plm_0343","plm_0093","plm_0438","plm_0099","plm_0080","plm_0346","plm_0101","plm_0158","plm_0085","plm_0009","plm_0252","plm_0035","plm_0134","plm_0206","plm_0207","plm_0444","plm_0348","plm_0460","plm_0024","Documentary+","plm_0383","plm_0133","plm_0195","plm_0196","plm_0073","plm_0041","plm_0103","plm_0040","plm_0203","plm_0076","plm_0025","plm_0049","plm_0286","Curiosity NOW","plm_0231","plm_0232","plm_0345","plm_0347","plm_0053","plm_0446","plm_0457","plm_0128","plm_0368","plm_0369","plm_0193","plm_0194","plm_0253","plm_0254","plm_0263","plm_0264","Dungeons \u0026 Dragons Adventures","plm_0267","plm_0268","plm_0265","plm_0266","plm_0363","plm_0008","plm_0135","plm_0136","plm_0216","plm_0217","plm_0159","plm_0160","plm_0156","plm_0131","plm_0132","plm_0249","plm_0250","plm_0175","plm_0176","plm_0178","plm_0179","plm_0177","plm_0380","plm_0409","plm_0015","plm_0033","plm_0048","plm_0002","plm_0003","plm_0001","plm_0023","plm_0061","plm_0066","plm_0068","plm_0070","plm_0071","plm_0072","plm_0075","plm_0077","plm_0081","plm_0082","plm_0084","plm_0086","plm_0166","plm_0167","plm_0112","plm_0114","plm_0122","plm_0119","plm_0115","plm_0120","plm_0121","plm_0118","plm_0117","plm_0181","plm_0182","plm_0183","plm_0184","plm_0185","plm_0190","plm_0188","plm_0189","plm_0191","plm_0192","US MGM+ EAST","US MGM+ WEST","US MGM+ HITS","US MGM+ DRIVE-IN","US MGM+ MARQUEE","plm_0233","plm_0234","plm_0235","plm_0236","plm_0237","plm_0248","plm_0238","plm_0239","plm_0240","plm_0241","plm_0242","plm_0243","plm_0244","plm_0247","plm_0245","plm_0246","US SHOWTIME EAST","US SHOWTIME WEST","plm_0219","plm_0220","plm_0222","plm_0223","plm_0226","plm_0227","plm_0228","plm_0229","plm_0145","plm_0152","plm_0146","plm_0147","plm_0143","plm_0144","plm_0150","plm_0151","plm_0142","plm_0148","plm_0149","plm_0436","plm_0437","plm_0259","plm_0262","plm_0016","plm_0017","plm_0469","plm_0471","plm_0470","plm_0472"],"created_at":1648688151492,"updated_at":1743780407179},{"slug":"23","name":"EPG Problems","items":["Curiosity NOW","plm_0029","Dungeons \u0026 Dragons Adventures","US MGM+ DRIVE-IN","US MGM+ HITS","US MGM+ MARQUEE","US MGM+ WEST","US MGM+ EAST","US SHOWTIME EAST","US SHOWTIME WEST"],"created_at":1736794208227,"updated_at":1743736110569}]

Having "channel-id" values containing spaces seems unusual to me. I just looked at a dozen different M3Us, and the those values were always numbers, or unique callsigns, other combinations of letters numbers and symbols. No spaces though. The name values do, at the end of the first M3U line, after the comma -- but not channel-id.

I'm not saying this is the problem, just that I've never seen it. Any idea where those values came from? I'll have another look at the script to see if a channel-id with one or more spaces would be handled properly...

1 Like

@Hagary Can you grab me one JSON data set, for one of those collection channels that contain spaces? It would look similar to this, using this URL:

http://$dvr/devices/ANY/guide/now
{"Airings":[{"Source":"tms","Channel":"245A","OriginalDate":"2015-05-28","Time":1743778800,"Duration":9000,"Title":"San Andreas (2015)","Summary":"A rescue pilot must save his family after a magnitude 9 earthquake devastates California.","FullSummary":"A seemingly ideal day turns disastrous when California's notorious San Andreas fault triggers a devastating, magnitude 9 earthquake, the largest in recorded history. As the Earth cracks open and buildings start to crumble, Ray Gaines (Dwayne Johnson), an LAFD search-and-rescue helicopter pilot, must navigate the destruction from Los Angeles to San Francisco to bring his estranged wife (Carla Gugino) and their only daughter (Alexandra Daddario) to safety.","Image":"https://tmsimg.fancybits.co/assets/p10975274_v_v8_ab.jpg?w=480\u0026h=720","Categories":["Movie","Feature Film"],"Genres":["Action","Adventure","Thriller"],"Tags":["CC","DVS","HD 1080i","HDTV"],"ProgramID":"MV006106310000","MovieID":"tms/10975274","Directors":["Brad Peyton"],"Cast":["Dwayne Johnson","Carla Gugino","Alexandra Daddario"],"QualityRating":2.5,"ReleaseYear":2015,"ContentRating":"PG-13","SearchScore":0.04473191759162412,"Raw":{"startTime":"2025-04-04T15:00Z","endTime":"2025-04-04T17:30Z","duration":150,"channels":["245A"],"stationId":"42642","qualifiers":["CC","DVS","HD 1080i","HDTV"],"program":{"tmsId":"MV006106310000","rootId":"10975274","seriesId":"","entityType":"Movie","subType":"Feature Film","title":"San Andreas","titleLang":"en","releaseYear":2015,"releaseDate":"2015-05-28","origAirDate":"","descriptionLang":"en","shortDescription":"A rescue pilot must save his family after a magnitude 9 earthquake devastates California.","longDescription":"A seemingly ideal day turns disastrous when California's notorious San Andreas fault triggers a devastating, magnitude 9 earthquake, the largest in recorded history. As the Earth cracks open and buildings start to crumble, Ray Gaines (Dwayne Johnson), an LAFD search-and-rescue helicopter pilot, must navigate the destruction from Los Angeles to San Francisco to bring his estranged wife (Carla Gugino) and their only daughter (Alexandra Daddario) to safety.","topCast":["Dwayne Johnson","Carla Gugino","Alexandra Daddario"],"directors":["Brad Peyton"],"genres":["Action","Adventure","Thriller"],"qualityRating":{"ratingsBody":"TMS","value":"2.5"},"ratings":[{"body":"Motion Picture Association","code":"PG-13"},{"body":"Ontario Film Authority","code":"PG"},{"body":"Manitoba Film Classification Board","code":"PG"},{"body":"Alberta's Film Classification Board","code":"PG"},{"body":"Maritime Film Classification Board","code":"PG"},{"body":"B.C. Film Classification Office","code":"PG"},{"body":"Saskatchewan Film and Video Classification Board","code":"PG"},{"body":"Régie du cinéma","code":"13+"},{"body":"Mediakasvatus- ja kuvaohjelmayksikkö","code":"K12"},{"body":"Freiwillige Selbstkontrolle der Filmwirtschaft","code":"12"},{"body":"Arcom","code":"-10"},{"body":"Australian Classification Board","code":"M 15+"},{"body":"Departamento de Justiça, Classificação, Títulos e Qualificação","code":"12"},{"body":"British Board of Film Classification","code":"12A"},{"body":"Instituto Nacional de Cine y Artes Audiovisuales","code":"SAM 13"},{"body":"Kijkwijzer","code":"12"},{"body":"Statens medieråd","code":"Från 11 år"},{"body":"映倫","code":"G"},{"body":"Dirección General de Radio, Televisión y Cinematografía","code":"B"},{"body":"Instituto de Cinematografía y de las Artes Visuales","code":"12"},{"body":"Krajowa Rada Radiofonii i Telewizji","code":"12"},{"body":"영상물등급위원회","code":"12+"},{"body":"Medierådet","code":"11"},{"body":"Irish Film Classification Office","code":"12A"},{"body":"UK Content Provider","code":"15"}],"preferredImage":{"uri":"https://tmsimg.fancybits.co/assets/p10975274_v_v8_ab.jpg?w=480\u0026h=720","height":"720","width":"480","primary":"true","category":"VOD Art","text":"yes","tier":""}}}}],"Channel":{"CallSign":"TNTHD","Categories":[],"ChannelID":"245A","DeviceID":"M3U-FireTVDirecTV","Genres":[],"HD":true,"Hidden":false,"Image":"https://tmsimg.fancybits.co/assets/s42642_ll_h15_ac.png?w=360\u0026h=270","Name":"TNT HD","Number":"245A","Station":"42642","Tags":[]}}

EDIT: That URL should give you current airings on all channels, and I'm looking for the data set for just one of those channels.

The sources are almost all fed from IPTVboss, including the core SLM/PLM ones and the EPG_Problems one. The only one that is different is that D&D Adventures channel. It is available via Plex Live TV and Samsung TV Plus. Plex guide data stopped showing on that and many other channels 6-8 weeks ago (even if you go to their website). Samsung's stream has some DRM but the EPG is up-to-date so I take the Plex feed (through IPTVboss again) and mate it with the Samsung EPG.

It all works great - it just won't show the D&D, MGM+, and SHOWTIME EAST and WEST channels in the O4C output file.

1 Like

I went ahead and sent samples from 4-5 of the channels, across a SLM and non-SLM source (both from IPTVboss before that).

Let's focus on one channel you have in "Favs", with this channel-id:

"US MGM+ DRIVE-IN"

And, this current airing info:

{"Airings":[{"Source":"xmltv:IPTVBoss","Channel":"127123","Time":1743784500,"Duration":6900,"Title":"Wonder Boys","EpisodeTitle":"Movie (2000)","Summary":"Movie (2000) Grady (Michael Douglas) is a 50-ish English professor who hasn't had a thing published in years -- not since he wrote his award winning Great American Novel 7 years ago. This weekend proves even worse than he could imagine as he finds himself reeling from one misadventure to another in the company of a new wonder boy author.","Image":"https://zap2it.tmsimg.com/assets/p24840_p_v10_ar.jpg","SeriesID":"Wonder Boys","ProgramID":"Wonder Boys/Movie (2000)","SearchScore":0.09372028248709982,"Raw":{"xmltv":"\u003ctv source-info-name="IPTVBoss"\u003e\n\u003cchannel id="MGM+DriveIn.us1"\u003e\n \u003cdisplay-name\u003eUS MGM+ DRIVE-IN\u003c/display-name\u003e\n \u003cdisplay-name\u003eUS MGM+ DRIVE-IN\u003c/display-name\u003e\n \u003cicon src="https://cdn.iptvboss.pro/logos/USA/MGM%2BDriveIn.us.png"\u003e\u003c/icon\u003e\n \t\u003clcn\u003e127123\u003c/lcn\u003e\n\u003c/channel\u003e\n\n\u003cprogramme start="20250404163500 +0000" stop="20250404183000 +0000" channel="MGM+DriveIn.us1"\u003e\n \u003cdesc lang="en"\u003eMovie (2000) Grady (Michael Douglas) is a 50-ish English professor who hasn't had a thing published in years -- not since he wrote his award winning Great American Novel 7 years ago. This weekend proves even worse than he could imagine as he finds himself reeling from one misadventure to another in the company of a new wonder boy author.\u003c/desc\u003e\n \u003cepisode-num system="dd_progid"\u003eMV00084664.0000\u003c/episode-num\u003e\n \u003cicon src="https://zap2it.tmsimg.com/assets/p24840_p_v10_ar.jpg"\u003e\u003c/icon\u003e\n \u003clength units="minutes"\u003e115\u003c/length\u003e\n \u003csub-title lang="en"\u003eMovie (2000)\u003c/sub-title\u003e\n \u003csubtitles type="teletext"\u003e\u003c/subtitles\u003e\n \u003ctitle lang="en"\u003eWonder Boys\u003c/title\u003e\n \u003c/programme\u003e\u003c/tv\u003e"}}],"Channel":{"CallSign":"US MGM+ DRIVE-IN","Categories":["US CA UK MOVIES"],"ChannelID":"US MGM+ DRIVE-IN","DeviceID":"M3U-EPGPROBSTSdirect","Genres":[],"HD":true,"Hidden":false,"Image":"https://cdn.iptvboss.pro/logos/USA/MGM%2BDriveIn.us.png","Name":"US MGM+ DRIVE-IN","Number":"127123","Station":"MGM+DriveIn.us1","Tags":[]}}

Piping that value through the jq statement I'm using, gives me this:

127123

So, back to some data from you. Using this URL:

http://$dvr/devices/ANY/channels

Can you post the M3U dataset for "GuideNumber":"127123"?

I did find a problem with collection names that contain spaces, which I fixed. Otherwise, the data you provided me was all handled fine -- so no issues there.

Pull the most recent :latest when you have a moment, and try producing an M3U for your EPG Problems collection, and let me know how it goes.

Hmmm....getting a HTTP 500 error. Maybe :latest hasn't propagated yet, though it did show an update available.

Pushed another update a few moments ago, for a different reason -- but I was able to pull it right away. So, if you could try again...

I was able to generate a m3u from that EPG_Problems collection (I renamed it to avoid things like that spaces in names issue). The 500 error was because of a file permissions error on this new m3u - I'll have to sort that but it's an easy fix.

I am still getting no guide data in my exports for those other channels. I'm going to keep investigating and try to simplify it so I can determine if it is a CDVR, PLM, or O4C hiccup. Will keep you posted!

As an update, I just tested that EPG_Problems collection m3u and while the source has 10 channels - the output has just 1, so there's definitely something up there. I don't want to muddy up the thread any more, but when you have some time can we work through this via messages or a Github issue?

1 Like