@@ -32,35 +32,30 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
3232 indexerResponse . Content ,
3333 IndexerParserHelper . StandardJsonOptions ) ;
3434
35- if ( response ? . Results == null )
35+ if ( response ? . Data == null )
3636 {
3737 logger . Trace ( "No results found in response" ) ;
3838 return releases ;
3939 }
4040
41- foreach ( TripleTripleResult result in response . Results )
41+ foreach ( TripleTripleSearchEdge edge in response . Data . SearchAlbums ? . Edges ?? [ ] )
4242 {
43- if ( result . Hits == null )
43+ if ( edge . Node == null )
4444 continue ;
45+ AlbumData albumData = CreateAlbumRelease ( edge . Node , codec ) ;
46+ albumData . ParseReleaseDate ( ) ;
47+ releases . Add ( albumData . ToReleaseInfo ( ) ) ;
48+ }
4549
46- foreach ( TripleTripleSearchHit hit in result . Hits )
50+ if ( isSingle )
51+ {
52+ foreach ( TripleTripleSearchEdge edge in response . Data . SearchTracks ? . Edges ?? [ ] )
4753 {
48- TripleTripleDocument ? document = hit . Document ;
49- if ( document == null )
54+ if ( edge . Node == null )
5055 continue ;
51-
52- if ( document . IsAlbum )
53- {
54- AlbumData albumData = CreateAlbumRelease ( document , codec ) ;
55- albumData . ParseReleaseDate ( ) ;
56- releases . Add ( albumData . ToReleaseInfo ( ) ) ;
57- }
58- else if ( document . IsTrack && isSingle )
59- {
60- AlbumData trackData = CreateTrackRelease ( document , codec ) ;
61- trackData . ParseReleaseDate ( ) ;
62- releases . Add ( trackData . ToReleaseInfo ( ) ) ;
63- }
56+ AlbumData trackData = CreateTrackRelease ( edge . Node , codec ) ;
57+ trackData . ParseReleaseDate ( ) ;
58+ releases . Add ( trackData . ToReleaseInfo ( ) ) ;
6459 }
6560 }
6661 }
@@ -72,49 +67,48 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
7267 return releases ;
7368 }
7469
75- private AlbumData CreateAlbumRelease ( TripleTripleDocument album , TripleTripleCodec codec )
70+ private AlbumData CreateAlbumRelease ( TripleTripleSearchNode album , TripleTripleCodec codec )
7671 {
7772 ( AudioFormat format , int bitrate , int bitDepth ) = GetQualityForCodec ( codec ) ;
78- int trackCount = album . TrackNum > 0 ? album . TrackNum : 10 ;
79- long estimatedSize = IndexerParserHelper . EstimateSize ( 0 , 0 , bitrate , trackCount ) ;
73+ int trackCount = album . TrackCount > 0 ? album . TrackCount : 10 ;
74+ long estimatedSize = IndexerParserHelper . EstimateSize ( 0 , album . Duration , bitrate , trackCount ) ;
75+ bool hasDate = DateTime . TryParse ( album . ReleaseDate , out DateTime releaseDate ) ;
8076
8177 return new ( "TripleTriple" , nameof ( AmazonMusicDownloadProtocol ) )
8278 {
83- AlbumId = $ "album/{ album . Asin } ",
79+ AlbumId = $ "album/{ album . Id } ",
8480 AlbumName = album . Title ,
8581 ArtistName = album . ArtistName ,
86- InfoUrl = $ "https://music.amazon.com/albums/{ album . Asin } ",
82+ InfoUrl = $ "https://music.amazon.com/albums/{ album . Id } ",
8783 TotalTracks = trackCount ,
88- ReleaseDate = album . OriginalReleaseDate . HasValue && album . OriginalReleaseDate . Value > 0
89- ? DateTimeOffset . FromUnixTimeSeconds ( album . OriginalReleaseDate . Value ) . ToString ( "yyyy-MM-dd" )
90- : DateTime . Now . Year . ToString ( ) ,
91- ReleaseDatePrecision = album . OriginalReleaseDate . HasValue && album . OriginalReleaseDate . Value > 0 ? "day" : "year" ,
92- CustomString = album . ArtOriginal ? . Url ?? album . ArtOriginal ? . ArtUrl ?? string . Empty ,
84+ ReleaseDate = hasDate ? releaseDate . ToString ( "yyyy-MM-dd" ) : DateTime . Now . Year . ToString ( ) ,
85+ ReleaseDatePrecision = hasDate ? "day" : "year" ,
86+ Duration = album . Duration ,
87+ CustomString = album . CoverUrl ?? string . Empty ,
9388 Codec = format ,
9489 Bitrate = bitrate ,
9590 BitDepth = bitDepth ,
9691 Size = estimatedSize
9792 } ;
9893 }
9994
100- private AlbumData CreateTrackRelease ( TripleTripleDocument track , TripleTripleCodec codec )
95+ private AlbumData CreateTrackRelease ( TripleTripleSearchNode track , TripleTripleCodec codec )
10196 {
10297 ( AudioFormat format , int bitrate , int bitDepth ) = GetQualityForCodec ( codec ) ;
10398 long estimatedSize = IndexerParserHelper . EstimateSize ( 0 , track . Duration , bitrate ) ;
99+ bool hasDate = DateTime . TryParse ( track . ReleaseDate , out DateTime releaseDate ) ;
104100
105101 return new ( "TripleTriple" , nameof ( AmazonMusicDownloadProtocol ) )
106102 {
107- AlbumId = $ "track/{ track . Asin } ",
108- AlbumName = track . AlbumName ?? track . Title ,
103+ AlbumId = $ "track/{ track . Id } ",
104+ AlbumName = track . Album ? . Title ?? track . Title ,
109105 ArtistName = track . ArtistName ,
110- InfoUrl = $ "https://music.amazon.com/tracks/{ track . Asin } ",
106+ InfoUrl = $ "https://music.amazon.com/tracks/{ track . Id } ",
111107 TotalTracks = 1 ,
112- ReleaseDate = track . OriginalReleaseDate . HasValue && track . OriginalReleaseDate . Value > 0
113- ? DateTimeOffset . FromUnixTimeSeconds ( track . OriginalReleaseDate . Value ) . ToString ( "yyyy-MM-dd" )
114- : DateTime . Now . Year . ToString ( ) ,
115- ReleaseDatePrecision = track . OriginalReleaseDate . HasValue && track . OriginalReleaseDate . Value > 0 ? "day" : "year" ,
108+ ReleaseDate = hasDate ? releaseDate . ToString ( "yyyy-MM-dd" ) : DateTime . Now . Year . ToString ( ) ,
109+ ReleaseDatePrecision = hasDate ? "day" : "year" ,
116110 Duration = track . Duration ,
117- CustomString = track . ArtOriginal ? . Url ?? track . ArtOriginal ? . ArtUrl ?? string . Empty ,
111+ CustomString = track . CoverUrl ?? track . Album ? . CoverUrl ?? string . Empty ,
118112 Codec = format ,
119113 Bitrate = bitrate ,
120114 BitDepth = bitDepth ,
0 commit comments