forked from midou/invidious
		
	Merge pull request #2382 from unixfox/fix-comment-replies
fix comment replies
This commit is contained in:
		| @@ -70,8 +70,24 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|  | ||||
|   client_config = YoutubeAPI::ClientConfig.new(region: region) | ||||
|   response = YoutubeAPI.next(continuation: ctoken, client_config: client_config) | ||||
|   contents = nil | ||||
|  | ||||
|   if response["continuationContents"]? | ||||
|   if response["onResponseReceivedEndpoints"]? | ||||
|     onResponseReceivedEndpoints = response["onResponseReceivedEndpoints"] | ||||
|     header = nil | ||||
|     onResponseReceivedEndpoints.as_a.each do |item| | ||||
|       if item["reloadContinuationItemsCommand"]? | ||||
|         case item["reloadContinuationItemsCommand"]["slot"] | ||||
|         when "RELOAD_CONTINUATION_SLOT_HEADER" | ||||
|           header = item["reloadContinuationItemsCommand"]["continuationItems"][0] | ||||
|         when "RELOAD_CONTINUATION_SLOT_BODY" | ||||
|           contents = item["reloadContinuationItemsCommand"]["continuationItems"] | ||||
|         end | ||||
|       elsif item["appendContinuationItemsAction"]? | ||||
|         contents = item["appendContinuationItemsAction"]["continuationItems"] | ||||
|       end | ||||
|     end | ||||
|   elsif response["continuationContents"]? | ||||
|     response = response["continuationContents"] | ||||
|     if response["commentRepliesContinuation"]? | ||||
|       body = response["commentRepliesContinuation"] | ||||
| @@ -83,22 +99,6 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|     if body["continuations"]? | ||||
|       moreRepliesContinuation = body["continuations"][0]["nextContinuationData"]["continuation"].as_s | ||||
|     end | ||||
|   elsif response["onResponseReceivedEndpoints"]? | ||||
|     onResponseReceivedEndpoints = response["onResponseReceivedEndpoints"] | ||||
|     onResponseReceivedEndpoints.as_a.each do |item| | ||||
|       case item["reloadContinuationItemsCommand"]["slot"] | ||||
|       when "RELOAD_CONTINUATION_SLOT_HEADER" | ||||
|         header = item["reloadContinuationItemsCommand"]["continuationItems"][0] | ||||
|       when "RELOAD_CONTINUATION_SLOT_BODY" | ||||
|         contents = item["reloadContinuationItemsCommand"]["continuationItems"] | ||||
|         contents.as_a.reject! do |item| | ||||
|           if item["continuationItemRenderer"]? | ||||
|             moreRepliesContinuation = item["continuationItemRenderer"]["continuationEndpoint"]["continuationCommand"]["token"].as_s | ||||
|             true | ||||
|           end | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   else | ||||
|     raise InfoException.new("Could not fetch comments") | ||||
|   end | ||||
| @@ -111,6 +111,14 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   continuationItemRenderer = nil | ||||
|   contents.as_a.reject! do |item| | ||||
|     if item["continuationItemRenderer"]? | ||||
|       continuationItemRenderer = item["continuationItemRenderer"] | ||||
|       true | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   response = JSON.build do |json| | ||||
|     json.object do | ||||
|       if header | ||||
| @@ -126,7 +134,7 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|         json.array do | ||||
|           contents.as_a.each do |node| | ||||
|             json.object do | ||||
|               if !response["commentRepliesContinuation"]? | ||||
|               if node["commentThreadRenderer"]? | ||||
|                 node = node["commentThreadRenderer"] | ||||
|               end | ||||
|  | ||||
| @@ -134,7 +142,7 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|                 node_replies = node["replies"]["commentRepliesRenderer"] | ||||
|               end | ||||
|  | ||||
|               if !response["commentRepliesContinuation"]? | ||||
|               if node["comment"]? | ||||
|                 node_comment = node["comment"]["commentRenderer"] | ||||
|               else | ||||
|                 node_comment = node["commentRenderer"] | ||||
| @@ -224,8 +232,15 @@ def fetch_youtube_comments(id, cursor, format, locale, thin_mode, region, sort_b | ||||
|         end | ||||
|       end | ||||
|  | ||||
|       if moreRepliesContinuation | ||||
|         json.field "continuation", moreRepliesContinuation | ||||
|       if continuationItemRenderer | ||||
|         if continuationItemRenderer["continuationEndpoint"]? | ||||
|           continuationEndpoint = continuationItemRenderer["continuationEndpoint"] | ||||
|         elsif continuationItemRenderer["button"]? | ||||
|           continuationEndpoint = continuationItemRenderer["button"]["buttonRenderer"]["command"] | ||||
|         end | ||||
|         if continuationEndpoint | ||||
|           json.field "continuation", continuationEndpoint["continuationCommand"]["token"].as_s | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user