Put CSV import function under its own module

This commit is contained in:
Samantaz Fox 2022-02-04 05:19:22 +01:00
parent ad4a06fca5
commit ef8dc7272b
No known key found for this signature in database
GPG Key ID: F42821059186176E

View File

@ -1,27 +1,33 @@
require "csv" require "csv"
def parse_subscription_export_csv(csv_content : String) struct Invidious::User
rows = CSV.new(csv_content, headers: true) module Import
subscriptions = Array(String).new extend self
# Counter to limit the amount of imports. # Parse a youtube CSV subscription file
# This is intended to prevent DoS. def parse_subscription_export_csv(csv_content : String)
row_counter = 0 rows = CSV.new(csv_content, headers: true)
subscriptions = Array(String).new
rows.each do |row| # Counter to limit the amount of imports.
# Limit to 1200 # This is intended to prevent DoS.
row_counter += 1 row_counter = 0
break if row_counter > 1_200
# Channel ID is the first column in the csv export we can't use the header rows.each do |row|
# name, because the header name is localized depending on the # Limit to 1200
# language the user has set on their account row_counter += 1
channel_id = row[0].strip break if row_counter > 1_200
next if channel_id.empty? # Channel ID is the first column in the csv export we can't use the header
# name, because the header name is localized depending on the
# language the user has set on their account
channel_id = row[0].strip
subscriptions << channel_id next if channel_id.empty?
subscriptions << channel_id
end
return subscriptions
end
end end
return subscriptions
end end