@@ -140,19 +140,32 @@ def fetch_related_channels(about_channel : AboutChannel) : Array(AboutRelatedCha
140140
141141 return [] of AboutRelatedChannel if tab.nil?
142142
143- items = tab.dig?(" tabRenderer" , " content" , " sectionListRenderer" , " contents" , 0 , " itemSectionRenderer" , " contents" , 0 , " gridRenderer" , " items" ).try(& .as_a?) || [] of JSON ::Any
144-
145- items.map do |item |
146- related_id = item.dig(" gridChannelRenderer" , " channelId" ).as_s
147- related_title = item.dig(" gridChannelRenderer" , " title" , " simpleText" ).as_s
148- related_author_url = item.dig(" gridChannelRenderer" , " navigationEndpoint" , " browseEndpoint" , " canonicalBaseUrl" ).as_s
149- related_author_thumbnail = item.dig(" gridChannelRenderer" , " thumbnail" , " thumbnails" , -1 , " url" ).as_s
150-
151- AboutRelatedChannel .new(
143+ items = tab.dig?(
144+ " tabRenderer" , " content" ,
145+ " sectionListRenderer" , " contents" , 0 ,
146+ " itemSectionRenderer" , " contents" , 0 ,
147+ " gridRenderer" , " items"
148+ ).try & .as_a?
149+
150+ related = [] of AboutRelatedChannel
151+ return related if (items.nil? || items.empty?)
152+
153+ items.each do |item |
154+ renderer = item[" gridChannelRenderer" ]?
155+ next if ! renderer
156+
157+ related_id = renderer.dig(" channelId" ).as_s
158+ related_title = renderer.dig(" title" , " simpleText" ).as_s
159+ related_author_url = renderer.dig(" navigationEndpoint" , " browseEndpoint" , " canonicalBaseUrl" ).as_s
160+ related_author_thumbnail = HelperExtractors .get_thumbnails(renderer)
161+
162+ related << AboutRelatedChannel .new(
152163 ucid: related_id,
153164 author: related_title,
154165 author_url: related_author_url,
155166 author_thumbnail: related_author_thumbnail,
156167 )
157168 end
169+
170+ return related
158171end
0 commit comments