MCPcopy Index your code
hub / github.com/pyload/pyload / package_finished

Method package_finished

module/plugins/hooks/MergeFiles.py:27–76  ·  view source on GitHub ↗
(self, pack)

Source from the content-addressed store, hash-verified

25
26 @threaded
27 def package_finished(self, pack):
28 files = {}
29 fid_dict = {}
30 for fid, data in pack.getChildren().items():
31 if re.search("\.\d{3}$", data['name']):
32 if data['name'][:-4] not in files:
33 files[data['name'][:-4]] = []
34 files[data['name'][:-4]].append(data['name'])
35 files[data['name'][:-4]].sort()
36 fid_dict[data['name']] = fid
37
38 dl_folder = self.pyload.config.get("general", "download_folder")
39
40 if self.pyload.config.get("general", "folder_per_package"):
41 dl_folder = fsjoin(dl_folder, pack.folder)
42
43 for name, file_list in files.items():
44 self.log_info(_("Starting merging of"), name)
45
46 with open(fsjoin(dl_folder, name), "wb") as final_file:
47 for splitted_file in file_list:
48 self.log_debug("Merging part", splitted_file)
49
50 pyfile = self.pyload.files.getFile(fid_dict[splitted_file])
51
52 pyfile.setStatus("processing")
53
54 try:
55 with open(fsjoin(dl_folder, splitted_file), "rb") as s_file:
56 size_written = 0
57 s_file_size = int(os.path.getsize(os.path.join(dl_folder, splitted_file)))
58 while True:
59 f_buffer = s_file.read(self.BUFFER_SIZE)
60 if f_buffer:
61 final_file.write(f_buffer)
62 size_written += self.BUFFER_SIZE
63 pyfile.setProgress((size_written * 100) / s_file_size)
64 else:
65 break
66 self.log_debug("Finished merging part", splitted_file)
67
68 except Exception, e:
69 self.log_error(e, trace=True)
70
71 finally:
72 pyfile.setProgress(100)
73 pyfile.setStatus("finished")
74 pyfile.release()
75
76 self.log_info(_("Finished merging of"), name)

Callers

nothing calls this directly

Calls 15

fsjoinFunction · 0.85
itemsMethod · 0.80
getChildrenMethod · 0.80
log_infoMethod · 0.80
log_debugMethod · 0.80
setStatusMethod · 0.80
joinMethod · 0.80
setProgressMethod · 0.80
log_errorMethod · 0.80
_Function · 0.50
searchMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected