add mock recommender service for development, add user-context recommended posts
This commit is contained in:
@@ -1,25 +1,26 @@
|
||||
module RecommenderService
|
||||
extend self
|
||||
|
||||
SCORE_THRESHOLD = 10
|
||||
SCORE_THRESHOLD = 5
|
||||
|
||||
def enabled?
|
||||
Danbooru.config.recommender_server.present?
|
||||
end
|
||||
|
||||
def available?(post)
|
||||
def available_for_post?(post)
|
||||
return true if Rails.env.development?
|
||||
|
||||
enabled? && CurrentUser.enable_recommended_posts? && post.created_at > Date.civil(2018, 1, 1) && post.score >= SCORE_THRESHOLD
|
||||
end
|
||||
|
||||
def similar(post)
|
||||
if Danbooru.config.recommender_server == "development"
|
||||
return Post.order("random()").limit(6).map {|x| [x.id, "1.000"]}
|
||||
end
|
||||
def available_for_user?
|
||||
enabled? && CurrentUser.is_gold?
|
||||
end
|
||||
|
||||
Cache.get("rss:#{post.id}", 1.day) do
|
||||
def recommend_for_user(user_id)
|
||||
ids = Cache.get("rsu:#{user_id}", 1.day) do
|
||||
resp = HTTParty.get(
|
||||
"#{Danbooru.config.recommender_server}/similar/#{post.id}",
|
||||
"#{Danbooru.config.recommender_server}/recommend/#{user_id}",
|
||||
Danbooru.config.httparty_options.merge(
|
||||
basic_auth: {
|
||||
username: "danbooru",
|
||||
@@ -29,5 +30,30 @@ module RecommenderService
|
||||
)
|
||||
JSON.parse(resp.body)
|
||||
end
|
||||
Post.find(ids.map(&:first))
|
||||
end
|
||||
|
||||
def recommend_for_post(post_id)
|
||||
ids = Cache.get("rss:#{post_id}", 1.day) do
|
||||
resp = HTTParty.get(
|
||||
"#{Danbooru.config.recommender_server}/similar/#{post_id}",
|
||||
Danbooru.config.httparty_options.merge(
|
||||
basic_auth: {
|
||||
username: "danbooru",
|
||||
password: Danbooru.config.recommender_key
|
||||
}
|
||||
)
|
||||
)
|
||||
JSON.parse(resp.body)
|
||||
end
|
||||
Post.find(ids.reject {|x| x[0] == post_id}.map(&:first))
|
||||
end
|
||||
|
||||
def recommend(post_id: nil, user_id: nil)
|
||||
if post_id
|
||||
recommend_for_post(post_id)
|
||||
elsif user_id
|
||||
recommend_for_user(user_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user