Jump to content

ComSkipper ... A Emby Plugin that skips commercials


BillOatman

Recommended Posts

BillOatman
On 11/18/2022 at 3:05 PM, iBoss said:

I'm the one who create the file

Yes now is working when I use tabs for spaces :)

Many thanks

 

I have another request if that possible ... can we make check box to enable the skipper for the movie before play it?

Glad it's working.  Do you mean when you start a movie have something that asks if you want to enable Comskipper or not?

Link to comment
Share on other sites

  • 2 weeks later...

Trying to move from Channels DVR to Emby now that I found this plugin. I have it all setup and skipping works great on the edl files created by Channels. I have Emby and the plugin setup on a new Windows box and cannot get it to create the edl file when recording via Emby. I followed through the included pdf and it seems to be working. The plugin is loaded, it calls the comskip script:

2022-12-01 08:35:53.625 Info App: Loading ComSkipper, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null from C:\Users\Emby\AppData\Roaming\Emby-Server\programdata\plugins\ComSkipper.dll
2022-12-01 08:35:55.501 Info App: Starting entry point ComSkipper.ServerEntryPoint
2022-12-01 08:35:55.512 Info App: Entry point completed: ComSkipper.ServerEntryPoint. Duration: 0.0108478 seconds
022-12-01 10:01:00.875 Info LiveTV: Running recording post processor C:\Comskip\ComskipRecordings.bat "D:\Data\Recordings\7 News Today in New England\7 News Today in New England 2022_12_01_09_00_00.ts"
 

But I don't end up with an edl file. Any thoughts?

 

 

Link to comment
Share on other sites

Found the issue... There was extra spaces in the bat file. Cleaning that up got it to create the edl file. But now I have a question about enabling the real time functionality. Does both the post processing and Scripter-X need to be enabled for the real time functionality to work? The doc doesn't specify anything and leads me to believe they both need to be enabled. But when configured like that, when i go to watch something that is recording, it now gives me the option to play from beginning but doesn't skip commercials or create an edl file. If I don't configure Scripte-X then the edl gets created after the recording is completed.

Link to comment
Share on other sites

BillOatman
On 12/1/2022 at 9:52 PM, AKSkinz said:

Found the issue... There was extra spaces in the bat file. Cleaning that up got it to create the edl file. But now I have a question about enabling the real time functionality. Does both the post processing and Scripter-X need to be enabled for the real time functionality to work? The doc doesn't specify anything and leads me to believe they both need to be enabled. But when configured like that, when i go to watch something that is recording, it now gives me the option to play from beginning but doesn't skip commercials or create an edl file. If I don't configure Scripte-X then the edl gets created after the recording is completed.

No, only 1 needs to be active..  The post processing runs comskip to create the edl file. The scripter thing does some sort of magic I haven't tried to follow as I never watch while I am recording.  Others here should be able to help with that aspect.

Edited by BillOatman
Link to comment
Share on other sites

Ok…. Hopefully someone else can provide a bit more insight as I’m not getting reliable results with it. I know the post processing works now as it creates the edl file about 2 minutes after the recording ends. But with Scripter-X configured and real time enabled in the plugin, sometimes it gives me a “play from beginning” option when I start it while it’s still recording and sometimes not. If it let’s me start from the beginning then it plays but doesn’t skip the commercials. If I watch it after the recording is completed then it skips the commercials as expected.

Any pointers appreciated!

Link to comment
Share on other sites

The option to play from start really shouldn't be any different whether you are using ComSkipper or Scripter-X or not.

When you use Scripter-X is the .edl created? do you have live_tv=1 set in your comskip.ini?

Also comskip does a much better job detecting commercials when it's done analyzing the hole recording, so much so that I don't use the live feature because of this.  

  • Agree 1
Link to comment
Share on other sites

Hmm.. The only time the edl is created is when I have comskip setup in the post processing section. Live_tv=1 is present in ini file. If I just have just the Scripter-X enabled then the edl file is not create. I have 4 recordings going right now but none of the are displaying the play from beginning if I select them in the guide

Link to comment
Share on other sites

On 11/22/2022 at 7:11 PM, BillOatman said:

Glad it's working.  Do you mean when you start a movie have something that asks if you want to enable Comskipper or not?

Yes before start a movie. for example a below picture:

image.png.6f42ad5bf8088f45e982b51ddd80ca38.png

 

also there is a bug: when the Comskipper skip the scene first time and then I rewind before the scene, it will not skip again. I should exit the movie and play it again to work.

 

Thanks :)

Link to comment
Share on other sites

BillOatman
2 hours ago, iBoss said:

Yes before start a movie. for example a below picture:

image.png.6f42ad5bf8088f45e982b51ddd80ca38.png

 

