recommendations/adaptive: Require max_length, ask if not given

- to speed up usage of adaptive recommendations
- as users had no chance of inserting a max length (which speeds up
calculation) before a first general search was started
- now users can insert a max length before starting a first calculation
master
Felix Stupp 2 years ago
parent 328f234711
commit 5bbef2a5a1
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -714,17 +714,26 @@ def recommend_on_media(media_id: int) -> ResponseReturnValue:
@flask_app.route("/recommendations/adaptive") @flask_app.route("/recommendations/adaptive")
def recommend_adaptive() -> ResponseReturnValue: def recommend_adaptive() -> ResponseReturnValue:
score_adapt = request.args.get("score_adapt", default=2, type=int) score_adapt = request.args.get("score_adapt", default=2, type=int)
max_length = request.args.get("max_length", default=0, type=int)
preferences = request.cookies.get( preferences = request.cookies.get(
key=PREFERENCES_SCORE_NAME, key=PREFERENCES_SCORE_NAME,
default=PreferenceScore(), default=PreferenceScore(),
type=PreferenceScore.from_base64, type=PreferenceScore.from_base64,
) * (1 if score_adapt > 0 else -1 if score_adapt < 0 else 0) ) * (1 if score_adapt > 0 else -1 if score_adapt < 0 else 0)
if "max_length" not in request.args:
# ask for max length before calculating to save time
return render_template(
"recommendations_adaptive.htm",
max_length=0,
score_adapt=score_adapt,
preferences=preferences,
media_list=None,
)
max_length = request.args.get("max_length", default=0, type=int)
preference_list = generate_preference_list( preference_list = generate_preference_list(
object_gen=lambda: get_all_considered( object_gen=lambda: get_all_considered(
order_by="elem.release_date DESC", order_by="elem.release_date DESC",
filter_by=f"(length - progress) <= {max_length * 60}" filter_by=f"(length - progress) <= {max_length * 60}"
if max_length if max_length > 0
else "true", else "true",
), ),
score_adapt=score_adapt, score_adapt=score_adapt,

@ -34,10 +34,12 @@
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
{{ macros.media_thumbnail_list( {% if media_list %}
elements=media_list, {{ macros.media_thumbnail_list(
check_considered=False, elements=media_list,
show_rating=True, check_considered=False,
) }} show_rating=True,
) }}
{% endif %}
</body> </body>
</html> </html>

Loading…
Cancel
Save