From 50ad959a8051fec95f26b573f9fe067bdf3fdf6a Mon Sep 17 00:00:00 2001 From: Astounds Date: Sat, 25 Apr 2026 01:02:17 -0500 Subject: refactor: replace string concatenations with f-strings --- youtube/channel.py | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'youtube/channel.py') diff --git a/youtube/channel.py b/youtube/channel.py index 14a565e..8baf588 100644 --- a/youtube/channel.py +++ b/youtube/channel.py @@ -253,7 +253,7 @@ def get_channel_tab(channel_id, page="1", sort=3, tab='videos', view=1, # For now it seems to be constant for the API endpoint, not dependent # on the browsing session or channel key = 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' - url = 'https://www.youtube.com/youtubei/v1/browse?key=' + key + url = f'https://www.youtube.com/youtubei/v1/browse?key={key}' data = { 'context': { @@ -285,8 +285,8 @@ def get_number_of_videos_channel(channel_id): return 1000 # Uploads playlist - playlist_id = 'UU' + channel_id[2:] - url = 'https://m.youtube.com/playlist?list=' + playlist_id + '&pbj=1' + playlist_id = f'UU{channel_id[2:]}' + url = f'https://m.youtube.com/playlist?list={playlist_id}&pbj=1' try: response = util.fetch_url(url, headers_mobile, @@ -328,7 +328,7 @@ def get_channel_id(base_url): # method that gives the smallest possible response at ~4 kb # needs to be as fast as possible base_url = base_url.replace('https://www', 'https://m') # avoid redirect - response = util.fetch_url(base_url + '/about?pbj=1', headers_mobile, + response = util.fetch_url(f'{base_url}/about?pbj=1', headers_mobile, debug_name='get_channel_id', report_text='Got channel id').decode('utf-8') match = channel_id_re.search(response) if match: @@ -372,7 +372,7 @@ def get_channel_search_json(channel_id, query, page): ctoken = base64.urlsafe_b64encode(proto.nested(80226972, ctoken)).decode('ascii') key = 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' - url = 'https://www.youtube.com/youtubei/v1/browse?key=' + key + url = f'https://www.youtube.com/youtubei/v1/browse?key={key}' data = { 'context': { @@ -414,18 +414,18 @@ def post_process_channel_info(info): def get_channel_first_page(base_url=None, tab='videos', channel_id=None, sort=None): if channel_id: - base_url = 'https://www.youtube.com/channel/' + channel_id + base_url = f'https://www.youtube.com/channel/{channel_id}' # Build URL with sort parameter # YouTube URL sort params: p=popular, dd=newest, lad=newest no shorts # Note: 'da' (oldest) was removed by YouTube in January 2026 - url = base_url + '/' + tab + '?pbj=1&view=0' + url = f'{base_url}/{tab}?pbj=1&view=0' if sort: # Map sort values to YouTube's URL parameter values sort_map = {'3': 'dd', '4': 'lad'} - url += '&sort=' + sort_map.get(sort, 'dd') + url += f'&sort={sort_map.get(sort, "dd")}' - return util.fetch_url(url, headers_desktop, debug_name='gen_channel_' + tab) + return util.fetch_url(url, headers_desktop, debug_name=f'gen_channel_{tab}') playlist_sort_codes = {'2': "da", '3': "dd", '4': "lad"} @@ -462,7 +462,7 @@ def get_channel_page_general_url(base_url, tab, request, channel_id=None): if page_number == 1: tasks = ( gevent.spawn(playlist.playlist_first_page, - 'UU' + channel_id[2:], + f'UU{channel_id[2:]}', report_text='Retrieved channel videos'), gevent.spawn(get_metadata, channel_id), ) @@ -477,11 +477,11 @@ def get_channel_page_general_url(base_url, tab, request, channel_id=None): set_cached_number_of_videos(channel_id, number_of_videos) else: tasks = ( - gevent.spawn(playlist.get_videos, 'UU' + channel_id[2:], + gevent.spawn(playlist.get_videos, f'UU{channel_id[2:]}', page_number, include_shorts=True), gevent.spawn(get_metadata, channel_id), gevent.spawn(get_number_of_videos_channel, channel_id), - gevent.spawn(playlist.playlist_first_page, 'UU' + channel_id[2:], + gevent.spawn(playlist.playlist_first_page, f'UU{channel_id[2:]}', report_text='Retrieved channel video count'), ) gevent.joinall(tasks) @@ -567,10 +567,10 @@ def get_channel_page_general_url(base_url, tab, request, channel_id=None): elif tab == 'search' and channel_id: polymer_json = get_channel_search_json(channel_id, query, page_number) elif tab == 'search': - url = base_url + '/search?pbj=1&query=' + urllib.parse.quote(query, safe='') + url = f'{base_url}/search?pbj=1&query={urllib.parse.quote(query, safe="")}' polymer_json = util.fetch_url(url, headers_desktop, debug_name='gen_channel_search') elif tab != 'videos': - flask.abort(404, 'Unknown channel tab: ' + tab) + flask.abort(404, f'Unknown channel tab: {tab}') if polymer_json is not None and info is None: info = yt_data_extract.extract_channel_info( @@ -583,7 +583,7 @@ def get_channel_page_general_url(base_url, tab, request, channel_id=None): return flask.render_template('error.html', error_message=info['error']) if channel_id: - info['channel_url'] = 'https://www.youtube.com/channel/' + channel_id + info['channel_url'] = f'https://www.youtube.com/channel/{channel_id}' info['channel_id'] = channel_id else: channel_id = info['channel_id'] @@ -663,22 +663,22 @@ def get_channel_page_general_url(base_url, tab, request, channel_id=None): @yt_app.route('/channel//') @yt_app.route('/channel//') def get_channel_page(channel_id, tab='videos'): - return get_channel_page_general_url('https://www.youtube.com/channel/' + channel_id, tab, request, channel_id) + return get_channel_page_general_url(f'https://www.youtube.com/channel/{channel_id}', tab, request, channel_id) @yt_app.route('/user//') @yt_app.route('/user//') def get_user_page(username, tab='videos'): - return get_channel_page_general_url('https://www.youtube.com/user/' + username, tab, request) + return get_channel_page_general_url(f'https://www.youtube.com/user/{username}', tab, request) @yt_app.route('/c//') @yt_app.route('/c//') def get_custom_c_page(custom, tab='videos'): - return get_channel_page_general_url('https://www.youtube.com/c/' + custom, tab, request) + return get_channel_page_general_url(f'https://www.youtube.com/c/{custom}', tab, request) @yt_app.route('/') @yt_app.route('//') def get_toplevel_custom_page(custom, tab='videos'): - return get_channel_page_general_url('https://www.youtube.com/' + custom, tab, request) + return get_channel_page_general_url(f'https://www.youtube.com/{custom}', tab, request) -- cgit v1.2.3