@@ -291,11 +291,36 @@ def get_success_url(self):
291291 url = reverse_lazy ('sync:add-source' )
292292 fields_to_populate = self .prepopulate_fields .get (self .source_type )
293293 fields = {}
294+ value = self .key
295+ use_channel_id = (
296+ 'youtube-channel' == self .source_type_str and
297+ '@' == self .key [0 ]
298+ )
299+ if use_channel_id :
300+ old_key = self .key
301+ old_source_type = self .source_type
302+ old_source_type_str = self .source_type_str
303+
304+ self .source_type_str = 'youtube-channel-id'
305+ self .source_type = self .source_types .get (self .source_type_str , None )
306+ index_url = Source .create_index_url (self .source_type , self .key , 'videos' )
307+ try :
308+ self .key = youtube .get_channel_id (
309+ index_url .replace ('/channel/' , '/' )
310+ )
311+ except youtube .YouTubeError as e :
312+ # It did not work, revert to previous behavior
313+ self .key = old_key
314+ self .source_type = old_source_type
315+ self .source_type_str = old_source_type_str
316+
294317 for field in fields_to_populate :
295318 if field == 'source_type' :
296319 fields [field ] = self .source_type
297- elif field in ( 'key' , 'name' , 'directory' ) :
320+ elif field == 'key' :
298321 fields [field ] = self .key
322+ elif field in ('name' , 'directory' ):
323+ fields [field ] = value
299324 return append_uri_params (url , fields )
300325
301326
0 commit comments