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
1 changed files with 24 additions and 18 deletions

View File

@ -1,27 +1,33 @@
require "csv"
def parse_subscription_export_csv(csv_content : String)
rows = CSV.new(csv_content, headers: true)
subscriptions = Array(String).new
struct Invidious::User
module Import
extend self
# Counter to limit the amount of imports.
# This is intended to prevent DoS.
row_counter = 0
# Parse a youtube CSV subscription file
def parse_subscription_export_csv(csv_content : String)
rows = CSV.new(csv_content, headers: true)
subscriptions = Array(String).new
rows.each do |row|
# Limit to 1200
row_counter += 1
break if row_counter > 1_200
# Counter to limit the amount of imports.
# This is intended to prevent DoS.
row_counter = 0
# 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
rows.each do |row|
# Limit to 1200
row_counter += 1
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
return subscriptions
end