From 6ff4723e924293c46b8871ec878783fe53425bc9 Mon Sep 17 00:00:00 2001 From: Aryan <60008842+CosmicRaptor@users.noreply.github.com> Date: Mon, 25 Nov 2024 22:49:29 +0530 Subject: [PATCH] feat: add listenbrainz scrobbling support (#1047) * Added listenbrainz scrobbling support --- assets/images/listenbrainz-icon.png | Bin 0 -> 88649 bytes lib/app/app_model.dart | 2 + lib/constants.dart | 2 + lib/expose/expose_service.dart | 13 ++- lib/expose/listenbrainz_service.dart | 38 +++++++++ lib/l10n/app_en.arb | 4 + lib/register.dart | 7 ++ lib/settings/settings_model.dart | 8 ++ lib/settings/settings_service.dart | 8 ++ lib/settings/view/expose_online_section.dart | 77 +++++++++++++++++ needs_translation.json | 82 ++++++++++++++++++- pubspec.lock | 8 ++ pubspec.yaml | 2 + 13 files changed, 246 insertions(+), 5 deletions(-) create mode 100644 assets/images/listenbrainz-icon.png create mode 100644 lib/expose/listenbrainz_service.dart diff --git a/assets/images/listenbrainz-icon.png b/assets/images/listenbrainz-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a965543f17d2d02eb61a6613e22a8591ffbcb5fb GIT binary patch literal 88649 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

@=uk{Ge;5>j4zYHEVqK7fDo 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 z zN$&s5Ie+BYmWaqw5@KiZ?#?D8VP=QiQ-Z1n>e8I0=mW!a7~BDuX+= z_2mvRQ1e0-1KAv>K=bqnO#YH88jbnaw%n4JXG0y^7~ZWwK0whI|LE1rfV5l57SEzN z?RtwwsN6z@Ak=Oo&HAn7EOAea~`DF}PVDLrb52ebh^A&y`dVK~P*{QV4^ogV;YKot)`u-ZRfx;Q>l7(p$UOLDTzPv6eRSt4~! zR=Gl<=Gp)A^iA*<4ixi-4M5`UKLmU2@%3Mk6YMw$>ASazTS>3~$;GojA=fxIyC_`U z+qw83(h1QN0#yd_+?RD$v((j^as>>}WYypr+W2=;QU_Oa{dOk5CFU9kHI|9@FNz)B zbAzt1fWFksz}#y4WdrD|LhZE>hTpLBcH}0#o8g@bI}81G@o5OPM`-H*#LgEtH^`Nh z6kW$s#z1Bd`J;wPMLokYI<8UHLgE%kpX+nu?$50A$Byl9n!{>FYV$lQMqcH)?XwWo z!7fIJfhuGS5@11+sJ9bHs%mM0GEjs(v4L|b)4t{$7G2k(JqwfynSM$NXkCuYp^NKX-dW-wp`wTj zB-d&j0dC?8-_XH%tY8GTYKJ$l61sM~Zf1a%3?T@TMS(%Bn}w(Q>J2zsSB&8KPO0C`9`5Xh|MEdjoG1>)>0+B))Mlb$AP9cLI1D1B)dXL4R!EWGQ zufr7jIK=T%hEe>l$oV7BUIhgmrPF&n`%$R86{T*A{=ZgkUuFoJ@dfMYy=lpw(2bjT z>*GD1egt0FUqRh#!1js)L<+TqB-?KBNR+i+e3%ZpzT;_#C>q~I=v!f(7RJouK+!PN zY!u#>l-$CHW$Nf`?pBJH;}%pzt8ZK%fbBQC`^Ke>?S1nHX^7frJvx^2tIDvWKExq^ zR68guDbW$ZmOc)sM-2!H5@0|-STMxJGF+L0f4K>Jo&xY)d0K7D;B0Lb#E7c43;=T! zp2S%EW_3}M)NB&joPzd-jvda+c(tof{i(bW_ z)cPH>AG-}&Pc7UI0uK$TYxbSg>Hxvwt_r{Kvsy<*9}2pyYv$;W#9;-3_(qHlTf!aI zj22Pzz+BEO%R>fjAn7RYwnI=xM~M@Ej&j*chrnXCz&>SqmaRG%R@2;}QXKHefaZdb z7=RQ*ss`YEz75ZcV*gMsc;i^i(lLVmE)V=FXiomu=lpTZ)n5G5>Qu=5w<{I;F+Il5 zkyhOT@OdrJR$SNC2N#J^XYBj81_#k3aAT1`A-O+{*sEQFgRs(;;Rm#&&RD2Jr~J${ z+z@nHPomH#=Z~JyX6c_EFO&dO3IGCx4EYl}gW55*O42?&?S1+l_(^1_wc?Tc4LV&X z5<|J8fT!sG{zDMJYg9glF#fFA#WR1^>rhB5idnSW|IO^I`uua5=m)USTzK+3?bN1f z{hwfWa0E8lB|xD77k1LEuV2-F?H`ao2y3g$O5D@7?AYq5h{R#3`8zF0ZJv1AD#S7v zYs!(FG8hjV{in#L%7S(h2Ssy__U3l-Sk%N& zo6e>3H}FjBp2LUDMV{%McOZu6++6seIOeDQ%uREto2l{`1{x3wJR_O2?ZT@2*t<87STVQ+!N9p^HCJ!7< zMU3rD!Cw#$7Y`phmmoWjusRpF2oJvqKQ|i}mk1~*LQ1y3e8I}b#Qc%#|Nj@(_4hhZ PcL0}GlFGef^y2>mqJC#O literal 0 HcmV?d00001 diff --git a/lib/app/app_model.dart b/lib/app/app_model.dart index 58988c9a5..956e11ceb 100644 --- a/lib/app/app_model.dart +++ b/lib/app/app_model.dart @@ -42,6 +42,8 @@ class AppModel extends SafeChangeNotifier { apiSecret: apiSecret, ); + void initListenBrains() => _exposeService.initListenBrains(); + final GitHub _gitHub; final SettingsService _settingsService; final bool _allowManualUpdates; diff --git a/lib/constants.dart b/lib/constants.dart index 4c0ec1745..cd3bab2bd 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -155,6 +155,8 @@ const kLastFmApiKey = 'lastFmApiKey'; const klastFmSecret = 'lastFmSecret'; const kLastFmSessionKey = 'lastFmSessionKey'; const kLastFmUsername = 'lastFmUsername'; +const kEnableListenBrainzScrobbling = 'enableListenBrainzScrobbling'; +const kListenBrainzApiKey = 'listenBrainzApiKey'; const kLastCountryCode = 'lastCountryCode'; const kLastLanguageCode = 'lastLanguageCode'; const kSearchResult = 'searchResult'; diff --git a/lib/expose/expose_service.dart b/lib/expose/expose_service.dart index 8680d0ea3..f853117b2 100644 --- a/lib/expose/expose_service.dart +++ b/lib/expose/expose_service.dart @@ -4,16 +4,20 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_discord_rpc/flutter_discord_rpc.dart'; import 'lastfm_service.dart'; +import 'listenbrainz_service.dart'; class ExposeService { ExposeService({ required FlutterDiscordRPC? discordRPC, required LastfmService lastFmService, + required ListenBrainzService listenBrainzService, }) : _discordRPC = discordRPC, - _lastFmService = lastFmService; + _lastFmService = lastFmService, + _listenBrainzService = listenBrainzService; final FlutterDiscordRPC? _discordRPC; final LastfmService _lastFmService; + final ListenBrainzService _listenBrainzService; final _errorController = StreamController.broadcast(); Stream get discordErrorStream => _errorController.stream; @@ -37,8 +41,15 @@ class ExposeService { title: title, artist: artist, ); + + await _listenBrainzService.exposeTrackToListenBrainz( + title: title, + artist: artist, + ); } + void initListenBrains() => _listenBrainzService.init(); + Future _exposeTitleToDiscord({ required String title, required String artist, diff --git a/lib/expose/listenbrainz_service.dart b/lib/expose/listenbrainz_service.dart new file mode 100644 index 000000000..c2f19268c --- /dev/null +++ b/lib/expose/listenbrainz_service.dart @@ -0,0 +1,38 @@ +import 'package:listenbrainz_dart/listenbrainz_dart.dart'; + +import '../common/logging.dart'; +import '../settings/settings_service.dart'; + +class ListenBrainzService { + ListenBrainzService({required SettingsService settingsService}) + : _settingsService = settingsService; + + final SettingsService _settingsService; + ListenBrainz? _listenBrainz; + + void init() { + final apiKey = _settingsService.listenBrainzApiKey; + if (apiKey != null) { + _listenBrainz = ListenBrainz(apiKey); + } + } + + Future exposeTrackToListenBrainz({ + required String title, + required String artist, + }) async { + try { + if (_listenBrainz != null && + _settingsService.enableListenBrainzScrobbling) { + final track = Track(title: title, artist: artist); + await _listenBrainz!.submitSingle( + track, + DateTime.now(), + ); + await _listenBrainz!.submitPlayingNow(track); + } + } on Exception catch (e) { + printMessageInDebugMode(e); + } + } +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 979ed17fd..d9191d62f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -364,6 +364,10 @@ "lastfmSecret": "Last.fm secret", "lastfmApiKeyEmpty": "Please enter an API key", "lastfmSecretEmpty": "Please enter the shared secret", + "exposeToListenBrainzTitle": "ListenBrainz", + "exposeToListenBrainzSubTitle": "The artist and title of the song/station/podcast you are currently listening to are shared.", + "listenBrainzApiKey": "ListenBrainz API key", + "listenBrainzApiKeyEmpty": "Please enter an API key", "featureDisabledOnPlatform": "This feature is currently disabled for this operating system.", "regionNone": "None", "regionAfghanistan": "Afghanistan", diff --git a/lib/register.dart b/lib/register.dart index 9da4786f5..5b479e04b 100644 --- a/lib/register.dart +++ b/lib/register.dart @@ -7,6 +7,7 @@ import 'constants.dart'; import 'dart:io'; import 'expose/expose_service.dart'; import 'expose/lastfm_service.dart'; +import 'expose/listenbrainz_service.dart'; import 'external_path/external_path_service.dart'; import 'library/library_model.dart'; import 'library/library_service.dart'; @@ -84,10 +85,16 @@ Future registerDependencies({ settingsService: di(), )..init(), ) + ..registerLazySingleton( + () => ListenBrainzService( + settingsService: di(), + )..init(), + ) ..registerLazySingleton( () => ExposeService( discordRPC: allowDiscordRPC ? di() : null, lastFmService: di(), + listenBrainzService: di(), ), dispose: (s) => s.dispose(), ) diff --git a/lib/settings/settings_model.dart b/lib/settings/settings_model.dart index 2bbe6e80d..c7387c56b 100644 --- a/lib/settings/settings_model.dart +++ b/lib/settings/settings_model.dart @@ -75,6 +75,14 @@ class SettingsModel extends SafeChangeNotifier { void setLastFmSessionKey(String value) => _service.setLastFmSessionKey(value); void setLastFmUsername(String value) => _service.setLastFmUsername(value); + bool get enableListenBrainzScrobbling => + _service.enableListenBrainzScrobbling; + String? get listenBrainzApiKey => _service.listenBrainzApiKey; + void setEnableListenBrainzScrobbling(bool value) => + _service.setEnableListenBrainzScrobbling(value); + void setListenBrainzApiKey(String value) => + _service.setListenBrainzApiKey(value); + bool get useMoreAnimations => _service.useMoreAnimations; void setUseMoreAnimations(bool value) => _service.setUseMoreAnimations(value); diff --git a/lib/settings/settings_service.dart b/lib/settings/settings_service.dart index 82067d457..1ac85ba60 100644 --- a/lib/settings/settings_service.dart +++ b/lib/settings/settings_service.dart @@ -58,6 +58,14 @@ class SettingsService { void setLastFmUsername(String value) => _preferences.setString(kLastFmUsername, value).then(notify); + bool get enableListenBrainzScrobbling => + _preferences.getBool(kEnableListenBrainzScrobbling) ?? false; + String? get listenBrainzApiKey => _preferences.getString(kListenBrainzApiKey); + void setEnableListenBrainzScrobbling(bool value) => + _preferences.setBool(kEnableListenBrainzScrobbling, value).then(notify); + void setListenBrainzApiKey(String value) => + _preferences.setString(kListenBrainzApiKey, value).then(notify); + bool get enableDiscordRPC => _preferences.getBool(kEnableDiscordRPC) ?? false; void setEnableDiscordRPC(bool value) => _preferences.setBool(kEnableDiscordRPC, value).then(notify); diff --git a/lib/settings/view/expose_online_section.dart b/lib/settings/view/expose_online_section.dart index 3bab645e4..f24703909 100644 --- a/lib/settings/view/expose_online_section.dart +++ b/lib/settings/view/expose_online_section.dart @@ -22,6 +22,7 @@ class ExposeOnlineSection extends StatefulWidget class _ExposeOnlineSectionState extends State { late TextEditingController _lastFmApiKeyController; late TextEditingController _lastFmSecretController; + late TextEditingController _listenBrainzApiKeyController; final _formkey = GlobalKey(); @override @@ -29,6 +30,8 @@ class _ExposeOnlineSectionState extends State { final model = di(); _lastFmApiKeyController = TextEditingController(text: model.lastFmApiKey); _lastFmSecretController = TextEditingController(text: model.lastFmSecret); + _listenBrainzApiKeyController = + TextEditingController(text: model.listenBrainzApiKey); super.initState(); } @@ -51,6 +54,10 @@ class _ExposeOnlineSectionState extends State { final lastFmEnabled = watchPropertyValue((SettingsModel m) => m.enableLastFmScrobbling); + final listenBrainzEnabled = watchPropertyValue( + (SettingsModel m) => m.enableListenBrainzScrobbling, + ); + return YaruSection( headline: Text(l10n.exposeOnlineHeadline), margin: const EdgeInsets.only( @@ -195,6 +202,76 @@ class _ExposeOnlineSectionState extends State { ), ), ], + YaruTile( + title: Row( + children: space( + children: [ + const ImageIcon( + AssetImage('assets/images/listenbrainz-icon.png'), + ), + Text(l10n.exposeToListenBrainzTitle), + ], + ), + ), + subtitle: Text(l10n.exposeToListenBrainzSubTitle), + trailing: CommonSwitch( + value: listenBrainzEnabled, + onChanged: (v) { + di().setEnableListenBrainzScrobbling(v); + }, + ), + ), + if (listenBrainzEnabled) ...[ + Padding( + padding: const EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: space( + heightGap: 10, + children: [ + Form( + key: _formkey, + onChanged: _formkey.currentState?.validate, + child: Column( + children: [ + TextFormField( + controller: _listenBrainzApiKeyController, + obscureText: true, + decoration: InputDecoration( + hintText: l10n.listenBrainzApiKey, + label: Text(l10n.listenBrainzApiKey), + ), + validator: (value) { + if (value == null || value.isEmpty) { + return l10n.listenBrainzApiKeyEmpty; + } + return null; + }, + onChanged: (_) => _formkey.currentState?.validate(), + onFieldSubmitted: (value) async { + if (_formkey.currentState!.validate()) { + di() + .setListenBrainzApiKey(value); + } + }, + ), + ], + ), + ), + ImportantButton( + onPressed: () { + di().setListenBrainzApiKey( + _listenBrainzApiKeyController.text, + ); + di().initListenBrains(); + }, + child: Text(l10n.save), + ), + ], + ), + ), + ), + ], ], ), ); diff --git a/needs_translation.json b/needs_translation.json index 4434b0cc2..c105ba68b 100644 --- a/needs_translation.json +++ b/needs_translation.json @@ -41,6 +41,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -338,6 +342,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -596,7 +604,18 @@ "lastfmApiKey", "lastfmSecret", "lastfmApiKeyEmpty", - "lastfmSecretEmpty" + "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" + ], + + "es": [ + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" ], "fr": [ @@ -622,6 +641,10 @@ "exposeToDiscordSubTitle", "exposeToLastfmSubTitle", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "regionNone" ], @@ -631,7 +654,11 @@ "lastfmApiKey", "lastfmSecret", "lastfmApiKeyEmpty", - "lastfmSecretEmpty" + "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" ], "nl": [ @@ -830,6 +857,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -1165,6 +1196,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -1651,6 +1686,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -2137,6 +2176,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -2438,6 +2481,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -2691,6 +2738,13 @@ "regionZimbabwe" ], + "sk": [ + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" + ], + "sv": [ "shuffle", "repeat", @@ -2721,7 +2775,11 @@ "noStarredStations", "stations", "copyToClipBoard", - "insertedIntoQueue" + "insertedIntoQueue", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" ], "tr": [ @@ -2766,6 +2824,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -3030,7 +3092,11 @@ "lastfmApiKey", "lastfmSecret", "lastfmApiKeyEmpty", - "lastfmSecretEmpty" + "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty" ], "zh_HK": [ @@ -3067,6 +3133,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", @@ -3354,6 +3424,10 @@ "lastfmSecret", "lastfmApiKeyEmpty", "lastfmSecretEmpty", + "exposeToListenBrainzTitle", + "exposeToListenBrainzSubTitle", + "listenBrainzApiKey", + "listenBrainzApiKeyEmpty", "featureDisabledOnPlatform", "regionNone", "regionAfghanistan", diff --git a/pubspec.lock b/pubspec.lock index 87705983f..a21692dd5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -835,6 +835,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" + listenbrainz_dart: + dependency: "direct main" + description: + name: listenbrainz_dart + sha256: bb8607c14aa6a7a0edcc5f70460238b75ba3c8c18be11731bd37458f3b0f1f64 + url: "https://pub.dev" + source: hosted + version: "0.0.4" logging: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a94f9b69d..82d443002 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,7 @@ dependencies: html: ^0.15.4 intl: ^0.19.0 lastfm: ^0.0.6 + listenbrainz_dart: ^0.0.4 m3u_parser_nullsafe: ^1.0.3 media_kit: git: @@ -108,6 +109,7 @@ flutter: uses-material-design: true assets: - snap/gui/musicpod.png + - assets/images/listenbrainz-icon.png - assets/images/media-optical.png - assets/images/tray_icon.ico - assets/images/tray_icon.png