mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-11-04 14:41:59 +00:00 
			
		
		
		
	Add support for 'user' URLs in NewPipe import
This commit is contained in:
		@@ -1842,8 +1842,22 @@ post "/data_control" do |env|
 | 
			
		||||
        PG_DB.exec("UPDATE users SET subscriptions = $1 WHERE email = $2", user.subscriptions, user.email)
 | 
			
		||||
      when "import_newpipe_subscriptions"
 | 
			
		||||
        body = JSON.parse(body)
 | 
			
		||||
        user.subscriptions += body["subscriptions"].as_a.map do |channel|
 | 
			
		||||
          channel["url"].as_s.match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0]
 | 
			
		||||
        user.subscriptions += body["subscriptions"].as_a.compact_map do |channel|
 | 
			
		||||
          if match = channel["url"].as_s.match(/\/channel\/(?<channel>UC[a-zA-Z0-9_-]{22})/)
 | 
			
		||||
            next match["channel"]
 | 
			
		||||
          elsif match = channel["url"].as_s.match(/\/user\/(?<user>.+)/)
 | 
			
		||||
            client = make_client(YT_URL)
 | 
			
		||||
            response = client.get("/user/#{match["user"]}?disable_polymer=1&hl=en&gl=US")
 | 
			
		||||
            document = XML.parse_html(response.body)
 | 
			
		||||
            canonical = document.xpath_node(%q(//link[@rel="canonical"]))
 | 
			
		||||
 | 
			
		||||
            if canonical
 | 
			
		||||
              ucid = canonical["href"].split("/")[-1]
 | 
			
		||||
              next ucid
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          nil
 | 
			
		||||
        end
 | 
			
		||||
        user.subscriptions.uniq!
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -51,8 +51,7 @@ def get_batch_channels(channels, db, refresh = false, pull_all_videos = true, ma
 | 
			
		||||
 | 
			
		||||
  final = [] of String
 | 
			
		||||
  channels.size.times do
 | 
			
		||||
    ucid = finished_channel.receive
 | 
			
		||||
    if ucid
 | 
			
		||||
    if ucid = finished_channel.receive
 | 
			
		||||
      final << ucid
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
@@ -63,6 +63,12 @@ def channel_search(query, page, channel)
 | 
			
		||||
    canonical = document.xpath_node(%q(//link[@rel="canonical"]))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if !canonical
 | 
			
		||||
    response = client.get("/user/#{channel}?disable_polymer=1&hl=en&gl=US")
 | 
			
		||||
    document = XML.parse_html(response.body)
 | 
			
		||||
    canonical = document.xpath_node(%q(//link[@rel="canonical"]))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if !canonical
 | 
			
		||||
    return 0, [] of SearchItem
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user