Add get_things_by_sql.
This commit is contained in:
		
							parent
							
								
									9f5726e5d3
								
							
						
					
					
						commit
						1e59d7be06
					
				
					 1 changed files with 15 additions and 0 deletions
				
			
		|  | @ -93,6 +93,15 @@ class YCDLDBCacheManagerMixin: | ||||||
|         thing_cache[thing_id] = thing |         thing_cache[thing_id] = thing | ||||||
|         return thing |         return thing | ||||||
| 
 | 
 | ||||||
|  |     def get_things_by_sql(self, thing_type, query, bindings=None): | ||||||
|  |         ''' | ||||||
|  |         Use an arbitrary SQL query to select things from the database. | ||||||
|  |         Your query select *, all the columns of the thing's table. | ||||||
|  |         ''' | ||||||
|  |         thing_rows = self.sql_select(query, bindings) | ||||||
|  |         for thing_row in thing_rows: | ||||||
|  |             yield self.get_cached_instance(thing_type, thing_row) | ||||||
|  | 
 | ||||||
| class YCDLDBChannelMixin: | class YCDLDBChannelMixin: | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         super().__init__() |         super().__init__() | ||||||
|  | @ -150,6 +159,9 @@ class YCDLDBChannelMixin: | ||||||
|         channels.sort(key=lambda c: c.name.lower()) |         channels.sort(key=lambda c: c.name.lower()) | ||||||
|         return channels |         return channels | ||||||
| 
 | 
 | ||||||
|  |     def get_channels_by_sql(self, query, bindings=None): | ||||||
|  |         return self.get_things_by_sql('channel', query, bindings) | ||||||
|  | 
 | ||||||
|     def _rss_assisted_refresh(self, skip_failures=False, commit=True): |     def _rss_assisted_refresh(self, skip_failures=False, commit=True): | ||||||
|         ''' |         ''' | ||||||
|         Youtube provides RSS feeds for every channel. These feeds do not |         Youtube provides RSS feeds for every channel. These feeds do not | ||||||
|  | @ -389,6 +401,9 @@ class YCDLDBVideoMixin: | ||||||
|         for row in rows: |         for row in rows: | ||||||
|             yield self.get_cached_instance('video', row) |             yield self.get_cached_instance('video', row) | ||||||
| 
 | 
 | ||||||
|  |     def get_videos_by_sql(self, query, bindings=None): | ||||||
|  |         return self.get_things_by_sql('video', query, bindings) | ||||||
|  | 
 | ||||||
|     def insert_playlist(self, playlist_id, commit=True): |     def insert_playlist(self, playlist_id, commit=True): | ||||||
|         video_generator = self.youtube.get_playlist_videos(playlist_id) |         video_generator = self.youtube.get_playlist_videos(playlist_id) | ||||||
|         results = [self.insert_video(video, commit=False) for video in video_generator] |         results = [self.insert_video(video, commit=False) for video in video_generator] | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue