From 94cec4290cadd2188f9f68efecc64d2611dcd20b Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Thu, 28 Apr 2022 11:15:57 +0600 Subject: [PATCH] [CD] flathub update_release bugfix getLyrics now ranks result for maximum match rate --- .github/workflows/release-build.yml | 3 --- lib/helpers/getLyrics.dart | 25 ++++++++++++++++++++++--- scripts/update_flathub_version.py | 3 ++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 1e4b975e..a18db4ea 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -216,11 +216,8 @@ jobs: uses: dawidd6/action-get-tag@v1 with: strip_v: true - - run: sudo apt-get install tree -y - - run: tree . - run: | python3 spotube/scripts/update_flathub_version.py ${{ steps.tag.outputs.tag }} - - run: cat com.github.KRTirtho.Spotube.yml - uses: EndBug/add-and-commit@v9 with: message: v${{ steps.tag.outputs.tag }} Update diff --git a/lib/helpers/getLyrics.dart b/lib/helpers/getLyrics.dart index 7dbf171b..ac8aa7ee 100644 --- a/lib/helpers/getLyrics.dart +++ b/lib/helpers/getLyrics.dart @@ -5,6 +5,7 @@ import 'package:http/http.dart' as http; import 'package:spotube/helpers/get-random-element.dart'; import 'package:spotube/models/Logger.dart'; import 'package:spotube/models/generated_secrets.dart'; +import 'package:collection/collection.dart'; final logger = getLogger("GetLyrics"); @@ -113,7 +114,7 @@ Future searchSong( Future getLyrics( String title, - List artist, { + List artists, { required String apiKey, bool optimizeQuery = false, bool authHeader = false, @@ -121,13 +122,31 @@ Future getLyrics( try { final results = await searchSong( title, - artist, + artists, apiKey: apiKey, optimizeQuery: optimizeQuery, authHeader: authHeader, ); if (results == null) return null; - String? lyrics = await extractLyrics(Uri.parse(results.first["url"])); + final worthyOne = results + .map((result) { + final gTitle = (result["title"] as String).toLowerCase(); + int points = 0; + final hasTitle = gTitle.contains(title.toLowerCase()); + final hasAllArtists = + artists.every((artist) => gTitle.contains(artist.toLowerCase())); + + for (var criteria in [hasTitle, hasAllArtists]) { + if (criteria) points++; + } + return {"result": result, "points": points}; + }) + .sorted( + (a, b) => ((b["points"] as int).compareTo(a["points"] as int)), + ) + .first; + + String? lyrics = await extractLyrics(Uri.parse(worthyOne["url"])); return lyrics; } catch (e, stack) { logger.e("getLyrics", e, stack); diff --git a/scripts/update_flathub_version.py b/scripts/update_flathub_version.py index 76b91945..ecd06b31 100644 --- a/scripts/update_flathub_version.py +++ b/scripts/update_flathub_version.py @@ -13,10 +13,11 @@ with open(YAML_FILENAME, mode="r", encoding="utf-8") as input: config = yaml.safe_load(input) # Requires the 2nd VERSION argument to be passed -version = sys.argv[1:][1:] +version = sys.argv[1:][0] tar_url = f"https://github.com/{REPO}/releases/download/v{version}/Spotube-linux-x86_64.tar.xz" tar_sha256 = hashlib.sha256() +print(f"Downloading file {tar_url} to generete sha256 sum") tar = requests.get(tar_url) for chunk in tar.iter_content(): if chunk: