Jump to content

Plugin: Export VODS from .m3u - split m3u livetv, tvshows, movies (Going BETA!!)


Recommended Posts

BigIrn
Posted

I'm not sure what I should be expecting when I look at live tv. The m3u for Live generates but there are no "channels" in the live folder? Here is an example of how to identify live:

http://m3u.best-smarter.me:80/live/nope/nada/605371.m3u8

@mickle026

gillmacca01
Posted (edited)

I'm still having issues with identification.

Example group name: EN| GANGSTER & MAFIA added to override for movies, but keeps getting put under tv shows in Emby. Hopefully the next version will be able to resolve this.

Ignore this,my mistake. Only issue is for tv shows it's not creating the group, but it is for movies.

Need to investigate further 

Edited by gillmacca01
gillmacca01
Posted

Think i need new glasses. If i view by folder (mixed content library), it shows the groups, but doesn't under tv shows and movies....that makes sense

mickle026
Posted
25 minutes ago, gillmacca01 said:

Think i need new glasses. If i view by folder (mixed content library), it shows the groups, but doesn't under tv shows and movies....that makes sense

They way they are identified is totally rewritten in the version I will post soon.

I am testing, refining, testing etc.

I am currently looking at changing the ignore section to improve it.

I am thinking about adding a multilayer system with:

Include (starts with)

Include (contains)

Ignore (starts with)

Ignore (Contains)

This way there would be much more control.

As it stands, I have an issue with ignore "N -", it's ignoring "EN -", and changing to my idea above would prevent that.

1 hour ago, BigIrn said:

I'm not sure what I should be expecting when I look at live tv. The m3u for Live generates but there are no "channels" in the live folder? Here is an example of how to identify live:

http://m3u.best-smarter.me:80/live/nope/nada/605371.m3u8

@mickle026

Yes this is already in the new version.

  It will detect either /live/ , .m3u8 , .m3u8?....., or a stream URL /588033 as a live stream.

  • Like 1
BigIrn
Posted

So I take the output LiveTV m3u and drop it into the Live TV part of Emby? Sorry for dumb questions.

gillmacca01
Posted
Just now, BigIrn said:

So I take the output LiveTV m3u and drop it into the Live TV part of Emby? Sorry for dumb questions.

