(self, pack)
| 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) |
nothing calls this directly
no test coverage detected