diff --git a/config/config.yml b/config/config.yml index 54a25417..62e80704 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,7 +1,7 @@ -crawl_threads: 1 +video_threads: 0 +crawl_threads: 0 channel_threads: 1 feed_threads: 1 -video_threads: 1 db: user: kemal password: kemal diff --git a/src/invidious.cr b/src/invidious.cr index 85e94c8b..930cb0fa 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -require "crypto/bcrypt/password" require "detect_language" require "digest/md5" require "kemal" diff --git a/src/invidious/jobs.cr b/src/invidious/jobs.cr index 6f5481c9..afd0ad31 100644 --- a/src/invidious/jobs.cr +++ b/src/invidious/jobs.cr @@ -180,6 +180,21 @@ def pull_top_videos(config, db) end end +def pull_popular_videos(db) + loop do + subscriptions = PG_DB.query_all("SELECT channel FROM \ + (SELECT UNNEST(subscriptions) AS channel FROM users) AS d \ + GROUP BY channel ORDER BY COUNT(channel) DESC LIMIT 40", as: String) + + videos = PG_DB.query_all("SELECT DISTINCT ON (ucid) * FROM \ + channel_videos WHERE ucid IN (#{arg_array(subscriptions)}) \ + ORDER BY ucid, published DESC", subscriptions, as: ChannelVideo).sort_by { |video| video.published }.reverse + + yield videos + Fiber.yield + end +end + def update_decrypt_function loop do begin diff --git a/src/invidious/users.cr b/src/invidious/users.cr index b7cb3fbd..28879d23 100644 --- a/src/invidious/users.cr +++ b/src/invidious/users.cr @@ -1,3 +1,5 @@ +require "crypto/bcrypt/password" + class User module PreferencesConverter def self.from_rs(rs)