aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-12-04 13:56:25 +0100
committerivarlovlie <git@ivarlovlie.no>2022-12-04 13:56:25 +0100
commit9ab1cb97e92b4e6139ce14cb0a2eeafde8168758 (patch)
tree37dd9c00268dad0de1c2af5a438a64e9694dcbb3 /src
parent2ea053d4c436a79d77b205d3d74716244da91058 (diff)
downloadlettnytt-9ab1cb97e92b4e6139ce14cb0a2eeafde8168758.tar.xz
lettnytt-9ab1cb97e92b4e6139ce14cb0a2eeafde8168758.zip
feat: Working radio indexing
Diffstat (limited to 'src')
-rw-r--r--src/Models/NrkRadioCategorySearchResult.cs1
-rw-r--r--src/Services/NrkRadioService.cs18
2 files changed, 11 insertions, 8 deletions
diff --git a/src/Models/NrkRadioCategorySearchResult.cs b/src/Models/NrkRadioCategorySearchResult.cs
index 6672105..d99a036 100644
--- a/src/Models/NrkRadioCategorySearchResult.cs
+++ b/src/Models/NrkRadioCategorySearchResult.cs
@@ -35,6 +35,7 @@ public class RadioCategorySearchResult
{
public NrkLinks.LinkModel CustomSeason { get; set; }
public NrkLinks.LinkModel Series { get; set; }
+ public NrkLinks.LinkModel Podcast { get; set; }
}
}
diff --git a/src/Services/NrkRadioService.cs b/src/Services/NrkRadioService.cs
index 7077d16..d77d421 100644
--- a/src/Services/NrkRadioService.cs
+++ b/src/Services/NrkRadioService.cs
@@ -20,9 +20,7 @@ public class NrkRadioService
var letters = "#ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ".ToCharArray();
var skip = 0;
foreach (var letter in letters) {
-
- // TODO: Support series._links.podcast in addition to series._links.seasons
- var path = "/radio/search/categories/alt-innhold?letter=" + letter == "#" ? "%23" : letter + "&skip=0&take=50";
+ var path = "/radio/search/categories/alt-innhold?letter=" + (letter == '#' ? "%23" : letter) + "&skip=0&take=50";
while (path.HasValue()) {
var response = await _http.GetFromJsonAsync<RadioCategorySearchResult>(path);
if (response == default) break;
@@ -35,8 +33,11 @@ public class NrkRadioService
};
var seriesId = dbSeries.Id > 0 ? dbSeries.Id : RadioIndexDb.AddSeries(dbSeries);
_logger.LogInformation("Added series {0} with id {1}, to the database", dbSeries.Name, seriesId);
- if (!series.Links?.Series?.Href?.HasValue() ?? true) continue;
- var seriesMetadata = await _http.GetFromJsonAsync<NrkRadioSeries>(series.Links.Series.Href);
+ if ((series.Links?.Series?.Href.IsNullOrWhiteSpace() ?? true)
+ && (series.Links?.Series?.Href.IsNullOrWhiteSpace() ?? true)
+ && (series.Links?.Series?.Href.IsNullOrWhiteSpace() ?? true)
+ ) continue;
+ var seriesMetadata = await _http.GetFromJsonAsync<NrkRadioSeries>(series.Links?.Series?.Href ?? series.Links?.Podcast?.Href ?? series.Links?.CustomSeason?.Href);
if (seriesMetadata == default) continue;
await Task.Delay(1000);
if (seriesMetadata.Embedded.Seasons?.Any() ?? false) {
@@ -55,7 +56,7 @@ public class NrkRadioService
}
}
- path = response.Links.NextPage.Href.HasValue() ? response.Links.NextPage.Href : "";
+ path = response.Links?.NextPage?.Href?.HasValue() ?? false ? response.Links.NextPage.Href : "";
}
}
}
@@ -76,8 +77,9 @@ public class NrkRadioService
continue;
}
- var playbackResponse = await _http.GetFromJsonAsync<NrkPlaybackManifest>("/playback/manifest/program/" + dbEpisode.NrkId);
- if (playbackResponse == default) continue;
+ var manifestType = episode.Links.Playback.Href.Contains("podcast") ? "podcast" : "program";
+ var playbackResponse = await _http.GetFromJsonAsync<NrkPlaybackManifest>("/playback/manifest/" + manifestType + "/" + dbEpisode.NrkId);
+ if (playbackResponse?.Playable == null) continue;
dbEpisode.SourceUrl = playbackResponse.Playable.Assets.FirstOrDefault()?.Url;
var episodeId = dbEpisode.Id > 0 ? dbEpisode.Id : RadioIndexDb.AddEpisode(dbEpisode);
_logger.LogInformation("Added episode {0} to series {1} season {2} with id {3}, to the database", dbEpisode.Name, dbSeries.Name, dbSeason?.Name ?? "!!NO SEASON!!", episodeId);