From 4438fe7e6f5262efbb642bc1d1541adf7f7f30bc Mon Sep 17 00:00:00 2001 From: farhan11166 Date: Tue, 7 Oct 2025 00:14:25 +0530 Subject: [PATCH 1/5] Added feature to censor explicit language --- api/requirements.txt | 1 + api/view.py | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/api/requirements.txt b/api/requirements.txt index 54714f3..28f7fc0 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -8,6 +8,7 @@ Pillow==11.3.0 colorgram.py==1.2.0 markupsafe==3.0.3 gunicorn==23.0.0 +profanityfilter==2.1.0 # Test dependencies for CI/CD pytest==8.4.2 diff --git a/api/view.py b/api/view.py index a5d5cc7..0296436 100644 --- a/api/view.py +++ b/api/view.py @@ -1,6 +1,7 @@ from flask import Flask, Response, jsonify, render_template, redirect, request from base64 import b64decode, b64encode from dotenv import load_dotenv, find_dotenv +from profanityfilter import ProfanityFilter from util.firestore import get_firestore_db @@ -19,7 +20,7 @@ import colorgram import math import html - +pf=ProfanityFilter() ImageFile.LOAD_TRUNCATED_IMAGES = True print("Starting Server") @@ -147,6 +148,7 @@ def make_svg( artist_name = encode_html_entities(artist_name) song_name = encode_html_entities(song_name) + if theme == "compact": if cover_image: height = 400 @@ -337,6 +339,29 @@ def get_song_info(uid, show_offline): @app.route("/", defaults={"path": ""}) @app.route("/") +def profanity_check_n(name): + return pf.censor(name) +def profanity_check(name): + if not pf.is_clean(name): + censored_name = pf.censor(name) + name_list = list(censored_name) + + if len(name_list) > 0: + for i in range(0, len(name)): + if name_list[i]=='*' and i 1: + for i in range( len(name)-1,-1,-1): + if name_list[i]=='*' and i>0 and name_list[i-1]=='*': + name_list[i] = name[i] + break + + + return "".join(name_list) + + return name + def catch_all(path): uid = request.args.get("uid") cover_image = request.args.get("cover_image", default="true") == "true" @@ -441,11 +466,14 @@ def catch_all(path): # Find artist_name and song_name if currently_playing_type == "track": artist_name = item["artists"][0]["name"] + song_name = item["name"] elif currently_playing_type == "episode": artist_name = item["show"]["publisher"] song_name = item["name"] + artist_name=profanity_check(artist_name) + song_name=profanity_check(song_name) if interchange: x = artist_name From 9ac3e72db2593401c631cbcf68d0449511cd28f4 Mon Sep 17 00:00:00 2001 From: Kittinan Date: Tue, 7 Oct 2025 21:44:51 +0700 Subject: [PATCH 2/5] Refactor profanity filtering: replace ProfanityFilter with custom profanity_check function --- api/view.py | 37 ++++++++----------------------------- util/profanity.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 29 deletions(-) create mode 100644 util/profanity.py diff --git a/api/view.py b/api/view.py index 0296436..cc991a6 100644 --- a/api/view.py +++ b/api/view.py @@ -1,9 +1,9 @@ from flask import Flask, Response, jsonify, render_template, redirect, request from base64 import b64decode, b64encode from dotenv import load_dotenv, find_dotenv -from profanityfilter import ProfanityFilter from util.firestore import get_firestore_db +from util.profanity import profanity_check load_dotenv(find_dotenv()) @@ -20,7 +20,7 @@ import colorgram import math import html -pf=ProfanityFilter() + ImageFile.LOAD_TRUNCATED_IMAGES = True print("Starting Server") @@ -148,7 +148,6 @@ def make_svg( artist_name = encode_html_entities(artist_name) song_name = encode_html_entities(song_name) - if theme == "compact": if cover_image: height = 400 @@ -339,29 +338,6 @@ def get_song_info(uid, show_offline): @app.route("/", defaults={"path": ""}) @app.route("/") -def profanity_check_n(name): - return pf.censor(name) -def profanity_check(name): - if not pf.is_clean(name): - censored_name = pf.censor(name) - name_list = list(censored_name) - - if len(name_list) > 0: - for i in range(0, len(name)): - if name_list[i]=='*' and i 1: - for i in range( len(name)-1,-1,-1): - if name_list[i]=='*' and i>0 and name_list[i-1]=='*': - name_list[i] = name[i] - break - - - return "".join(name_list) - - return name - def catch_all(path): uid = request.args.get("uid") cover_image = request.args.get("cover_image", default="true") == "true" @@ -375,6 +351,7 @@ def catch_all(path): show_offline = request.args.get("show_offline", default="false") == "true" interchange = request.args.get("interchange", default="false") == "true" mode = request.args.get("mode", default="light") + is_enable_profanity = request.args.get("profanity", default="false") == "true" # Handle invalid request if not uid: @@ -466,14 +443,16 @@ def catch_all(path): # Find artist_name and song_name if currently_playing_type == "track": artist_name = item["artists"][0]["name"] - song_name = item["name"] elif currently_playing_type == "episode": artist_name = item["show"]["publisher"] song_name = item["name"] - artist_name=profanity_check(artist_name) - song_name=profanity_check(song_name) + + # Handle profanity filtering + if is_enable_profanity: + artist_name = profanity_check(artist_name) + song_name = profanity_check(song_name) if interchange: x = artist_name diff --git a/util/profanity.py b/util/profanity.py new file mode 100644 index 0000000..5d0558a --- /dev/null +++ b/util/profanity.py @@ -0,0 +1,11 @@ +from profanityfilter import ProfanityFilter + +pf = ProfanityFilter() + + +def profanity_check(name): + + if pf.is_clean(name): + return name + + return pf.censor(name) From 8c4e5cb4612dc23d8472ff7b2a4d4c5b7bdc5d5c Mon Sep 17 00:00:00 2001 From: Kittinan Date: Tue, 7 Oct 2025 21:50:50 +0700 Subject: [PATCH 3/5] Add profanity censoring option in callback template --- api/templates/callback.html.j2 | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/api/templates/callback.html.j2 b/api/templates/callback.html.j2 index 3be21ed..9f66019 100644 --- a/api/templates/callback.html.j2 +++ b/api/templates/callback.html.j2 @@ -99,6 +99,12 @@ Interchange Artist with Song name +
+ +
@@ -230,7 +236,8 @@ theme: 'default', show_offline: false, background_color: "121212", - interchange:false + interchange:false, + profanity: false }; var openSong = false; @@ -276,6 +283,11 @@ updateUrl(); }); + $("#profanity-checkbox").change(function() { + urlParams.profanity = this.checked; + updateUrl(); + }); + $('#theme-select').change(function() { // Reset visibility defaults $('.bar-color').show(); From de7fd69e610b60e5f278b3f4c48ed271b7336c78 Mon Sep 17 00:00:00 2001 From: Kittinan Date: Tue, 7 Oct 2025 21:56:06 +0700 Subject: [PATCH 4/5] Add unit tests for profanity_check function --- tests/test_util_profanity.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/test_util_profanity.py diff --git a/tests/test_util_profanity.py b/tests/test_util_profanity.py new file mode 100644 index 0000000..12fa14d --- /dev/null +++ b/tests/test_util_profanity.py @@ -0,0 +1,25 @@ +import sys +import os + +# Add the parent directory to the path to import the util module +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) + + +def test_profanity_check_clean_text(): + """Test that clean text is returned unchanged.""" + from util.profanity import profanity_check + + result = profanity_check("Hello World") + + assert result == "Hello World" + + +def test_profanity_check_profane_text(): + """Test that profane text is censored.""" + from util.profanity import profanity_check + + result = profanity_check("fuck") + + # The exact censoring depends on the library, but should be different + assert result != "fuck" + assert "*" in result # Should contain censoring characters From daf3e66a4e12add92313fef1411fc3191e977d27 Mon Sep 17 00:00:00 2001 From: farhan11166 Date: Thu, 30 Oct 2025 17:41:58 +0530 Subject: [PATCH 5/5] added base image --- .env.example | 2 +- api/view.py | 5 ++++- img/offline.png | Bin 0 -> 57257 bytes 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 img/offline.png diff --git a/.env.example b/.env.example index 418d0fd..5b22a6f 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ SPOTIFY_CLIENT_ID='___' SPOTIFY_SECRET_ID='____' -BASE_URL='http://localhost:3000/api' +BASE_URL='http://127.0.0.1:3000/api' FIREBASE='__BASE64_FIREBASE_JSON_FILE__' diff --git a/api/view.py b/api/view.py index cc991a6..84ab923 100644 --- a/api/view.py +++ b/api/view.py @@ -412,9 +412,12 @@ def catch_all(path): # Only convert to base64 if image was successfully loaded if img is not None: img_b64 = to_img_b64(img) + if img is None: + img_b64=to_img_b64('img/offline.png') # Extract cover image color - if is_bar_color_from_cover and img is not None: + if is_bar_color_from_cover : + is_skip_dark = False if theme in ["default"]: diff --git a/img/offline.png b/img/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..4421d31621b2ddf4944866d8655435796d5057fc GIT binary patch literal 57257 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