mirror of
https://github.com/iv-org/invidious.git
synced 2025-05-31 14:11:54 +05:30
Add users table
This commit is contained in:
@@ -79,6 +79,15 @@ class ChannelVideo
|
||||
})
|
||||
end
|
||||
|
||||
class User
|
||||
add_mapping({
|
||||
id: String,
|
||||
updated: Time,
|
||||
notifications: Int32,
|
||||
subscriptions: Array(String),
|
||||
})
|
||||
end
|
||||
|
||||
class RedditSubmit
|
||||
JSON.mapping({
|
||||
data: RedditSubmitData,
|
||||
@@ -545,3 +554,40 @@ def fetch_channel(id, client, db)
|
||||
|
||||
return channel
|
||||
end
|
||||
|
||||
def get_user(sid, client, headers, db)
|
||||
if db.query_one?("SELECT EXISTS (SELECT true FROM users WHERE id = $1)", sid, as: Bool)
|
||||
user = db.query_one("SELECT * FROM users WHERE id = $1", sid, as: User)
|
||||
|
||||
if Time.now - user.updated > 1.minutes
|
||||
user = fetch_user(sid, client, headers)
|
||||
user_array = user.to_a
|
||||
args = arg_array(user_array)
|
||||
|
||||
db.exec("INSERT INTO users VALUES (#{args}) \
|
||||
ON CONFLICT (id) DO UPDATE SET updated = $2, subscriptions = $4", user_array)
|
||||
end
|
||||
else
|
||||
user = fetch_user(sid, client, headers)
|
||||
args = arg_array(user.to_a)
|
||||
db.exec("INSERT INTO users VALUES (#{args})", user.to_a)
|
||||
end
|
||||
|
||||
return user
|
||||
end
|
||||
|
||||
def fetch_user(sid, client, headers)
|
||||
feed = client.get("/subscription_manager?action_takeout=1", headers).body
|
||||
|
||||
channels = [] of String
|
||||
feed = XML.parse_html(feed)
|
||||
feed.xpath_nodes("//opml/outline/outline").each do |channel|
|
||||
id = channel["xmlurl"][-24..-1]
|
||||
get_channel(id, client, PG_DB)
|
||||
|
||||
channels << id
|
||||
end
|
||||
|
||||
user = User.new(sid, Time.now, 0, channels)
|
||||
return user
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user