You can do that. I plan (if I can get it to work - haven't tried yet) is to use it to just show PPV, and i can create a library based on that

  • Like 1
BigIrn
Posted
Just now, gillmacca01 said:

You can do that. I plan (if I can get it to work - haven't tried yet) is to use it to just show PPV, and i can create a library based on that

Oh that's really smart! Let me know what it will look like.

gillmacca01
Posted
1 minute ago, BigIrn said:

Oh that's really smart! Let me know what it will look like.

Can't look any worse than a tv guide that is blank

  • Haha 1
mickle026
Posted (edited)

OK, here goes!

Its different, so copy your old dll, and the VODtoSTRMscheduledTask.xml from the plugins/configuration directory and back them up.
Currently the only thing I know that is not working is fetching the Icons/Poster images.
Also I still haven't tested the group by Genres yet, so don't know if that is working or not.

The detection section has changed!

Include will override the ignores.

image.png.c5f284f97decbc5fa932525675c33e04.png

 

You can use your personal API keys from TMDB, TVDB or OMDB to add Provider Ids or collect Genre Information
 

Screenshot2025-03-15at16-55-14MICKS-RYZEN7.png.ffd0f717be46da83d432e8add4819588.png

 

VOD Output grouping has more options
image.png.6bbc307c5da3b95dd68ca9b3737c3728.png

 

Choose what you wish to output, you can now output whatever strms you like.

image.png.544660926c202bb648ad98fab31124b5.png

image.png.b5a9fc72e75e2a0c594528928050af94.png

 

Choose what you wish to log

 

image.png.fd96c67cbb7540a4569f5b2747045ac7.png

A LOT of work has gone into this - Let me know you findings!

I have taken onboard as well that this might get used to output different things, so I am also thinking about adding a saved profiles section, so that it could be run with different configs.
What do you tink?

VODtoSTRMscheduledTask.dll

Edited by mickle026
  • Thanks 1
gillmacca01
Posted (edited)

Not sure if I'm understanding your last statement correctly.

Does this mean, If I have multiple m3u url (in my case 1 connection per url, so have 2 urls) I could create a separate profile for each pointing to different folders? Maybe asking too much there 

Edited by gillmacca01
mickle026
Posted
1 minute ago, gillmacca01 said:

Not sure if I'm understanding your last statement correctly.

Does this mean, If I have multiple m3u url, I could create a separate profile for each pointing to different folders? Maybe asking too much there 

No,

As I was reading the thread (trying to catch up), I read that you had created a PPV section, so my thoughts were that if you could save your config as Profile 1 you could run it and create a TV Shows and Movies section in one folder, then you could edit the settings and save as Profile 2 to be able to run the processing again and create a different output result in a different output folder.

Next time its ran then you could just select the profile you want to use and run it.

Maybe its me that was understanding incorrectly.

gillmacca01
Posted

I haven't created the PPV section yet. Currently making sure what is a movie is detected correctly and same for TV Shows - just finished that and now importing it all to see what happens with the performance of Emby before I go any further 

mickle026
Posted (edited)
1 hour ago, gillmacca01 said:

I haven't created the PPV section yet. Currently making sure what is a movie is detected correctly and same for TV Shows - just finished that and now importing it all to see what happens with the performance of Emby before I go any further 

OK,

I do think though even if I misunderstood, that its not a bad idea.  OR maybe some version of it, like being able to separate the output into individual language folders.
There is room to explore further once everyone is happy that the current version is doing what it should.

I don't have time for it right now anyway, I have to switch back to another project that I have been neglecting and fix that.

Edited by mickle026
  • Thanks 1
gillmacca01
Posted

This is probably by design, but none of the ignore words have copied across. Thought I would mention it, just in case it's a bug - good job you said backup first

fbrassin
Posted

Just tried in a empty new folder different from previous plugin

 

5.mar.2025 - 20:46:09 Debugging: Investigate why there are empty folders.
15.mar.2025 - 20:46:09 Removing residual empty folders: /media/S3/m3u/STRM TV
15.mar.2025 - 20:46:09 Removing residual empty folders: /media/S3/m3u/STRM Movies
15.mar.2025 - 20:46:09 Finished this import.
15.mar.2025 - 20:46:09 Task Ended at: 15/03/2025 20:46:09
15.mar.2025 - 20:46:09 Task Duration: 00:06:21.68

This is the result.

I have to investigate, but i think many movies i didn't want have been created.

A question.

What it was in <VODIgnoreWords> is now in <IgnoreWords_Contains>? In this case I thing it it is not working as before.

Now i have many movies that it was supposed to be ignored.

mickle026
Posted (edited)

try this one, I changed the logic

This is the logic now, does this make sense?

if its a Includes contains words, skip the rest and continue
else if its Includes starts with words, skip the rest and continue

if its not an include (keep it) , is it an ignore it with contains words, if true skip back to the start of the loop and do the next item
else if its in ignore starts with, skip back to the start of the loop and do the next item

else just process it

                    bool Keep = await ShouldKeepEntryContainsAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                    
                    Keep = await ShouldKeepEntryStartsWithAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                    if (!Keep)
                    {
                        Keep = await ShouldKeepEntryStartsWithAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                    }

                    if (!Keep)
                    {
                       bool Ignore = await ShouldIgnoreEntryContainsAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                       if (Ignore)
                       {
                            continue;
                       }
                        if (!Ignore)
                        {
                            Ignore = await ShouldIgnoreEntryStartsWithAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                            {
                                continue;
                            }
                        }
                    }

 

 

Edited by mickle026
mickle026
Posted

I see an error in the pasted code!

LOL I will fix that !

mickle026
Posted
                    bool Keep = await ShouldKeepEntryContainsAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                    if (!Keep)
                    {
                        Keep = await ShouldKeepEntryStartsWithAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                    }

                    if (!Keep)
                    {
                       bool Ignore = await ShouldIgnoreEntryContainsAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                       if (Ignore)
                       {
                            continue;
                       }
                        if (!Ignore)
                        {
                            Ignore = await ShouldIgnoreEntryStartsWithAsync(counter, metadata.GroupTitle, metadata.MovieName, config, currentlog, log).ConfigureAwait(false);
                            {
                                continue;
                            }
                        }
                    }


I was processing startswith after contains and not checking the flag.  so its fixed now so it should check only if the boolean flag is still false

VODtoSTRMscheduledTask.dll

fbrassin
Posted

I run it again, but in the output folder nothing has been modified.

Here it tells output folder is empty, but it is not true.

15.mar.2025 - 21:33:54 The output directory is empty.
15.mar.2025 - 21:33:54 -----------------------[ Updating Output Folder ]-------------------------------
15.mar.2025 - 21:33:54 Updating OutputFolder (Creating/Deleting strms & folders)
15.mar.2025 - 21:33:54 Config: Write LiveTV VOD: False  Write Movie VOD: True  Write TV Show VODS: True
15.mar.2025 - 21:39:51 Finished this import.
15.mar.2025 - 21:39:51 Task Ended at: 15/03/2025 21:39:51
15.mar.2025 - 21:39:51 Task Duration: 00:14:08.10
15.mar.2025 - 21:39:51 No Input File 2
15.mar.2025 - 21:39:51 No Input File 3

Maybe do i have to remove all?

Here is what i have in my config

image.png.2f3951a28a8fd49b519cfe6ad75e9197.png

mickle026
Posted

Remove obsolete files , should remove anything after it processed the m3u that was not in it , but is in the output folder.

Remove other Top Level folders, should remove any from Live TV, TV shows, Movies that is not checked as an output option.

 

I have to go out now, I will look tomorrow

Can you tell me what you are trying to ignore and what its not ignoring?  you can pm if you would rather do that

fbrassin
Posted
57 minutes ago, mickle026 said:

Remove obsolete files , should remove anything after it processed the m3u that was not in it , but is in the output folder.

Remove other Top Level folders, should remove any from Live TV, TV shows, Movies that is not checked as an output option.

 

I have to go out now, I will look tomorrow

Can you tell me what you are trying to ignore and what its not ignoring?  you can pm if you would rather do that

Sent pm.

Tell me if you need anything else

fbrassin
Posted

If it can help, i tried manually delete all movies and run the plugin again, but nothing has been created.

Maybe do i have to delete cache somewhere?

 

15.mar.2025 - 23:37:53 The output directory is empty.
15.mar.2025 - 23:37:53 -----------------------[ Updating Output Folder ]-------------------------------
15.mar.2025 - 23:37:53 Updating OutputFolder (Creating/Deleting strms & folders)
15.mar.2025 - 23:37:53 Config: Write LiveTV VOD: False  Write Movie VOD: False  Write TV Show VODS: True
15.mar.2025 - 23:37:53 Finished this import.
15.mar.2025 - 23:37:53 Task Ended at: 15/03/2025 23:37:53
15.mar.2025 - 23:37:53 Task Duration: 00:02:16.88
15.mar.2025 - 23:37:53 No Input File 2
15.mar.2025 - 23:37:53 No Input File 3

 

mickle026
Posted

Nothing?  I will checked tomorrow, I'm out tonight, But you have set to only create TV shows.

Movie VOD: False

Is this what you want?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...