also there is a bug: when the Comskipper skip the scene first time and then I rewind before the scene, it will not skip again. I should exit the movie and play it again to work.

 

Thanks :)

1) Great idea! Unfortunately plugins do not have that capability in Emby.

2) That is on purpose.  That way if comskip makes a mistake and ComSkipper skips too far as a result, you can rewind back to the correct spot and watch from there.

Link to comment
Share on other sites

22 hours ago, AKSkinz said:

The only time the edl is created is when I have comskip setup in the post processing section.

That tells us that Scripter-X isn't running comskip. The syntax for scripter-x is different from post-processing.

You can find examples of how to use this properly earlier in this thread or  @

 

Link to comment
Share on other sites

Set it up as directed in the pdf but that is confusing as it leads you to believe that both post processing and Scripter-X needs to be enabled for it to function. BillOatman stated both need to be on for it to function. But in reading through the thread, there's this post where Spaceboy replied to the question of having both enabled:

I have it setup like shown in pdf:

image.png.b066fe41cc8b793894cdb78e1d316430.png

So I'm at a loss as why it's not functioning. This issue along with "Play from beginning" randomly working on my Android TV client is baffling.

 

Link to comment
Share on other sites

It needs to only be run as a post-process OR thru scripter-x not both.

-ini C:\Comskip\comskip.ini "%recording.path%" should be:

--ini=C:\Comskip\comskip.ini "%recording.path%"

Link to comment
Share on other sites

Ok... removed setup from post processing and added the missing = sign. Restarted Emby but still doesn't create the edl file. I had scheduled recordings fire off and started some on the fly recordings but still no edl. Is there anything written to any log files to see where it may be failing?

Link to comment
Share on other sites

hayrund

This is great! I use Channels DVR as my backend and it creates the necessary EDL files, but sometimes those aren't correct and auto-skipping may not be ideal. Could a pop-up like the "Skip Intro" has be utilized as an option? If I feel the skip was in error I can rewind or skip forward as needed.

Edited by hayrund
Link to comment
Share on other sites

8 hours ago, hayrund said:

This is great! I use Channels DVR as my backend and it creates the necessary EDL files, but sometimes those aren't correct and auto-skipping may not be ideal. Could a pop-up like the "Skip Intro" has be utilized as an option? If I feel the skip was in error I can rewind or skip forward as needed.

Currently, you can enable a pop up message to notify you when a commercial has been skipped.

If it skipped too much, you can rewind and that section won't get skipped again.

If it didn't skip enough, you can just fast forward.

It's not possible for plugins to add a button to the on screen display like the skip intro button.

  • Agree 1
Link to comment
Share on other sites

abescalamis

I have a synology NAS, I updated the server, also the compskip in the Nas and it stopped working, do anyone know what should I change to get it working again, I already updated the Comskip plugin too.

Link to comment
Share on other sites

I had a similar problem after updating to the latest version of comskip (not the comskipper plugin).  see this thread.  not sure, but you may need to alter the path for your nas.

 

 

Edited by richt
  • Thanks 1
Link to comment
Share on other sites

On 12/12/2022 at 11:19 AM, richt said:

I had a similar problem after updating to the latest version of comskip (not the comskipper plugin).  see this thread.  not sure, but you may need to alter the path for your nas.

 

 

Thank you thank you. Need to specify LD_LIBRARY_PATH before comskip. In my case LD_LIBRARY_PATH was set to /app/emby when run by emby, hence getting different results versus running the script from terminal. 

While trouble shooting this I ended up creating a comskip post processing script that logs everything, including the resulting edl contents, to a log viewable in the emby admin console.

#!/bin/bash
file=$1					#Post-processor command line argument: "{path}"

logpath="/config/logs/comskip.txt"	#change /config/logs to your emby log folder
comskip="/usr/bin/comskip"		#path to your comskip binary
comskipini="/config/comskip.ini"	#path to your comskip ini
libpath="/usr/lib/"			#path to shared libraries for comskip


log_message()
{
  echo $(date +"%Y-%m-%d%t%H:%M:%S") : "$1" >> $logpath
}

touch $logpath
logsize=$(stat --format=%s "$logpath")
if [ "$logsize" -gt "100000" ]; then
  rm $logpath
fi

log_message "Beginning post processing script on ${file}"

if [ -f "$file" ]; then
  log_message "File exists, sleeping 1 minute before starting..."
  sleep 65
  LD_LIBRARY_PATH=$libpath $comskip --ini=$comskipini "${file}" && log_message "Comskip success: Exit code $?" || log_message "Comskip failed: Exit code $?"
  if [ -f "${file%.*}.edl" ]; then
    log_message "Contents of ${file%.*}.edl:"
    while IFS="" read -r p || [ -n "$p" ]
    do
      log_message "$(printf '%s\n' "$p")"
    done < "${file%.*}.edl"
  else
    log_message "Comskip EDL file does not exist."
  fi
