playlists in description: round trip the description correctly

pull/305/head
Mike Lang 2 years ago committed by Mike Lang
parent 17c5e86250
commit a298087137

@ -29,7 +29,7 @@ app.after_request(after_request)
MAX_TITLE_LENGTH = 100 # Youtube only allows 100-character titles
MAX_DESCRIPTION_LENGTH = 5000 # Youtube only allows 5000-character descriptions
DESCRIPTION_PLAYLISTS_HEADER = "This video is part of the following playlists:"
def cors(app):
"""WSGI middleware that sets CORS headers"""
@ -194,19 +194,20 @@ def get_row(ident):
response['thumbnail_time'] = start
# remove any added headers or footers so round-tripping is a no-op
# TODO make work with playlist links in description
if (
app.title_header
and response["video_title"] is not None
and response["video_title"].startswith(app.title_header)
):
response["video_title"] = response["video_title"][len(app.title_header):]
if (
app.description_footer
and response["video_description"] is not None
and response["video_description"].endswith(app.description_footer)
):
response["video_description"] = response["video_description"][:-len(app.description_footer)]
description_playlist_re = re.compile(r"({}\n(- .* \[https://youtube.com/playlist\?list=[A-Za-z0-9_-]+\n)+)?{}$".format(
re.escape(DESCRIPTION_PLAYLISTS_HEADER),
re.escape(app.description_footer),
))
if response["video_description"] is not None:
match = description_playlist_re.search(response["video_description"])
if match:
response["video_description"] = response["video_description"][:match.start()]
logging.info('Row {} fetched'.format(ident))
@ -275,7 +276,7 @@ def update_row(ident, editor=None):
return 'Row {} not found'.format(ident), 404
assert old_row['id'] == ident
playlists = query(conn, """
playlists = database.query(conn, """
SELECT playlist_id, name, tags
FROM playlists
WHERE show_in_description
@ -290,12 +291,12 @@ def update_row(ident, editor=None):
]
# Include headers and footers
playlist_info = get_playlist_info(conn)
new_row['video_title'] = app.title_header + new_row['video_title']
description_lines = ["This video is part of the following playlists:"]
# NOTE: If you change this format, you need to also change the regex that matches this
# on the GET handler.
description_lines = [DESCRIPTION_PLAYLISTS_HEADER]
description_lines += [
# TODO check this url
"{} [https://youtube.com/playlist/{}]".format(playlist.name, playlist.playlist_id)
"- {} [https://youtube.com/playlist?list={}]".format(playlist.name, playlist.playlist_id)
for playlist in playlists
]
description_lines.append(app.description_footer)

Loading…
Cancel
Save