Skip to content

Commit b7b10ea

Browse files
committed
restored older working json paths as fallbacks
1 parent 678b371 commit b7b10ea

File tree

1 file changed

+50
-7
lines changed

1 file changed

+50
-7
lines changed

YoutubeExplode/Bridge/SearchResponse.cs

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@ internal partial class SearchResponse(JsonElement content)
3030
ContentRoot
3131
?.EnumerateDescendantProperties("lockupViewModel")
3232
.Select(j => new PlaylistData(j))
33-
.ToArray() ?? [];
33+
.ToArray()
34+
// fall back to older working paths
35+
?? ContentRoot
36+
?.EnumerateDescendantProperties("playlistRenderer")
37+
.Select(j => new PlaylistData(j))
38+
.ToArray()
39+
?? [];
3440

3541
[Lazy]
3642
public IReadOnlyList<ChannelData> Channels =>
@@ -129,13 +135,27 @@ internal partial class SearchResponse
129135
public class PlaylistData(JsonElement content)
130136
{
131137
[Lazy]
132-
public string? Id => content.GetPropertyOrNull("contentId")?.GetStringOrNull();
138+
public string? Id =>
139+
content.GetPropertyOrNull("contentId")?.GetStringOrNull()
140+
// fall back to older working paths
141+
?? content.GetPropertyOrNull("playlistId")?.GetStringOrNull();
133142

134143
[Lazy]
135-
private JsonElement? Metadata => content.GetPropertyOrNull("metadata")?.GetPropertyOrNull("lockupMetadataViewModel");
144+
private JsonElement? Metadata =>
145+
content.GetPropertyOrNull("metadata")?.GetPropertyOrNull("lockupMetadataViewModel");
136146

137147
[Lazy]
138-
public string? Title => Metadata?.GetPropertyOrNull("title")?.GetPropertyOrNull("content")?.GetStringOrNull();
148+
public string? Title =>
149+
Metadata?.GetPropertyOrNull("title")?.GetPropertyOrNull("content")?.GetStringOrNull()
150+
// fall back to older working paths
151+
?? content.GetPropertyOrNull("title")?.GetPropertyOrNull("simpleText")?.GetStringOrNull()
152+
?? content
153+
.GetPropertyOrNull("title")
154+
?.GetPropertyOrNull("runs")
155+
?.EnumerateArrayOrNull()
156+
?.Select(j => j.GetPropertyOrNull("text")?.GetStringOrNull())
157+
.WhereNotNull()
158+
.ConcatToString();
139159

140160
[Lazy]
141161
private JsonElement? AuthorDetails =>
@@ -144,10 +164,19 @@ public class PlaylistData(JsonElement content)
144164
?.ElementAtOrNull(0)
145165
?.EnumerateArrayOrNull()
146166
?.ElementAtOrNull(0)
147-
?.GetPropertyOrNull("text");
167+
?.GetPropertyOrNull("text")
168+
// fall back to older working paths
169+
?? content
170+
.GetPropertyOrNull("longBylineText")
171+
?.GetPropertyOrNull("runs")
172+
?.EnumerateArrayOrNull()
173+
?.ElementAtOrNull(0);
148174

149175
[Lazy]
150-
public string? Author => AuthorDetails?.GetPropertyOrNull("content")?.GetStringOrNull();
176+
public string? Author =>
177+
AuthorDetails?.GetPropertyOrNull("content")?.GetStringOrNull()
178+
// fall back to older working paths
179+
?? AuthorDetails?.GetPropertyOrNull("text")?.GetStringOrNull();
151180

152181
[Lazy]
153182
public string? ChannelId =>
@@ -159,6 +188,12 @@ public class PlaylistData(JsonElement content)
159188
?.GetPropertyOrNull("innertubeCommand")
160189
?.GetPropertyOrNull("browseEndpoint")
161190
?.GetPropertyOrNull("browseId")
191+
?.GetStringOrNull()
192+
// fall back to older working paths
193+
?? AuthorDetails
194+
?.GetPropertyOrNull("navigationEndpoint")
195+
?.GetPropertyOrNull("browseEndpoint")
196+
?.GetPropertyOrNull("browseId")
162197
?.GetStringOrNull();
163198

164199
[Lazy]
@@ -172,7 +207,15 @@ public class PlaylistData(JsonElement content)
172207
?.GetPropertyOrNull("sources")
173208
?.EnumerateArrayOrEmpty()
174209
.Select(j => new ThumbnailData(j))
175-
.ToArray() ?? [];
210+
.ToArray()
211+
// fall back to older working paths
212+
?? content
213+
.GetPropertyOrNull("thumbnails")
214+
?.EnumerateDescendantProperties("thumbnails")
215+
.SelectMany(j => j.EnumerateArrayOrEmpty())
216+
.Select(j => new ThumbnailData(j))
217+
.ToArray()
218+
?? [];
176219
}
177220
}
178221

0 commit comments

Comments
 (0)