kopia lustrzana https://github.com/ytdl-org/youtube-dl
				
				
				
			[downloader/fragment] More smooth calculations
`downloaded_bytes` is now updated on each fragment progress hook invocationpull/8215/merge
							rodzic
							
								
									9cb1a06b6c
								
							
						
					
					
						commit
						709185a264
					
				|  | @ -58,6 +58,11 @@ class FragmentFD(FileDownloader): | |||
|             'frag_count': total_frags, | ||||
|             'filename': ctx['filename'], | ||||
|             'tmpfilename': ctx['tmpfilename'], | ||||
|             # Total complete fragments downloaded so far in bytes | ||||
|             '_complete_frags_downloaded_bytes': 0, | ||||
|             # Amount of fragment's bytes downloaded by the time of the previous | ||||
|             # frag progress hook invocation | ||||
|             '_prev_frag_downloaded_bytes': 0, | ||||
|         } | ||||
|         start = time.time() | ||||
|         ctx['started'] = start | ||||
|  | @ -67,22 +72,27 @@ class FragmentFD(FileDownloader): | |||
|                 return | ||||
| 
 | ||||
|             frag_total_bytes = s.get('total_bytes') or 0 | ||||
|             if s['status'] == 'finished': | ||||
|                 state['downloaded_bytes'] += frag_total_bytes | ||||
|                 state['frag_index'] += 1 | ||||
| 
 | ||||
|             estimated_size = ( | ||||
|                 (state['downloaded_bytes'] + frag_total_bytes) / | ||||
|                 (state['_complete_frags_downloaded_bytes'] + frag_total_bytes) / | ||||
|                 (state['frag_index'] + 1) * total_frags) | ||||
|             time_now = time.time() | ||||
|             state['total_bytes_estimate'] = estimated_size | ||||
|             state['elapsed'] = time_now - start | ||||
| 
 | ||||
|             if s['status'] != 'finished': | ||||
|             if s['status'] == 'finished': | ||||
|                 state['frag_index'] += 1 | ||||
|                 state['downloaded_bytes'] += frag_total_bytes - state['_prev_frag_downloaded_bytes'] | ||||
|                 state['_complete_frags_downloaded_bytes'] = state['downloaded_bytes'] | ||||
|                 state['_prev_frag_downloaded_bytes'] = 0 | ||||
|             else: | ||||
|                 frag_downloaded_bytes = s['downloaded_bytes'] | ||||
|                 state['downloaded_bytes'] += frag_downloaded_bytes - state['_prev_frag_downloaded_bytes'] | ||||
|                 state['eta'] = self.calc_eta( | ||||
|                     start, time_now, estimated_size, | ||||
|                     state['downloaded_bytes'] + s['downloaded_bytes']) | ||||
|                     state['downloaded_bytes']) | ||||
|                 state['speed'] = s.get('speed') | ||||
|                 state['_prev_frag_downloaded_bytes'] = frag_downloaded_bytes | ||||
|             self._hook_progress(state) | ||||
| 
 | ||||
|         ctx['dl'].add_progress_hook(frag_progress_hook) | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Sergey M․
						Sergey M․