File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 105105 <span >Censor Profanity</span >
106106 </label >
107107 </div >
108+ <div class =" col s12 m3" >
109+ <label class =" row" >
110+ <input type =" checkbox" class =" filled-in" id =" hide-remaster-checkbox" />
111+ <span >Hide Remaster</span >
112+ </label >
113+ </div >
108114 </div >
109115
110116 <div class =" row center" >
237243 show_offline: false ,
238244 background_color: " 121212" ,
239245 interchange: false ,
240- profanity: false
246+ profanity: false ,
247+ hide_remaster: false
241248 };
242249 var openSong = false ;
243250
288295 updateUrl ();
289296 });
290297
298+ $ (" #hide-remaster-checkbox" ).change (function () {
299+ urlParams .hide_remaster = this .checked ;
300+ updateUrl ();
301+ });
302+
291303 $ (' #theme-select' ).change (function () {
292304 // Reset visibility defaults
293305 $ (' .bar-color' ).show ();
Original file line number Diff line number Diff line change 44
55from util .firestore import get_firestore_db
66from util .profanity import profanity_check
7+ from util .remaster import remove_remaster
78
89load_dotenv (find_dotenv ())
910
@@ -352,6 +353,7 @@ def catch_all(path):
352353 interchange = request .args .get ("interchange" , default = "false" ) == "true"
353354 mode = request .args .get ("mode" , default = "light" )
354355 is_enable_profanity = request .args .get ("profanity" , default = "false" ) == "true"
356+ hide_remaster = request .args .get ("hide_remaster" , default = "false" ) == "true"
355357
356358 # Handle invalid request
357359 if not uid :
@@ -454,6 +456,10 @@ def catch_all(path):
454456 artist_name = profanity_check (artist_name )
455457 song_name = profanity_check (song_name )
456458
459+ # Strip remaster annotations from song title
460+ if hide_remaster :
461+ song_name = remove_remaster (song_name )
462+
457463 if interchange :
458464 x = artist_name
459465 artist_name = song_name
Original file line number Diff line number Diff line change 1+ import sys
2+ import os
3+
4+ sys .path .insert (0 , os .path .join (os .path .dirname (__file__ ), ".." ))
5+
6+ from util .remaster import remove_remaster
7+
8+
9+ def test_no_remaster_unchanged ():
10+ assert remove_remaster ("Hotel California" ) == "Hotel California"
11+
12+
13+ def test_remaster_suffix_dash ():
14+ assert remove_remaster ("Hotel California - 2013 Remaster" ) == "Hotel California"
15+
16+
17+ def test_remaster_suffix_parens ():
18+ assert remove_remaster ("Come Together (Remastered)" ) == "Come Together"
19+
20+
21+ def test_remastered_with_year_parens ():
22+ assert remove_remaster ("Roxanne (Remastered 2003)" ) == "Roxanne"
23+
24+
25+ def test_remaster_year_before_keyword ():
26+ assert remove_remaster ("Starman - 2012 Remaster" ) == "Starman"
27+
28+
29+ def test_remastered_version ():
30+ assert remove_remaster ("Heroes - Remastered Version" ) == "Heroes"
31+
32+
33+ def test_remastered_year_version ():
34+ assert remove_remaster ("Life On Mars? (2015 Remastered Version)" ) == "Life On Mars?"
35+
36+
37+ def test_case_insensitive ():
38+ assert remove_remaster ("Song Title - REMASTERED" ) == "Song Title"
39+
40+
41+ def test_remaster_not_mid_title ():
42+ """Remaster text in the middle of a title must not be removed."""
43+ title = "Remastered Soul"
44+ assert remove_remaster (title ) == "Remastered Soul"
Original file line number Diff line number Diff line change 1+ import re
2+
3+ # Matches common "Remaster" / "Remastered" suffixes appended to song titles.
4+ # Examples handled:
5+ # "Song Title - 2020 Remaster"
6+ # "Song Title (2020 Remaster)"
7+ # "Song Title (Remastered)"
8+ # "Song Title - Remastered 2020"
9+ # "Song Title (Remastered 2020 Version)"
10+ _REMASTER_RE = re .compile (
11+ r"""
12+ [\s\-–]+ # separator: whitespace and/or dash
13+ [\(\[]? # optional opening bracket
14+ (?:\d{4}\s+)? # optional year before keyword
15+ Remaster(?:ed)? # "Remaster" or "Remastered"
16+ (?:\s+\d{4})? # optional year after keyword
17+ (?:\s+Version)? # optional trailing "Version"
18+ [\)\]]? # optional closing bracket
19+ \s*$ # up to end of string
20+ """ ,
21+ re .IGNORECASE | re .VERBOSE ,
22+ )
23+
24+
25+ def remove_remaster (name : str ) -> str :
26+ """Return *name* with any remaster annotation stripped from the end."""
27+ return _REMASTER_RE .sub ("" , name ).strip ()
You can’t perform that action at this time.
0 commit comments