Compare commits
	
		
			3 Commits
		
	
	
		
			88d9d15496
			...
			556d88d73a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 556d88d73a | ||
|  | af52c80a8e | ||
|  | 04d23ca1b2 | 
							
								
								
									
										20
									
								
								removeads.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								removeads.py
									
									
									
									
									
								
							| @@ -1,14 +1,13 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
|  |  | ||||||
| import argparse | import argparse | ||||||
| import locale |  | ||||||
| import re | import re | ||||||
| from sys import exit | from sys import exit | ||||||
| from datetime import datetime,timedelta,time | from datetime import datetime,timedelta,time | ||||||
| import coloredlogs, logging | import coloredlogs, logging | ||||||
| from functools import cmp_to_key | from functools import cmp_to_key | ||||||
| from subprocess import Popen, PIPE | from subprocess import Popen, PIPE | ||||||
| from os import read, write, lseek, pipe, set_inheritable, memfd_create, SEEK_SET, close, unlink | from os import read, write, lseek, pipe, set_inheritable, memfd_create, SEEK_SET, close, unlink, fstat, ftruncate | ||||||
| import os.path | import os.path | ||||||
| from io import BytesIO, TextIOWrapper | from io import BytesIO, TextIOWrapper | ||||||
| import json | import json | ||||||
| @@ -29,7 +28,7 @@ def checkRequiredTools(): | |||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|     allOptionalTools = True |     allOptionalTools = True | ||||||
|     paths = {} |     paths = {} | ||||||
|     required = ['ffmpeg', 'ffprobe', 'mkvmerge'] |     required = ['ffmpeg', 'ffprobe', 'mkvmerge', 'mkvinfo'] | ||||||
|     optional = ['mkvextract', 'vobsubocr','tesseract'] |     optional = ['mkvextract', 'vobsubocr','tesseract'] | ||||||
|     for tool in required: |     for tool in required: | ||||||
|         path = which(tool) |         path = which(tool) | ||||||
| @@ -191,7 +190,7 @@ def getFormat(ffprobe, inputFile): | |||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|          |          | ||||||
|     infd = inputFile.fileno() |     infd = inputFile.fileno() | ||||||
|     inputFile.seek(0,0) |     lseek(infd, 0, SEEK_SET) | ||||||
|     set_inheritable(infd, True) |     set_inheritable(infd, True) | ||||||
|     with Popen([ffprobe, '-loglevel', 'quiet', '-show_format', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: |     with Popen([ffprobe, '-loglevel', 'quiet', '-show_format', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: | ||||||
|         out, _ = ffprobe.communicate() |         out, _ = ffprobe.communicate() | ||||||
| @@ -207,7 +206,7 @@ def getStreams(ffprobe, inputFile): | |||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|          |          | ||||||
|     infd = inputFile.fileno() |     infd = inputFile.fileno() | ||||||
|     inputFile.seek(0,0) |     lseek(infd, 0, SEEK_SET) | ||||||
|     set_inheritable(infd, True) |     set_inheritable(infd, True) | ||||||
|     with Popen([ffprobe, '-loglevel', 'quiet', '-show_streams', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: |     with Popen([ffprobe, '-loglevel', 'quiet', '-show_streams', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: | ||||||
|         out, _ = ffprobe.communicate() |         out, _ = ffprobe.communicate() | ||||||
| @@ -484,10 +483,10 @@ def extractMKVPart(mkvmerge, inputFile, outputFile, begin, end): | |||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|      |      | ||||||
|     logger.info('Extract video between I-frames at %s and %s' % (begin,end)) |     logger.info('Extract video between I-frames at %s and %s' % (begin,end)) | ||||||
|     inputFile.seek(0,0) |  | ||||||
|     outputFile.seek(0,0) |  | ||||||
|     infd = inputFile.fileno() |     infd = inputFile.fileno() | ||||||
|     outfd = outputFile.fileno() |     outfd = outputFile.fileno() | ||||||
|  |     lseek(infd, 0, SEEK_SET) | ||||||
|  |     lseek(outfd, 0, SEEK_SET) | ||||||
|     set_inheritable(infd, True) |     set_inheritable(infd, True) | ||||||
|     set_inheritable(outfd, True) |     set_inheritable(outfd, True) | ||||||
|     warnings = [] |     warnings = [] | ||||||
| @@ -519,8 +518,9 @@ def extractMKVPart(mkvmerge, inputFile, outputFile, begin, end): | |||||||
| def extractPictures(ffmpeg, inputFile, begin, nbFrames, width=640, height=480): | def extractPictures(ffmpeg, inputFile, begin, nbFrames, width=640, height=480): | ||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|          |          | ||||||
|     inputFile.seek(0,0) |  | ||||||
|     infd = inputFile.fileno() |     infd = inputFile.fileno() | ||||||
|  |     lseek(infd, 0, SEEK_SET) | ||||||
|     outfd = memfd_create('pictures', flags=0) |     outfd = memfd_create('pictures', flags=0) | ||||||
|     set_inheritable(outfd, True) |     set_inheritable(outfd, True) | ||||||
|     # PPM header |     # PPM header | ||||||
| @@ -550,9 +550,9 @@ def extractPictures(ffmpeg, inputFile, begin, nbFrames, width=640, height=480): | |||||||
| def extractSound(ffmpeg, inputFile, begin, outputFileName, packetDuration, subChannel=0, nbPackets=0, sampleRate=48000, nbChannels=2): | def extractSound(ffmpeg, inputFile, begin, outputFileName, packetDuration, subChannel=0, nbPackets=0, sampleRate=48000, nbChannels=2): | ||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|      |      | ||||||
|     inputFile.seek(0,0) |  | ||||||
|     outfd = memfd_create(outputFileName, flags=0) |     outfd = memfd_create(outputFileName, flags=0) | ||||||
|     infd = inputFile.fileno() |     infd = inputFile.fileno() | ||||||
|  |     lseek(infd, 0, SEEK_SET) | ||||||
|     set_inheritable(infd, True) |     set_inheritable(infd, True) | ||||||
|     set_inheritable(outfd, True) |     set_inheritable(outfd, True) | ||||||
|     sound = bytes() |     sound = bytes() | ||||||
| @@ -848,8 +848,6 @@ def extractSubTitleTrack(mkvmerge, inputFileName, index, lang): | |||||||
| def main(): | def main(): | ||||||
|     logger = logging.getLogger(__name__) |     logger = logging.getLogger(__name__) | ||||||
|     coloredlogs.install() |     coloredlogs.install() | ||||||
|     # Fix the language used by tools to print their messages to make the script independant of environment. |  | ||||||
|     locale.setlocale(locale.LC_ALL, 'C') |  | ||||||
|     parser = argparse.ArgumentParser() |     parser = argparse.ArgumentParser() | ||||||
|     parser.add_argument("-i", "--input", dest='inputFile', type=str, required=True, help="Input file to process (can be .ts, .mp4 or .mkv).") |     parser.add_argument("-i", "--input", dest='inputFile', type=str, required=True, help="Input file to process (can be .ts, .mp4 or .mkv).") | ||||||
|     parser.add_argument("-o", "--output", dest='outputFile', type=str, required=True, help="Output MKV file to produce.") |     parser.add_argument("-o", "--output", dest='outputFile', type=str, required=True, help="Output MKV file to produce.") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user