Skip to content

Commit 3f52e95

Browse files
committed
new message NowPlayingTagChange to edit track metadata; plugin version updated to 1.3.0
1 parent 69f3ad7 commit 3f52e95

File tree

6 files changed

+114
-3
lines changed

6 files changed

+114
-3
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using ServiceStack.Text;
2+
3+
namespace MusicBeePlugin.AndroidRemote.Commands.Requests
4+
{
5+
using Interfaces;
6+
7+
internal class RequestTagChange : ICommand
8+
{
9+
public void Dispose()
10+
{
11+
}
12+
13+
public void Execute(IEvent eEvent)
14+
{
15+
var data = eEvent.Data as JsonObject;
16+
var tagName = data.Get<string>("tag");
17+
var newValue = data.Get<string>("value");
18+
19+
Plugin.Instance.SetTrackTag(tagName, newValue, eEvent.ClientId);
20+
}
21+
}
22+
}

plugin/AndroidRemote/Networking/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ internal static class Constants
8989
public const string RadioStations = "radiostations";
9090

9191
public const string NowPlayingDetails = "nowplayingdetails";
92+
public const string NowPlayingTagChange = "nowplayingtagchange";
9293

9394
#endregion
9495

plugin/AndroidRemote/configuration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public static void Register(Controller.Controller controller)
8989
controller.AddCommand(Constants.RadioStations, typeof(RequestRadioStations));
9090

9191
controller.AddCommand(Constants.NowPlayingDetails, typeof(RequestSongDetails));
92+
controller.AddCommand(Constants.NowPlayingTagChange, typeof(RequestTagChange));
9293
#endregion
9394

9495
}

plugin/Plugin.cs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,87 @@ public void RequestTrackDetails(string clientId)
12021202
EventBus.FireEvent(messageEvent);
12031203
}
12041204

1205+
public void SetTrackTag(string tagName, string value, string clientId)
1206+
{
1207+
var currentTrack = _api.NowPlaying_GetFileUrl();
1208+
var metadataType = MetaDataType.AlbumArtistRaw;
1209+
switch (tagName)
1210+
{
1211+
case "TrackTitle":
1212+
metadataType = MetaDataType.TrackTitle;
1213+
break;
1214+
case "Artist":
1215+
metadataType = MetaDataType.Artist;
1216+
break;
1217+
case "Album":
1218+
metadataType = MetaDataType.Album;
1219+
break;
1220+
case "Year":
1221+
metadataType = MetaDataType.Year;
1222+
break;
1223+
case "AlbumArtist":
1224+
metadataType = MetaDataType.AlbumArtist;
1225+
break;
1226+
case "Genre":
1227+
metadataType = MetaDataType.Genre;
1228+
break;
1229+
case "TrackNo":
1230+
metadataType = MetaDataType.TrackNo;
1231+
break;
1232+
case "TrackCount":
1233+
metadataType = MetaDataType.TrackCount;
1234+
break;
1235+
case "DiscNo":
1236+
metadataType = MetaDataType.DiscNo;
1237+
break;
1238+
case "DiscCount":
1239+
metadataType = MetaDataType.DiscCount;
1240+
break;
1241+
case "Grouping":
1242+
metadataType = MetaDataType.Grouping;
1243+
break;
1244+
case "Publisher":
1245+
metadataType = MetaDataType.Publisher;
1246+
break;
1247+
case "RatingAlbum":
1248+
metadataType = MetaDataType.RatingAlbum;
1249+
break;
1250+
case "Composer":
1251+
metadataType = MetaDataType.Composer;
1252+
break;
1253+
case "Comment":
1254+
metadataType = MetaDataType.Comment;
1255+
break;
1256+
case "Encoder":
1257+
metadataType = MetaDataType.Encoder;
1258+
break;
1259+
case "Lyrics":
1260+
metadataType = MetaDataType.Lyrics;
1261+
break;
1262+
}
1263+
1264+
if (metadataType == MetaDataType.AlbumArtistRaw)
1265+
{
1266+
_logger.Error("Requested tag type not found");
1267+
return;
1268+
}
1269+
1270+
try
1271+
{
1272+
_api.Library_SetFileTag(currentTrack, metadataType, value);
1273+
_api.Library_CommitTagsToFile(currentTrack);
1274+
_api.MB_RefreshPanels();
1275+
1276+
EventBus.FireEvent(
1277+
new MessageEvent(EventType.ReplyAvailable,
1278+
new SocketMessage(Constants.NowPlayingDetails, GetPlayingTrackDetails())));
1279+
}
1280+
catch (Exception e)
1281+
{
1282+
_logger.Error(e, "On Tag Change call");
1283+
}
1284+
}
1285+
12051286
/// <summary>
12061287
/// Moves a track of the now playing list to a new position.
12071288
/// </summary>

plugin/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@
3636
// by using the '*' as shown below:
3737
// [assembly: AssemblyVersion("1.0.*")]
3838

39-
[assembly: AssemblyVersion("1.2.1")]
39+
[assembly: AssemblyVersion("1.3.0")]

plugin/mbrc-plugin.csproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
<Compile Include="AndroidRemote\Commands\Requests\RequestScrobble.cs" />
167167
<Compile Include="AndroidRemote\Commands\Requests\RequestShuffle.cs" />
168168
<Compile Include="AndroidRemote\Commands\Requests\RequestSongDetails.cs" />
169+
<Compile Include="AndroidRemote\Commands\Requests\RequestTagChange.cs" />
169170
<Compile Include="AndroidRemote\Commands\State\PCoverChanged.cs" />
170171
<Compile Include="AndroidRemote\Commands\State\PLyricsChanged.cs" />
171172
<Compile Include="AndroidRemote\Commands\Requests\RequestNowPlayingList.cs" />
@@ -250,8 +251,12 @@
250251
<Compile Include="Tools\NetworkTools.cs" />
251252
</ItemGroup>
252253
<ItemGroup>
253-
<None Include="app.config" />
254-
<None Include="packages.config" />
254+
<None Include="app.config">
255+
<SubType>Designer</SubType>
256+
</None>
257+
<None Include="packages.config">
258+
<SubType>Designer</SubType>
259+
</None>
255260
<None Include="packages.config">
256261
<SubType>Designer</SubType>
257262
</None>
@@ -286,6 +291,7 @@
286291
<ItemGroup>
287292
<EmbeddedResource Include="InfoWindow.resx">
288293
<DependentUpon>InfoWindow.cs</DependentUpon>
294+
<SubType>Designer</SubType>
289295
</EmbeddedResource>
290296
<EmbeddedResource Include="Properties\Resources.resx">
291297
<Generator>ResXFileCodeGenerator</Generator>

0 commit comments

Comments
 (0)