
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