else
  log_message "File does not exist. Comskip did not run."
fi

log_message "Finished post processing script on ${file}"

Example log output:

2022-12-13 11:15:53 : Beginning post processing script on /data/dvr/The Tonight Show Starring Jimmy Fallon (2014)/Season 10/The Tonight Show Starring Jimmy Fallon S10E52 Miley Cyrus; Jesse Williams; Mary Mack.ts
2022-12-13 11:15:53 : File exists, sleeping 1 minute before starting...
2022-12-13 11:19:57 : Comskip success: Exit code 0
2022-12-13 11:19:57 : Contents of /data/dvr/The Tonight Show Starring Jimmy Fallon (2014)/Season 10/The Tonight Show Starring Jimmy Fallon S10E52 Miley Cyrus; Jesse Williams; Mary Mack.edl:
2022-12-13 11:19:57 : 856.49 1082.51 0
2022-12-13 11:19:57 : 1645.44 1916.51 0
2022-12-13 11:19:57 : 2161.43 2467.60 0
2022-12-13 11:19:57 : 2839.40 3155.55 0
2022-12-13 11:19:57 : 3487.42 3777.64 0
2022-12-13 11:19:57 : Finished post processing script on /data/dvr/The Tonight Show Starring Jimmy Fallon (2014)/Season 10/The Tonight Show Starring Jimmy Fallon S10E52 Miley Cyrus; Jesse Williams; Mary Mack.ts

 

  • Like 1
  • Agree 1
Link to comment
Share on other sites

@skitals - Glad it helped.  Appears that the newest version of comskip relies on a file not in the Emby library. 

I really like the logging feature in your script.   I had put together something much less elegant in my debugging process.  I'll have to give your script a try. 

Link to comment
Share on other sites

  • 2 weeks later...
crusher11

I haven't changed or updated anything, but the comrun script has now stopped working. I'm just getting this error over and over, one for each recording:

realpath: ‘./Bad Tales/Bad Tales 2022_11_28_18_30_00.ts’: No such file or directory

Link to comment
Share on other sites

crusher11
On 9/26/2022 at 8:25 AM, TMCsw said:

I can see your missing a closing  quote it should be:

'--ini=/volume1/@appstore/comskip/var/comskip.ini' "{path}"

Not sure if that's the problem though.

I'm attaching a script file that will run comskip on all video files in the directory it is run in and all it's sub directories but only if the permissions are correct and there is NOT already an .edl for it. To do this run it with the -b option ie. `comrun -b`

you will need to edit the lines near the top for you I believe you should use the following:

#  BEGIN User Settings
Extensions=(ts mkv mp4 mov)
ComskipCMD='/volume1/@appstore/comskip/bin/comskip'
ComskipINI='/volume1/@appstore/comskip/var/comskip.ini'
ComskipPARAM='--threads=3'
#  END User Settings

You can add or remove Extensions as required as long as it follows the same format, ComskipPARAM can be omitted

your could also set this as your post-process application and the command in emby would just need to be "{path}"

make sure you make this file executable (chmod 755 comrun)

(not tested on Synology)

comrun 1.32 kB · 4 downloads

Quoting the comrun script mentioned above, for clarity.

Link to comment
Share on other sites

BillOatman
8 hours ago, crusher11 said:

Quoting the comrun script mentioned above, for clarity.

This has nothing to do with the plugin correct?  You might have better luck posting in a different area.  Or if you are using beta Emby, in the beta forum.

Link to comment
Share on other sites

crusher11
1 hour ago, BillOatman said:

This has nothing to do with the plugin correct?  You might have better luck posting in a different area.  Or if you are using beta Emby, in the beta forum.

I got it from someone in this thread and it ties back to the plugin, so this seemed the best place.

It also has nothing to do with Emby. Emby broke post-processing in a recent update, so I've been running it manually via Putty, but I just updated the server (after getting that error in Putty) and post-processing works, so I'm getting EDL files for everything now, even though the post-processing is running that very same comrun script. Though the one recording that didn't get an EDL via Putty still doesn't have one, so I need to run it again in Putty just to sort that out.

  • Thanks 1
Link to comment
Share on other sites

Spaceboy

hey @BillOatman - i assume i'm being overoptimistic here but i thought i would ask anyway. is there any way to include the time that has been skipped in the on screen pop up? detection is actually pretty good for me, although i need to work out a way to only use it on certain channels as i'm occasionally getting false positives on a channel that has no commercial breaks, but i thought this might be helpful for those times where it is wrong. the user could quickly consult the on screen time skipped and navigate manually back. cheers

Link to comment
Share on other sites

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...