2020-06-02 00:05:02 +12:00
|
|
|
import os
|
2021-02-07 01:29:13 +13:00
|
|
|
import pathlib
|
2020-06-02 00:05:02 +12:00
|
|
|
import subprocess
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
from src.downloaders.downloaderUtils import getFile
|
2020-06-02 00:05:02 +12:00
|
|
|
from src.utils import GLOBAL
|
|
|
|
from src.utils import printToFile as print
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
class VReddit:
|
2021-02-07 01:29:13 +13:00
|
|
|
def __init__(self, directory: pathlib.Path, post: dict):
|
2020-06-02 00:05:02 +12:00
|
|
|
extension = ".mp4"
|
2021-02-25 22:32:06 +13:00
|
|
|
if not os.path.exists(directory):
|
|
|
|
os.makedirs(directory)
|
2020-06-02 00:05:02 +12:00
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
filename = GLOBAL.config['filename'].format(**post) + extension
|
2021-02-06 21:35:50 +13:00
|
|
|
short_filename = post['POSTID'] + extension
|
2020-06-02 00:05:02 +12:00
|
|
|
|
|
|
|
try:
|
2021-02-06 21:35:50 +13:00
|
|
|
fnull = open(os.devnull, 'w')
|
|
|
|
subprocess.call("ffmpeg", stdout=fnull, stderr=subprocess.STDOUT)
|
|
|
|
except Exception:
|
|
|
|
getFile(filename, short_filename, directory, post['CONTENTURL'])
|
2020-06-02 00:05:02 +12:00
|
|
|
print("FFMPEG library not found, skipping merging video and audio")
|
|
|
|
else:
|
2021-02-06 21:35:50 +13:00
|
|
|
video_name = post['POSTID'] + "_video"
|
|
|
|
video_url = post['CONTENTURL']
|
|
|
|
audio_name = post['POSTID'] + "_audio"
|
|
|
|
audio_url = video_url[:video_url.rfind('/')] + '/DASH_audio.mp4'
|
2020-06-02 00:05:02 +12:00
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
print(directory, filename, sep="\n")
|
|
|
|
|
2021-02-06 21:35:50 +13:00
|
|
|
getFile(video_name, video_name, directory, video_url, silent=True)
|
|
|
|
getFile(audio_name, audio_name, directory, audio_url, silent=True)
|
2020-06-02 00:05:02 +12:00
|
|
|
try:
|
2021-02-06 21:35:50 +13:00
|
|
|
self._mergeAudio(video_name, audio_name, filename, short_filename, directory)
|
2020-06-02 00:05:02 +12:00
|
|
|
except KeyboardInterrupt:
|
|
|
|
os.remove(directory / filename)
|
2021-02-06 21:35:50 +13:00
|
|
|
os.remove(directory / audio_name)
|
|
|
|
os.rename(directory / video_name, directory / filename)
|
2020-06-02 00:05:02 +12:00
|
|
|
|
|
|
|
@staticmethod
|
2021-02-07 01:29:13 +13:00
|
|
|
def _mergeAudio(
|
|
|
|
video: pathlib.Path,
|
|
|
|
audio: pathlib.Path,
|
|
|
|
filename: pathlib.Path,
|
|
|
|
short_filename,
|
|
|
|
directory: pathlib.Path):
|
2021-02-06 21:35:50 +13:00
|
|
|
input_video = str(directory / video)
|
|
|
|
input_audio = str(directory / audio)
|
|
|
|
|
|
|
|
fnull = open(os.devnull, 'w')
|
|
|
|
cmd = "ffmpeg -i {} -i {} -c:v copy -c:a aac -strict experimental {}".format(
|
|
|
|
input_audio, input_video, str(directory / filename))
|
|
|
|
subprocess.call(cmd.split(), stdout=fnull, stderr=subprocess.STDOUT)
|
2020-06-02 00:05:02 +12:00
|
|
|
|
|
|
|
os.remove(directory / video)
|
2021-02-25 22:32:06 +13:00
|
|
|
os.remove(directory / audio)
|