cyberjock / mkvstrip

Python script that acts like a front end for mkvtoolnix to remove excess audio and subtitle streams from mkv files as well as correct title information.
GNU General Public License v3.0
7 stars 11 forks source link

Not working with mkvtoolnix 8 #2

Open alfaromora opened 8 years ago

alfaromora commented 8 years ago

Please help

cyberjock commented 8 years ago

Can you be more specific on what the problem is? Asking for help is a bit too vague.

thezoggy commented 7 years ago

it's because the regex used to detect the video/audio/subs/etc doesnt work with the output anymore due to it changing..

Track ID 0: video (MPEG-4p10/AVC/h.264) [codec_id:V_MPEG4/ISO/AVC codec_private_data:0164001fffe100192764001fac523014016effc00040005a808080db615af7be0201000428de09cb codec_private_length:40 default_duration:41708375 default_track:1 display_dimensions:1280x720 enabled_track:1 forced_track:0 language:eng minimum_timestamp:0 number:1 packetizer:mpeg4_p10_videopixel_dimensions:1280x720 track_name:XXXXXXXXXXXXX uid:11750296354828682166]
Track ID 1: audio (AC-3/E-AC-3) [audio_channels:6 audio_sampling_frequency:48000 codec_id:A_AC3 codec_private_length:0 default_duration:32000000 default_track:1 enabled_track:1 forced_track:0 language:eng minimum_timestamp:0 number:2 track_name:XXXXXXXXXXXXX uid:18084936156969237175]
Track ID 2: subtitles (SubRip/SRT) [codec_id:S_TEXT/UTF8 codec_private_length:0 default_track:1 enabled_track:1 forced_track:0 language:eng minimum_timestamp:1434000000 number:3 text_subtitles:1 uid:4137054644398264491]
Track ID 3: subtitles (SubRip/SRT) [codec_id:S_TEXT/UTF8 codec_private_length:0 default_track:0 enabled_track:1 forced_track:0 language:eng minimum_timestamp:1434000000 number:4 text_subtitles:1 track_name:SDH uid:12140749778867340212]

the track_name is the biggest pita, but for my purposes I didn't care about it so I updated the regex and removed track_name from the class.. but then added other flags for subs that matter:

class Track(object):
    def __init__(self, id, language, default=None, enabled=None, forced=None):
        super(Track, self).__init__()
        self.id = int(id)
        self.language = language
        self.default = default
        self.enabled = enabled
        self.forced = forced
VIDEO_RE = re.compile(r'^Track ID (?P<id>\d+): video \([\w\/\.-]+\) \[.* default_track:(?P<default>[01]{1}) display_dimensions:\d+x\d+ enabled_track:(?P<enabled>[01]{1}) forced_track:(?P<forced>[01]{1}) language:(?P<language>[a-z]{3}) .*\]')
AUDIO_RE = re.compile(r'^Track ID (?P<id>\d+): audio \([\w\/\.-]+\) \[.* default_track:(?P<default>[01]{1}) enabled_track:(?P<enabled>[01]{1}) forced_track:(?P<forced>[01]{1}) language:(?P<language>[a-z]{3}) .*\]')
SUBTITLE_RE = re.compile(r'^Track ID (?P<id>\d+): subtitles \([\w\/\.-]+\) \[.* default_track:(?P<default>[01]{1}) enabled_track:(?P<enabled>[01]{1}) forced_track:(?P<forced>[01]{1}) language:(?P<language>[a-z]{3}) .*\]')

but then I found out that the whole --identify-verbose argument is being depreciated and going away soon in favor of just doing --identification-format json --identify which makes it so much better for developers as you dont have to play the regex game. so while majority of the code can be removed/simplified.. it still requires a rewrite to make it just work after swapping out the cmd

thierrybla commented 5 years ago

Still doesn't work properly it keeps saying Failed to identify /mnt/video/Series/filename.mkv to all my mkv files.