Add job for pulling popular videos
This commit is contained in:
parent
26eb59e00d
commit
3c98601f35
3 changed files with 24 additions and 1 deletions
|
@ -14,7 +14,6 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
require "crypto/bcrypt/password"
|
||||
require "detect_language"
|
||||
require "digest/md5"
|
||||
require "kemal"
|
||||
|
@ -112,6 +111,13 @@ spawn do
|
|||
end
|
||||
end
|
||||
|
||||
popular_videos = [] of ChannelVideo
|
||||
spawn do
|
||||
pull_popular_videos(PG_DB) do |videos|
|
||||
popular_videos = videos
|
||||
end
|
||||
end
|
||||
|
||||
decrypt_function = [] of {name: String, value: Int32}
|
||||
spawn do
|
||||
update_decrypt_function do |function|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
require "crypto/bcrypt/password"
|
||||
|
||||
class User
|
||||
module PreferencesConverter
|
||||
def self.from_rs(rs)
|
||||
|
|
Loading…
Reference in a new issue