mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-30 20:22:00 +00:00 
			
		
		
		
	| @@ -403,7 +403,7 @@ def produce_channel_videos_url(ucid, page = 1, auto_generated = nil, sort_by = " | ||||
|  | ||||
|     object["80226972:embedded"]["3:base64"].as(Hash)["61:string"] = Base64.urlsafe_encode(Protodec::Any.from_json(Protodec::Any.cast_json({ | ||||
|       "1:embedded" => { | ||||
|         "1:varint" => 6307666885028338688_i64, | ||||
|         "1:varint"   => 6307666885028338688_i64, | ||||
|         "2:embedded" => { | ||||
|           "1:string" => Base64.urlsafe_encode(Protodec::Any.from_json(Protodec::Any.cast_json({ | ||||
|             "1:varint" => 30_i64 * (page - 1), | ||||
| @@ -896,9 +896,9 @@ def get_channel_videos_response(ucid, page = 1, auto_generated = nil, sort_by = | ||||
|   return response if !initial_data | ||||
|   needs_v2 = initial_data | ||||
|     .try &.["response"]?.try &.["alerts"]? | ||||
|     .try &.as_a.any? { |alert| | ||||
|       alert.try &.["alertRenderer"]?.try &.["type"]?.try { |t| t == "ERROR" } | ||||
|     } | ||||
|       .try &.as_a.any? { |alert| | ||||
|         alert.try &.["alertRenderer"]?.try &.["type"]?.try { |t| t == "ERROR" } | ||||
|       } | ||||
|   if needs_v2 | ||||
|     url = produce_channel_videos_url(ucid, page, auto_generated: auto_generated, sort_by: sort_by, v2: true) | ||||
|     response = YT_POOL.client &.get(url) | ||||
|   | ||||
| @@ -177,8 +177,8 @@ def extract_item(item : JSON::Any, author_fallback : String? = nil, author_id_fa | ||||
|     view_count = i["viewCountText"]?.try &.["simpleText"]?.try &.as_s.gsub(/\D+/, "").to_i64? || 0_i64 | ||||
|     description_html = i["descriptionSnippet"]?.try { |t| parse_content(t) } || "" | ||||
|     length_seconds = i["lengthText"]?.try &.["simpleText"]?.try &.as_s.try { |t| decode_length_seconds(t) } || | ||||
|       i["thumbnailOverlays"]?.try &.as_a.find(&.["thumbnailOverlayTimeStatusRenderer"]?).try &.["thumbnailOverlayTimeStatusRenderer"]? | ||||
|         .try &.["text"]?.try &.["simpleText"]?.try &.as_s.try { |t| decode_length_seconds(t) } || 0 | ||||
|                      i["thumbnailOverlays"]?.try &.as_a.find(&.["thumbnailOverlayTimeStatusRenderer"]?).try &.["thumbnailOverlayTimeStatusRenderer"]? | ||||
|                        .try &.["text"]?.try &.["simpleText"]?.try &.as_s.try { |t| decode_length_seconds(t) } || 0 | ||||
|  | ||||
|     live_now = false | ||||
|     paid = false | ||||
| @@ -302,14 +302,14 @@ def extract_items(initial_data : Hash(String, JSON::Any), author_fallback : Stri | ||||
|  | ||||
|   channel_v2_response = initial_data | ||||
|     .try &.["response"]? | ||||
|     .try &.["continuationContents"]? | ||||
|     .try &.["gridContinuation"]? | ||||
|     .try &.["items"]? | ||||
|       .try &.["continuationContents"]? | ||||
|         .try &.["gridContinuation"]? | ||||
|           .try &.["items"]? | ||||
|  | ||||
|   if channel_v2_response | ||||
|     channel_v2_response.try &.as_a.each { |item| | ||||
|         extract_item(item, author_fallback, author_id_fallback) | ||||
|           .try { |t| items << t } | ||||
|       extract_item(item, author_fallback, author_id_fallback) | ||||
|         .try { |t| items << t } | ||||
|     } | ||||
|   else | ||||
|     initial_data.try { |t| t["contents"]? || t["response"]? } | ||||
| @@ -325,7 +325,7 @@ def extract_items(initial_data : Hash(String, JSON::Any), author_fallback : Stri | ||||
|             extract_item(item, author_fallback, author_id_fallback) | ||||
|               .try { |t| items << t } | ||||
|           } } | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   items | ||||
| end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 TheFrenchGhosty
					TheFrenchGhosty