86
88
self.loader.loadingProgress.connect(self.display_progress)
87
89
self.loader.loadingFinished.connect(self.on_downloading_finished)
88
90
self.parsingFinished.connect(self.parse_arte_tv)
91
self.mergingFinished.connect(self.on_merging_finished)
90
93
def config_parser(self):
91
94
"""Configure the main pages parser.
973
976
self.is_loading = True
974
977
Thread(target=self.loader.download_mp4).start()
975
978
if self.audio_link:
979
self.current_item = video
976
980
self.audio_target = self.core.get_target_path(
977
981
self.core.cfg["videos_folder"])
978
982
self.load_audio_file(self.audio_link, self.audio_target)
985
989
lgg.info('Loading error: %s' % self.file_size)
988
def load_audio_file(self, url, fname)
992
def load_audio_file(self, url, fname):
989
993
audio_loader = Loader()
990
994
size = audio_loader.config_loader(url, fname)
991
995
if not isinstance(size, int):
1013
1017
lgg.info("Error when reading m3u8:\n\t%s" % why)
1016
def get_audio_link((self, item):
1020
def get_audio_link(self, item):
1017
1021
base = item.streams[item.quality]['base_url']
1018
1022
if not base.endswith("/"):
1021
1025
page = base + item.streams[item.quality]["audio"]
1022
lgg.info("Get m3u8 audio file: \n %s" % page
1026
lgg.info("Get m3u8 audio file: \n %s" % page)
1024
1028
data = m3u8.load(page)
1025
1029
base = data.base_uri
1137
1140
self.handle_downloading_error()
1140
merged = self.merge_video_audio(fname)
1143
self.merge_video_audio(fname)
1145
def on_merging_finished(self, merged, fname=None):
1142
1147
os.rename(merged, self.video_loaded)
1143
1148
lgg.info('File renamed: %s' % os.path.basename(self.video_loaded))
1145
1150
lgg.warning("Can't rename %s" % self.video_loaded)
1146
1151
lgg.warning("Reason: %s" % why)
1148
self.check_file_size()
1149
self.copy_summary(item, self.video_loaded)
1150
self.copy_thumbnail(item, self.video_loaded)
1153
if not fname is None:
1156
os.remove(self.audio_target)
1157
except Exception as why:
1158
lgg.warning("Can't remove temp file: %s" % why)
1160
self.audio_target = False
1161
#self.check_file_size()
1162
self.copy_summary(self.current_item, self.video_loaded)
1163
self.copy_thumbnail(self.current_item, self.video_loaded)
1164
self.ui.tv_basket_buttons.set_merging_message(False)
1151
1165
if self.ui.tv_basket.lst_movies:
1152
1166
self.start_download()
1154
def self.merge_video_audio(self, video)
1168
def merge_video_audio(self, video):
1155
1169
if not self.audio_target:
1170
self.on_merging_finished(video)
1158
fname = self.core.get_target_path(self.core.cfg["videos_folder"])
1159
cmd = ["ffmpeg", "-i", video, "-i", self.audio_target, "-c:v",
1160
"copy", "-c:a", "aac", fname]
1161
r = subprocess.Popen(cmd, universal_newlines=True,
1162
stdout=subprocess.PIPE,
1163
stderr=subprocess.STDOUT).communicate()
1173
self.ui.tv_basket_buttons.set_merging_message(True)
1175
outf = self.core.get_target_path(self.core.cfg["videos_folder"])
1177
cmd = ["ffmpeg", "-i", video, "-i", self.audio_target, "-c:v",
1178
"copy", "-c:a", "aac", outf]
1179
r = subprocess.Popen(cmd, universal_newlines=True,
1180
stdout=subprocess.PIPE,
1181
stderr=subprocess.STDOUT).communicate()
1182
self.is_loading = False
1183
self.mergingFinished.emit(outf, video)
1184
Thread(target=merge).start()
1166
1186
def check_file_size(self):
1167
1187
if self.loading_aborted: