Move some heavy lifting into new ingest_video.
This commit is contained in:
		
							parent
							
								
									ce028e4ebb
								
							
						
					
					
						commit
						dfa5bb2390
					
				
					 2 changed files with 30 additions and 7 deletions
				
			
		|  | @ -48,13 +48,7 @@ class Channel(Base): | ||||||
|         video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist) |         video_generator = self.ycdldb.youtube.get_playlist_videos(self.uploads_playlist) | ||||||
|         for video in video_generator: |         for video in video_generator: | ||||||
|             seen_ids.add(video.id) |             seen_ids.add(video.id) | ||||||
|             status = self.ycdldb.insert_video(video, commit=False) |             status = self.ycdldb.ingest_video(video, commit=False) | ||||||
| 
 |  | ||||||
|             video = status['video'] |  | ||||||
|             if status['new'] and self.automark not in [None, "pending"]: |  | ||||||
|                 if self.automark == 'downloaded': |  | ||||||
|                     self.ycdldb.download_video(video.id, commit=False) |  | ||||||
|                 video.mark_state(self.automark, commit=False) |  | ||||||
| 
 | 
 | ||||||
|             if not (force or status['new']): |             if not (force or status['new']): | ||||||
|                 break |                 break | ||||||
|  |  | ||||||
|  | @ -326,6 +326,35 @@ class YCDLDBVideoMixin: | ||||||
| 
 | 
 | ||||||
|         return results |         return results | ||||||
| 
 | 
 | ||||||
|  |     def ingest_video(self, video, commit=True): | ||||||
|  |         ''' | ||||||
|  |         Call `insert_video`, and additionally use the channel's automark to | ||||||
|  |         mark this video's state. | ||||||
|  |         ''' | ||||||
|  |         status = self.insert_video(video, commit=False) | ||||||
|  | 
 | ||||||
|  |         if not status['new']: | ||||||
|  |             return status | ||||||
|  | 
 | ||||||
|  |         video = status['video'] | ||||||
|  |         author = video.author | ||||||
|  | 
 | ||||||
|  |         if not author: | ||||||
|  |             return status | ||||||
|  | 
 | ||||||
|  |         if author.automark in [None, 'pending']: | ||||||
|  |             return status | ||||||
|  | 
 | ||||||
|  |         if author.automark == 'downloaded': | ||||||
|  |             self.download_video(video.id, commit=False) | ||||||
|  | 
 | ||||||
|  |         video.mark_state(author.automark, commit=False) | ||||||
|  | 
 | ||||||
|  |         if commit: | ||||||
|  |             self.commit() | ||||||
|  | 
 | ||||||
|  |         return status | ||||||
|  | 
 | ||||||
|     def insert_video(self, video, *, add_channel=True, commit=True): |     def insert_video(self, video, *, add_channel=True, commit=True): | ||||||
|         if not isinstance(video, ytapi.Video): |         if not isinstance(video, ytapi.Video): | ||||||
|             video = self.youtube.get_video(video) |             video = self.youtube.get_video(video) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue