For years I used the TVGuardian
device to filter profanity from my movies, but it did not have the
ability to handle all DVDs and Blu-ray movies due to the lack of
closed captioning. Like many others I too looked for a free
solution and stumbled upon the "Mute Profanity" plugin from Scott
Brown, used in Kodi Media Player (formally XBMC). This is my
attempt to share knowledge and processes to make the default Kodi
player mute, skip and superimpose a solid black screen when
applicable. Using these three options it is possible to mute
audio (profanity), skip video (inappropriate scenes) and cover
video while retaining audio by using subtitles vector shapes
(cover inappropriate scenes while still listening to the story
line). The use of the Mute Profanity plugin makes automating
a lot of this possible by creating Edit Decision List (edl) file
to control the mute and skip functions for each movie. The web
page instructions are from a Windows 10 client, but the resultant
files can be used with the movie on any supported Kodi system.
Download my edl files
available for your use.
Note: The edl skip functionality is broken in the
current version of Kodi (version 18.x). I have successfully
tested this functionality in version 16.x. Further
development of version 18.x should address the issue.
Mute
Profanity - Kodi Forum
Mute
Profanity - Github
Mute
Profanity plugin download (zip file). Install through Kodi
system plugin menu
Use the following link to configure Kodi with the plugin (this is
where I started). Great guide for setting up Kodi and the
plugin.
Zeilk
Creative - Remove Profanity From Movies The Easy Way!
PDF of above link.
Kodi uses a Edit
Decision List (EDL). Basically it is a text file that
is named the same as the movie with an extension of .edl. The
following notation is used:
[start time] [end time] [action]
Start and end times can be in:
Seconds:
95.728
00095.7
00095.728
4276.6
04276.600
Or timecode:
00:01:35.728
Note: Do not use a comma or alternate
character for the period before the last three zeros in a timecode
entry. - 00:00:00.000
Note: Do not mix
seconds and timecode entries on the same line:
04276.600 01:59:35.728 1 #THESE TIME STAMPS ARE
MIXING NOTATIONS AND ARE INVALID TOGETHER
Actions may be "0" for skip or "1" for mute. The action will be performed between the two time-frames
The sequence of each time-frame and action do not have to be in ascending order (it just makes it easier to read). In fact I like to keep all my video skips at the end of my file in timecode format.
Note: Mute and Skip
time-frames can not overlap otherwise no action will occur
Comments at the beginning of a line can be included with a hash
symbol (pound symbol #) and a space before the comment text
Comments after the action simply use a hash symbol and then the
text
# EDITS
00:00:00.042 00:00:34.456
0 #SKIPPING INTRO
01:04:23.849 01:05:12.054
0 #sex scene
# REV_1
In short, you could watch your movie and then use accurate time
stamps to mute and skip content. Name the file exactly the
same as your movie file but with the .edl extension and keep the
file in the same location as the movie file.
The Mute Profanity plugin compares a filter.txt file (%AppData%\Kodi\addons\mute-profanity-master\resources\filter.txt)
that contains profanity words with the subtitle file. Based
on the timestamps in the subtitle file, it calculates where the
filtered word probably is.
The plugin is not used for the playback of a movie but is used
for automating the creation of the edl file that controls what the
player does (skip\mute). I use the plug in on my computer
where I edit the movie but not on my Android media player where I
watch the edited movies that is hooked to my TV.
It is my experience that the results from the Mute
Profanity plugin can be between 30%-99% accurate. Why the
big difference? Its really not the plugins fault, but is
wholly dependent upon the subtitle file that is used. Since
the subtitle file is downloaded from opensubtitles.org , it is
dependent upon the work of other individuals. Issues can
arise from any of the following:
If you have not configured Kodi nor the plugin, please use Zeilk Creative - Remove Profanity From Movies The Easy Way! tutorial.
In the plugin settings, unselect the configuration option "Replace
found profanity with **** in subtitle file". This is
necessary to keep the profanity in the subtitle file for reuse by
other tools or re-running the plugin after making adjustments.
For your movie to show up in the Mute Profanity movie list, it must have gone through the scraping process so that it retrieves the correct movie database information. After selecting your movie to be processed, the plugin first looks for an existing subtitle file with the same as the movie before attempting to download one.
When the plugin has completed its process successfully, you will find a subtitle (.srt) and a edit decision list (.edl) file with the same name as the movie, in the same location as the movie. If the downloaded subtitle file is accurate the edl file will be good. Verify that the subtitles file is accurate by playing the movie in your favorite player that can display subtitles. Verify the following:
This completes the use of the Mute Profanity plugin portion
Open the edl file in a text editor and look for any false
positive entries. These may be correct uses of god, hell,
balls etc. Since the plugin only identifies the word that
was blocked, it can be difficult to know the context without
searching the subtitle file for each occurrence. I created a
PowerShell script (_ProfanityContext.ps1)
that will use the same filter.txt file as the plugin. It
will search and create a report for each line where the word was
found. You can find the script in the PowerShell Scripts section.
The following is an example of the script's output:
----------- jesus ---- 8959 Holy mother of Jesus! 11125 Baby Jesus, help us! ----------- lord ---- 3411 That's right, Sister. Call the Lord and tell 7293 The Lord have truly bless you all 11123 Oh, dear Lord, please! ----------- god ---- 157 Goddamn! 1863 God da... 3697 My God. 4097 Goddamn, man! |
If you are aware of any scenes in the movie that you want to
skip, you will need to find them and manually add this
information. See below.
For exact timestamps, I use the free HPC-HC video player. You
can customize the hot keys to display the time stamps that can be
copy\pasted to the edl file. The "Go To" function can
configured by using the "View" Menu, "Options" item. Under
"Player|Keys" option, configure the "Key" combination you want to
use to bring up the timestamp.
If the "Go To" hot key is set to Ctrl+G, I would perform the
following:
00:21:15.983
00:22:38.732 0
#Sex scene |
This process took me the longest and is the most time consuming,
but also the most important.
Sometimes it is necessary to simply cover the screen if you do
not want to skip the scene (plot dependent) and hear the audio.
Note: Keep only your ass
files with your movie file. You will want to store your srt
files in another location away from the movie file or else they
will automatically display when an ass file is not present.
Note: Anyone made aware of how
this works can easily disable subtitles to avoid the censorship.
Below you will find a link to my edl files. 99% of my files
are based on 23.97 fps (NTSC - Region 1\A). Even if your
movie is at the same speed, it is possible that the timestamps may
not match up (differences in source and possible dropped frames in
the encoding process to but mention a few). To help with
this situation, I have also included the subtitle file (for
comparison) and a "MediaInfo"
file that you can use to compare against a "MediaInfo" file
generated from your movie file.
If you find there is a constant discrepancy between your movie and my edl, you can use a PowerShell script (_EdlOffSetAdjuster.ps1) to shift all of the edl time entries forwards or backwards. You can find the script in the PowerShell Scripts section.
Download
a comma delimited file (.csv) of all of my edl files
Download
all the edl files
Browse
for a single movie
All PowerShell scripts were created and tested in Windows 10
(PowerShell v5). These are available to you at your own
risk. I will take no responsibility for lost data. Be
diligent and backup your edl files before using any of these.
_EdlCurseJumperCreator.ps1
_EdlOffSetAdjuster.ps1
_ProfanityContext.ps1
_TimeCodeConverter.ps1
Note: The script strictly looks for entries between the beginning and ending comments for Mute Profanity and assumes all entries are sequential.
Usage:
Description:
This PowerShell script purpose is to shift the timestamp values in
a edl forward or backwards..
For example, you have a edl file based off of a movie from a DVD
source and now you have the same movie from a Blu-ray
source. When you watch the movie you notice that the mutes
and skips are off by about one second. Rather than editing every
entry in the file, use this script to shift the timestamps forward
or backwards based on a value in seconds.
Usage:
Note: The script will handle
either notations in seconds and timecode (00:01:34.843) formats
Description:
I created this script because the Mute Profanity plugin gives me
the filtered word in the comment section of the edl, but not the
context of the the sentence where the word was found. This
script will use the same filter.txt file as the plugin; search and
create a text file report for each line where the word was found
in the subtitles file (.srt). The following is an example of
the script's output:
----------- jesus ---- 8959 Holy mother of Jesus! 11125 Baby Jesus, help us! ----------- lord ---- 3411 That's right, Sister. Call the Lord and tell 7293 The Lord have truly bless you all 11123 Oh, dear Lord, please! ----------- god ---- 157 Goddamn! 1863 God da... 3697 My God. 4097 Goddamn, man! |
Usage:
Description:
This script will toggle between timeframe notations of seconds
(that Mute Profanity plugin uses) and timecode (that humans use -
00:32:35.943). The output will automatically be placed on
the clipboard (in memory) so that it can be pasted into any
application.
Usage:
Mute Profanity Filter.txt - Copy of the Mute Profanity plugin file that I use (added entries). Since I have all my Mute Profanity "blocking severity" settings all configured to "Very High" the numbers in the filter.txt are not used (since I block them all). You may want to adjust the numbers if this is important to you.
EditedForContent_Subtitle_Template.ass - This is a template file for the "Aegisub" application in order to create black boxes to cover the screen.
Documentation
form (template) - Print this form and keep it close
when watching a movie. Pause the movie when profanity or a
inappropriate scene is experienced that you want to clean
up. Use the form to document the movie; timestamp; reason
and come back to edit your movie at a later time.
Last updated 02/25/2019