1
0
Fork 0
mirror of https://github.com/Findus23/cr-search.git synced 2024-09-19 15:23:44 +02:00

cache suggestions

This commit is contained in:
Lukas Winkler 2021-07-07 18:30:28 +02:00
parent 4b3e829dee
commit 36b7301628
Signed by: lukas
GPG key ID: 54DE4D798D244853
2 changed files with 19 additions and 4 deletions

View file

@ -71,8 +71,16 @@ def api_question():
return "no suggest query", 400
if len(query) > 50:
return "too long query", 400
cache_key = f"suggest_{until}_{series}_{query}"
if len(query) < 3:
result = cache.get(cache_key)
if result:
return jsonify(result)
phrases = suggest(query, until, series)
return jsonify([p.text for p in phrases])
result = [p.text for p in phrases]
if len(query) < 3:
cache.set(cache_key, result, timeout=60 * 60 * 24 * 7)
return jsonify(result)
@app.route("/api/search")

View file

@ -38,7 +38,7 @@
<span v-if="!isOneShot">up to episode </span>
<input v-if="!isOneShot" title="search until episode number"
class="form-control" type="number" v-model="episode"
min="1" max="300">
min="1" :max="seriesLength">
<span>in</span>
<!-- <select title="campaign selection" class="custom-select" v-model="series">-->
<!-- <option v-for="series in serverData.series" v-bind:value="series.slug">-->
@ -91,7 +91,7 @@ import Vue from "vue";
// @ts-ignore
import Autocomplete from "@trevoreyre/autocomplete-vue";
// import "@trevoreyre/autocomplete-vue/dist/style.css";
import {Line, Result, Series, ServerData, ServerMessage} from "@/interfaces";
import {Line, Result, SeriesData, ServerData, ServerMessage} from "@/interfaces";
import {BAlert, BIcon, BIconPlayFill} from "bootstrap-vue";
// @ts-ignore
import VueYoutube from "vue-youtube";
@ -288,7 +288,7 @@ export default Vue.extend({
const sec = Math.floor(starttime % 60);
return `https://www.youtube.com/watch?v=${id}&t=${min}m${sec}s`;
},
seriesFromSlug(): Series | undefined {
seriesFromSlug(): SeriesData | undefined {
if (!this.$route.params.series) {
return undefined;
}
@ -304,6 +304,13 @@ export default Vue.extend({
return this.$route.params.series;
}
},
seriesLength(): number {
const series = this.seriesFromSlug;
if (series) {
return series.length;
}
return 300;
},
isOneShot(): boolean {
console.log(this.episode);
return this.episode === "-";