Skip to content

Commit 2d5142f

Browse files
committed
Add Deezer support
1 parent bb4ac7d commit 2d5142f

13 files changed

Lines changed: 690 additions & 3 deletions

MiniMediaMetadataAPI.Application/Enums/ProviderType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace MiniMediaMetadataAPI.Application.Enums;
33
public enum ProviderType
44
{
55
Any,
6+
Deezer,
67
MusicBrainz,
78
Spotify,
89
Tidal
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerAlbumArtistModel
4+
{
5+
public long AlbumId { get; set; }
6+
public long ArtistId { get; set; }
7+
public string Role { get; set; }
8+
public string ArtistName { get; set; }
9+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerAlbumImageLinkModel
4+
{
5+
public long AlbumId { get; set; }
6+
public string Href { get; set; }
7+
public string Type { get; set; }
8+
9+
public int Width
10+
{
11+
get
12+
{
13+
switch (Type)
14+
{
15+
case "xl": return 1000;
16+
case "big": return 500;
17+
case "medium": return 250;
18+
case "small": return 56;
19+
case "cover": return 120; //usually 120
20+
default: return 0;
21+
}
22+
}
23+
}
24+
public int Height
25+
{
26+
get
27+
{
28+
switch (Type)
29+
{
30+
case "xl": return 1000;
31+
case "big": return 500;
32+
case "medium": return 250;
33+
case "small": return 56;
34+
case "cover": return 120; //usually 120
35+
default: return 0;
36+
}
37+
}
38+
}
39+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.ComponentModel.DataAnnotations;
2+
3+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
4+
5+
public class DeezerAlbumModel
6+
{
7+
public long AlbumId { get; set; }
8+
public long ArtistId { get; set; }
9+
public string Title { get; set; }
10+
public string Md5Image { get; set; }
11+
public int GenreId { get; set; }
12+
public int Fans { get; set; }
13+
public string ReleaseDate { get; set; }
14+
public string RecordType { get; set; }
15+
public bool ExplicitLyrics { get; set; }
16+
public int ExplicitContentLyrics { get; set; }
17+
public int ExplicitContentCover { get; set; }
18+
public string Type { get; set; }
19+
public string UPC { get; set; }
20+
public string Label { get; set; }
21+
public int NbTracks { get; set; }
22+
public int Duration { get; set; }
23+
public bool Available { get; set; }
24+
25+
public DeezerArtistModel Artist { get; set; }
26+
public List<DeezerAlbumArtistModel> Artists { get; set; } = new List<DeezerAlbumArtistModel>();
27+
public List<DeezerAlbumImageLinkModel> Images { get; set; } = new List<DeezerAlbumImageLinkModel>();
28+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerArtistImageLinkModel
4+
{
5+
public long ArtistId { get; set; }
6+
public string Href { get; set; }
7+
public string Type { get; set; }
8+
9+
public int Width
10+
{
11+
get
12+
{
13+
switch (Type)
14+
{
15+
case "xl": return 1000;
16+
case "big": return 500;
17+
case "medium": return 250;
18+
case "small": return 56;
19+
case "picture": return 120; //usually 120
20+
default: return 0;
21+
}
22+
}
23+
}
24+
public int Height
25+
{
26+
get
27+
{
28+
switch (Type)
29+
{
30+
case "xl": return 1000;
31+
case "big": return 500;
32+
case "medium": return 250;
33+
case "small": return 56;
34+
case "picture": return 120; //usually 120
35+
default: return 0;
36+
}
37+
}
38+
}
39+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerArtistModel
4+
{
5+
public long ArtistId { get; set; }
6+
public string Name { get; set; }
7+
public int NbAlbum { get; set; }
8+
public int NbFan { get; set; }
9+
public bool Radio { get; set; }
10+
public string Type { get; set; }
11+
public DateTime LastSyncTime { get; set; }
12+
13+
public List<DeezerArtistImageLinkModel> Images { get; set; } = new List<DeezerArtistImageLinkModel>();
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerTrackArtistModel
4+
{
5+
public long TrackId { get; set; }
6+
public long ArtistId { get; set; }
7+
public string ArtistName { get; set; }
8+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
namespace MiniMediaMetadataAPI.Application.Models.Database.Deezer;
2+
3+
public class DeezerTrackModel
4+
{
5+
public long TrackId { get; set; }
6+
public bool Readable { get; set; }
7+
public string Title { get; set; }
8+
public string TitleShort { get; set; }
9+
public string TitleVersion { get; set; }
10+
public string ISRC { get; set; }
11+
public int Duration { get; set; }
12+
public int TrackPosition { get; set; }
13+
public int DiskNumber { get; set; }
14+
public int Rank { get; set; }
15+
public string ReleaseDate { get; set; }
16+
public bool ExplicitLyrics { get; set; }
17+
public int ExplicitContentLyrics { get; set; }
18+
public int ExplicitContentCover { get; set; }
19+
public string Preview { get; set; }
20+
public float BPM { get; set; }
21+
public float Gain { get; set; }
22+
public string Md5Image { get; set; }
23+
public string TrackToken { get; set; }
24+
public long ArtistId { get; set; }
25+
public long AlbumId { get; set; }
26+
public string Type { get; set; }
27+
28+
public DeezerAlbumModel Album { get; set; }
29+
public List<DeezerTrackArtistModel> Artists { get; set; } = new List<DeezerTrackArtistModel>();
30+
}

0 commit comments

Comments
 (0)