diff --git a/packages/addons/service/tvheadend43/source/defaults/comskip/comskip.ini b/packages/addons/service/tvheadend43/source/defaults/comskip/comskip.ini index bf857d44d8..9154db4a19 100644 --- a/packages/addons/service/tvheadend43/source/defaults/comskip/comskip.ini +++ b/packages/addons/service/tvheadend43/source/defaults/comskip/comskip.ini @@ -1,83 +1,83 @@ -; See comskip.txt in the distribution zip file for many settable parameters, read manual.html, tuning.html and debugwindow.html for how to tune and debug comskip -edl_mode=3 ; the mode specified in the generated edl file, 0=cut, 3=commercial break -mkv_time_offset=30.0 ; offset in seconds, to work around what appears to be an Kodi or ffmpeg bug -always_keep_first_seconds=2 ; Kodi has a bug that causes a segfault if we don't keep the start of the stream, I'll fix that when I get a chance - -detect_method=43 ; 1=black frame, 2=logo, 4=scene change, 8=fuzzy logic, 16=closed captions, 32=aspect ration, 64=silence, 128=cutscenes, 255=all -validate_silence=1 ; Default, set to 0 to force using this clues if selected above. -validate_uniform=1 ; Default, set to 0 to force using this clues (like pure white frames) if blackframe is selected above. -validate_scenechange=1 ; Default, set to 0 to force using this clues if selected above. -verbose=10 ; show a lot of extra info, level 5 is also OK, set to 0 to disable -max_brightness=60 ; frame not black if any pixels checked are greater than this (scale 0 to 255) -test_brightness=40 ; frame not pure black if any pixels checked are greater than this, will check average brightness (scale 0 to 255) -max_avg_brightness=25 ; maximum average brightness for a dim frame to be considered black (scale 0 to 255) 0 means autosetting -max_commercialbreak=600 ; maximum length in seconds to consider a segment a commercial break -min_commercialbreak=25 ; minimum length in seconds to consider a segment a commercial break -max_commercial_size=125 ; maximum time in seconds for a single commercial or multiple commercials if no breaks in between -min_commercial_size=4 ; mimimum time in seconds for a single commercial -min_show_segment_length=250 ; any segment longer than this will be scored towards show. -non_uniformity=500 ; Set to 0 to disable cutpoints based on uniform frames -max_volume=500 ; any frame with sound volume larger than this will not be regarded as black frame -min_silence=12 ; Any deep silence longer than this amount of frames is a possible cutpoint -ticker_tape=0 ; Amount of pixels from bottom to ignore in all processing -logo_at_bottom=0 ; Set to 1 to search only for logo at the lower half of the video, do not combine with subtitle setting -punish=0 ; Compare to average for sum of 1=brightness, 2=uniform 4=volume, 8=silence, 16=schange, set to 0 to disable -punish_threshold=1.3 ; Multiply when amount is above average * punish_threshold -punish_modifier=2 ; When above average * threshold multiply score by this value -intelligent_brightness=0 ; Set to 1 to use a USA specific algorithm to tune some of the settings, not adviced outside the USA -logo_percentile=0.92 ; if more then this amount of logo is found then logo detection will be disabled -logo_threshold=0.75 -punish_no_logo=1 ; Default, set to 0 to avoid show segments without logo to be scored towards commercial -aggressive_logo_rejection=0 -connect_blocks_with_logo=1 ; set to 1 if you want successive blocks with logo on the transition to be regarded as connected, set to 0 to disable -logo_filter=0 ; set the size of the filter to apply to bad logo detection, 4 seems to be a good value. -cut_on_ar_change=1 ; set to 1 if you want to cut also on aspect ratio changes when logo is present, set to 2 to force cuts on aspect ratio changes. set to 0 to disable -delete_show_after_last_commercial=0 ; set to 1 if you want to delete the last block if its a show and after a commercial -delete_show_before_or_after_current=0 ; set to 1 if you want to delete the previous and the next show in the recording, this can lead to the deletion of trailers of next show -delete_block_after_commercial=0 ; set to max size of block in seconds to be discarded, set to 0 to disable -remove_before=0 ; amount of seconds of show to be removed before ALL commercials -remove_after=0 ; amount of seconds of show to be removed after ALL commercials -shrink_logo=5 ; Reduce the duration of the logo with this amount of seconds -after_logo=0 ; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint -padding=0 -ms_audio_delay=5 -volume_slip=40 -skip_b_frames=0 ; Set to 1 to force Comskip to skip frames for higher processing speed. -hardware_decode=0 ; Set to 1 to enable hardware accelerated video decoding, only available in donator version -max_repair_size=200 ; Will repair maximum 200 missing MPEG frames in the timeline, set to 0 to disable repairing for players that don't use PTS. -disable_heuristics=4 ; bit pattern for disabling heuristics, adding 1 disables heristics 1, adding 2 disables heristics 2, adding 4 disables heristics 3, 255 disables all heuristics -delete_logo_file=0 ; set to 1 if you want comskip to tidy up after finishing -output_framearray=0 ; create a big excel file for detailed analysis, set to 0 to disable -output_data=0 ; create a dump of the user data channel, used for CC and XDS (such as V-Chip info). Can be use together with output_framearray to remote debug CC decoding -output_videoredo=0 ; The old videoredo format -output_videoredo3=0 ; The new videoredo v3 format. -output_womble=0 -output_mls=0 ; set to 1 if you want MPeg Video Wizard bookmark file output -output_cuttermaran=0 -output_mpeg2schnitt=0 -output_mpgtx=0 -output_dvrcut=0 -output_zoomplayer_chapter=0 -output_zoomplayer_cutlist=0 -output_edl=1 -output_dvrmstb=0 ; Set to 1 if you're running DVRMS-Toolbox -output_edlx=0 -output_vcf=0 -output_bsplayer=0 -output_btv=0 ; set to 1 if you want Beyond TV chapter cutlist output -output_projectx=0 ; set to 1 if you want ProjectX cutlist output (Xcl) -output_avisynth=0 -output_vdr=1 ; set to 1 if you want Kodi to skipping commercials -output_demux=0 ; set to 1 if you want comskip to demux the mpeg file while scanning -sage_framenumber_bug=0 -sage_minute_bug=0 -live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording -live_tv_retries=4 ; change to 16 when using live_tv in BTV, used for mpeg PS and TS -dvrms_live_tv_retries=300 ; only used for dvr_ms -standoff=0 ; change to 8000000 when using live_tv in BTV - -cuttermaran_options="cut=\"true\" unattended=\"true\" muxResult=\"false\" snapToCutPoints=\"true\" closeApp=\"true\"" -mpeg2schnitt_options="mpeg2schnitt.exe /S /E /R25 /Z %2 %1" -avisynth_options="LoadPlugin(\"MPEG2Dec3.dll\") \nMPEG2Source(\"%s\")\n" -dvrcut_options="dvrcut \"%s.dvr-ms\" \"%s_clean.dvr-ms\" " +; See comskip.txt in the distribution zip file for many settable parameters, read manual.html, tuning.html and debugwindow.html for how to tune and debug comskip +edl_mode=3 ; the mode specified in the generated edl file, 0=cut, 3=commercial break +mkv_time_offset=30.0 ; offset in seconds, to work around what appears to be an Kodi or ffmpeg bug +always_keep_first_seconds=2 ; Kodi has a bug that causes a segfault if we don't keep the start of the stream, I'll fix that when I get a chance + +detect_method=43 ; 1=black frame, 2=logo, 4=scene change, 8=fuzzy logic, 16=closed captions, 32=aspect ration, 64=silence, 128=cutscenes, 255=all +validate_silence=1 ; Default, set to 0 to force using this clues if selected above. +validate_uniform=1 ; Default, set to 0 to force using this clues (like pure white frames) if blackframe is selected above. +validate_scenechange=1 ; Default, set to 0 to force using this clues if selected above. +verbose=10 ; show a lot of extra info, level 5 is also OK, set to 0 to disable +max_brightness=60 ; frame not black if any pixels checked are greater than this (scale 0 to 255) +test_brightness=40 ; frame not pure black if any pixels checked are greater than this, will check average brightness (scale 0 to 255) +max_avg_brightness=25 ; maximum average brightness for a dim frame to be considered black (scale 0 to 255) 0 means autosetting +max_commercialbreak=600 ; maximum length in seconds to consider a segment a commercial break +min_commercialbreak=25 ; minimum length in seconds to consider a segment a commercial break +max_commercial_size=125 ; maximum time in seconds for a single commercial or multiple commercials if no breaks in between +min_commercial_size=4 ; mimimum time in seconds for a single commercial +min_show_segment_length=250 ; any segment longer than this will be scored towards show. +non_uniformity=500 ; Set to 0 to disable cutpoints based on uniform frames +max_volume=500 ; any frame with sound volume larger than this will not be regarded as black frame +min_silence=12 ; Any deep silence longer than this amount of frames is a possible cutpoint +ticker_tape=0 ; Amount of pixels from bottom to ignore in all processing +logo_at_bottom=0 ; Set to 1 to search only for logo at the lower half of the video, do not combine with subtitle setting +punish=0 ; Compare to average for sum of 1=brightness, 2=uniform 4=volume, 8=silence, 16=schange, set to 0 to disable +punish_threshold=1.3 ; Multiply when amount is above average * punish_threshold +punish_modifier=2 ; When above average * threshold multiply score by this value +intelligent_brightness=0 ; Set to 1 to use a USA specific algorithm to tune some of the settings, not adviced outside the USA +logo_percentile=0.92 ; if more then this amount of logo is found then logo detection will be disabled +logo_threshold=0.75 +punish_no_logo=1 ; Default, set to 0 to avoid show segments without logo to be scored towards commercial +aggressive_logo_rejection=0 +connect_blocks_with_logo=1 ; set to 1 if you want successive blocks with logo on the transition to be regarded as connected, set to 0 to disable +logo_filter=0 ; set the size of the filter to apply to bad logo detection, 4 seems to be a good value. +cut_on_ar_change=1 ; set to 1 if you want to cut also on aspect ratio changes when logo is present, set to 2 to force cuts on aspect ratio changes. set to 0 to disable +delete_show_after_last_commercial=0 ; set to 1 if you want to delete the last block if its a show and after a commercial +delete_show_before_or_after_current=0 ; set to 1 if you want to delete the previous and the next show in the recording, this can lead to the deletion of trailers of next show +delete_block_after_commercial=0 ; set to max size of block in seconds to be discarded, set to 0 to disable +remove_before=0 ; amount of seconds of show to be removed before ALL commercials +remove_after=0 ; amount of seconds of show to be removed after ALL commercials +shrink_logo=5 ; Reduce the duration of the logo with this amount of seconds +after_logo=0 ; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint +padding=0 +ms_audio_delay=5 +volume_slip=40 +skip_b_frames=0 ; Set to 1 to force Comskip to skip frames for higher processing speed. +hardware_decode=0 ; Set to 1 to enable hardware accelerated video decoding, only available in donator version +max_repair_size=200 ; Will repair maximum 200 missing MPEG frames in the timeline, set to 0 to disable repairing for players that don't use PTS. +disable_heuristics=4 ; bit pattern for disabling heuristics, adding 1 disables heristics 1, adding 2 disables heristics 2, adding 4 disables heristics 3, 255 disables all heuristics +delete_logo_file=0 ; set to 1 if you want comskip to tidy up after finishing +output_framearray=0 ; create a big excel file for detailed analysis, set to 0 to disable +output_data=0 ; create a dump of the user data channel, used for CC and XDS (such as V-Chip info). Can be use together with output_framearray to remote debug CC decoding +output_videoredo=0 ; The old videoredo format +output_videoredo3=0 ; The new videoredo v3 format. +output_womble=0 +output_mls=0 ; set to 1 if you want MPeg Video Wizard bookmark file output +output_cuttermaran=0 +output_mpeg2schnitt=0 +output_mpgtx=0 +output_dvrcut=0 +output_zoomplayer_chapter=0 +output_zoomplayer_cutlist=0 +output_edl=1 +output_dvrmstb=0 ; Set to 1 if you're running DVRMS-Toolbox +output_edlx=0 +output_vcf=0 +output_bsplayer=0 +output_btv=0 ; set to 1 if you want Beyond TV chapter cutlist output +output_projectx=0 ; set to 1 if you want ProjectX cutlist output (Xcl) +output_avisynth=0 +output_vdr=1 ; set to 1 if you want Kodi to skipping commercials +output_demux=0 ; set to 1 if you want comskip to demux the mpeg file while scanning +sage_framenumber_bug=0 +sage_minute_bug=0 +live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording +live_tv_retries=4 ; change to 16 when using live_tv in BTV, used for mpeg PS and TS +dvrms_live_tv_retries=300 ; only used for dvr_ms +standoff=0 ; change to 8000000 when using live_tv in BTV + +cuttermaran_options="cut=\"true\" unattended=\"true\" muxResult=\"false\" snapToCutPoints=\"true\" closeApp=\"true\"" +mpeg2schnitt_options="mpeg2schnitt.exe /S /E /R25 /Z %2 %1" +avisynth_options="LoadPlugin(\"MPEG2Dec3.dll\") \nMPEG2Source(\"%s\")\n" +dvrcut_options="dvrcut \"%s.dvr-ms\" \"%s_clean.dvr-ms\" " windowtitle="Comskip - %s" \ No newline at end of file diff --git a/packages/addons/service/tvheadend43/source/download.py b/packages/addons/service/tvheadend43/source/download.py index 9be581bc48..63fe77a31b 100644 --- a/packages/addons/service/tvheadend43/source/download.py +++ b/packages/addons/service/tvheadend43/source/download.py @@ -1,56 +1,56 @@ -# SPDX-License-Identifier: GPL-2.0-only -# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) - -import os -import shutil -import urllib.request -import subprocess -import re -import xbmc, xbmcvfs, xbmcgui, xbmcaddon - -ADDON_NAME = xbmcaddon.Addon().getAddonInfo("name") -LS = xbmcaddon.Addon().getLocalizedString - - -def clear_directory(directory): - try: - for file_name in os.listdir(directory): - file_path = os.path.join(directory, file_name) - if os.path.isfile(file_path): - os.unlink(file_path) - elif os.path.isdir(file_path): - shutil.rmtree(file_path) - except Exception as e: - xbmcgui.Dialog().notification(ADDON_NAME, LS(30041), xbmcgui.NOTIFICATION_INFO) - exit(1) - - -def download_and_extract(url, destination, extract_path): - try: - # Download the file - urllib.request.urlretrieve(url, destination) - - # Extract the file to the specified directory, ignoring the root path - subprocess.run(["tar", "xf", destination, "--strip-components=3", "-C", extract_path]) - - except Exception as e: - xbmcgui.Dialog().notification(ADDON_NAME, LS(30040), xbmcgui.NOTIFICATION_INFO) - exit(1) - - -if __name__ == "__main__": - scan_tables_path = os.path.join(xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo("path")), "dvb-scan") - download_url = "https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-LATEST.tar.bz2" - downloaded_file_path = "/tmp/dtv-scan-tables-LATEST.tar.bz2" - - # Clear the contents of the dvb_scan directory - clear_directory(scan_tables_path) - - # Download and extract the file using subprocess - download_and_extract(download_url, downloaded_file_path, scan_tables_path) - - # Clean up the downloaded file - os.remove(downloaded_file_path) - - # Notify download complete - xbmcgui.Dialog().notification(ADDON_NAME, LS(30039), xbmcgui.NOTIFICATION_INFO) +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) + +import os +import shutil +import urllib.request +import subprocess +import re +import xbmc, xbmcvfs, xbmcgui, xbmcaddon + +ADDON_NAME = xbmcaddon.Addon().getAddonInfo("name") +LS = xbmcaddon.Addon().getLocalizedString + + +def clear_directory(directory): + try: + for file_name in os.listdir(directory): + file_path = os.path.join(directory, file_name) + if os.path.isfile(file_path): + os.unlink(file_path) + elif os.path.isdir(file_path): + shutil.rmtree(file_path) + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30041), xbmcgui.NOTIFICATION_INFO) + exit(1) + + +def download_and_extract(url, destination, extract_path): + try: + # Download the file + urllib.request.urlretrieve(url, destination) + + # Extract the file to the specified directory, ignoring the root path + subprocess.run(["tar", "xf", destination, "--strip-components=3", "-C", extract_path]) + + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30040), xbmcgui.NOTIFICATION_INFO) + exit(1) + + +if __name__ == "__main__": + scan_tables_path = os.path.join(xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo("path")), "dvb-scan") + download_url = "https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-LATEST.tar.bz2" + downloaded_file_path = "/tmp/dtv-scan-tables-LATEST.tar.bz2" + + # Clear the contents of the dvb_scan directory + clear_directory(scan_tables_path) + + # Download and extract the file using subprocess + download_and_extract(download_url, downloaded_file_path, scan_tables_path) + + # Clean up the downloaded file + os.remove(downloaded_file_path) + + # Notify download complete + xbmcgui.Dialog().notification(ADDON_NAME, LS(30039), xbmcgui.NOTIFICATION_INFO)