refactor: replace string concatenations with f-strings
All checks were successful
CI / test (push) Successful in 50s
All checks were successful
CI / test (push) Successful in 50s
This commit is contained in:
@@ -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/<channel_id>/')
|
||||
@yt_app.route('/channel/<channel_id>/<tab>')
|
||||
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/<username>/')
|
||||
@yt_app.route('/user/<username>/<tab>')
|
||||
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/<custom>/')
|
||||
@yt_app.route('/c/<custom>/<tab>')
|
||||
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('/<custom>')
|
||||
@yt_app.route('/<custom>/<tab>')
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user