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

some minor updates

This commit is contained in:
Lukas Winkler 2021-05-25 20:53:09 +02:00
parent c6e767de14
commit d4a0dcada1
Signed by: lukas
GPG key ID: 54DE4D798D244853
7 changed files with 66 additions and 25 deletions

View file

@ -103,4 +103,13 @@ series_data = [
playlist_id="PL1tiwbzkOjQz9kKDaPRPrX2E7RPTaxEZd",
initial_speaker="Will"
),
SeriesData(
name="The Legend of The Legend of Vox Machina",
playlist_id="PL1tiwbzkOjQwJdoNetaNJE1zZVOE7xi8u"
),
SeriesData(
name="Crit Recap Animated",
playlist_id="PL1tiwbzkOjQy8yF8esjgVomDXKD-XmG20",
initial_speaker="?"
)
]

View file

@ -1,6 +1,5 @@
import hashlib
import os
import re
from datetime import datetime
from shutil import move
from subprocess import run
@ -10,7 +9,7 @@ from peewee import DoesNotExist
from data import series_data
from models import Episode, Series, Line, Phrase
from utils import srtdir, pretty_title
from utils import srtdir, pretty_title, title_to_episodenumber
def main() -> None:
@ -42,11 +41,12 @@ def main() -> None:
"subtitleslangs": ["en", "en-US"],
"skip_download": True,
}
regex = re.compile(r"Ep(?:is|si)ode (\d+)")
for nr, video in enumerate(videos, 1):
try:
e = Episode.select().where((Episode.series == s) & (Episode.video_number == nr)).get()
if (e.series.id == 1) or (e.series.id == 2 and e.video_number < 90):
continue
# if e.downloaded:
# continue
except DoesNotExist:
@ -56,16 +56,7 @@ def main() -> None:
e.title = video["title"]
e.pretty_title = pretty_title(video["title"])
if s.is_campaign:
try:
match = regex.search(video["title"])
if not match:
raise ValueError("No episode number found in title")
e.episode_number = int(match.group(1))
except ValueError:
if s.title == "Campaign 1": # one-shots at the end of campaign 1
e.episode_number = e.video_number - 3
else:
raise
e.episode_number = title_to_episodenumber(e.title, e.video_number)
else:
e.episode_number = e.video_number
e.youtube_id = video["url"]

20
poetry.lock generated
View file

@ -81,7 +81,7 @@ type = "url"
url = "https://github.com/explosion/spacy-models/releases/download/en_core_web_md-3.0.0/en_core_web_md-3.0.0.tar.gz"
[[package]]
name = "flask"
version = "2.0.0"
version = "2.0.1"
description = "A simple framework for building complex web applications."
category = "main"
optional = false
@ -129,14 +129,14 @@ python-versions = ">=3.6"
[[package]]
name = "jinja2"
version = "3.0.0"
version = "3.0.1"
description = "A very fast and expressive template engine."
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
MarkupSafe = ">=2.0.0rc2"
MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
@ -430,7 +430,7 @@ torch = ["torch (>=1.5.0)"]
[[package]]
name = "tqdm"
version = "4.60.0"
version = "4.61.0"
description = "Fast, Extensible Progress Meter"
category = "main"
optional = false
@ -559,8 +559,8 @@ cymem = [
]
en-core-web-md = []
flask = [
{file = "Flask-2.0.0-py3-none-any.whl", hash = "sha256:1833a4b36ace08dfa1510d86f1bb6fc595d990ec1b838e03ac8dd80ac0705954"},
{file = "Flask-2.0.0.tar.gz", hash = "sha256:168e8507792cb8a3aa06afbe5d4d431d3e07c6318bc3893ceecb81aff09f848d"},
{file = "Flask-2.0.1-py3-none-any.whl", hash = "sha256:a6209ca15eb63fc9385f38e452704113d679511d9574d09b2cf9183ae7d20dc9"},
{file = "Flask-2.0.1.tar.gz", hash = "sha256:1c4c257b1892aec1398784c63791cbaa43062f1f7aeb555c4da961b20ee68f55"},
]
gunicorn = [
{file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"},
@ -574,8 +574,8 @@ itsdangerous = [
{file = "itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0"},
]
jinja2 = [
{file = "Jinja2-3.0.0-py3-none-any.whl", hash = "sha256:2f2de5285cf37f33d33ecd4a9080b75c87cd0c1994d5a9c6df17131ea1f049c6"},
{file = "Jinja2-3.0.0.tar.gz", hash = "sha256:ea8d7dd814ce9df6de6a761ec7f1cac98afe305b8cdc4aaae4e114b8d8ce24c5"},
{file = "Jinja2-3.0.1-py3-none-any.whl", hash = "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4"},
{file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"},
]
markupsafe = [
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
@ -820,8 +820,8 @@ thinc = [
{file = "thinc-8.0.3.tar.gz", hash = "sha256:c370a7a46d01b588d8d5f99d8d5e36b3cbac4512638356fa430f7f52bb3a8897"},
]
tqdm = [
{file = "tqdm-4.60.0-py2.py3-none-any.whl", hash = "sha256:daec693491c52e9498632dfbe9ccfc4882a557f5fa08982db1b4d3adbe0887c3"},
{file = "tqdm-4.60.0.tar.gz", hash = "sha256:ebdebdb95e3477ceea267decfc0784859aa3df3e27e22d23b83e9b272bf157ae"},
{file = "tqdm-4.61.0-py2.py3-none-any.whl", hash = "sha256:736524215c690621b06fc89d0310a49822d75e599fcd0feb7cc742b98d692493"},
{file = "tqdm-4.61.0.tar.gz", hash = "sha256:cd5791b5d7c3f2f1819efc81d36eb719a38e0906a7380365c556779f585ea042"},
]
typer = [
{file = "typer-0.3.2-py3-none-any.whl", hash = "sha256:ba58b920ce851b12a2d790143009fa00ac1d05b3ff3257061ff69dbdfc3d161b"},

View file

@ -89,7 +89,7 @@ def api_search():
d: Line
ri = 0
for d in results:
entry = model_to_dict(d, extra_attrs=["rank"], exclude=global_excludes)
entry = model_to_dict(d, extra_attrs=["rank"], exclude=global_excludes + [Episode.subtitle_hash])
entry["rank"] = float(entry["rank"])
data.append({"centerID": d.id, "resultID": ri, "offset": 1, "lines": [entry]})
ri += 1
@ -122,6 +122,17 @@ def api_expand():
return jsonify(data)
@app.route("/api/series")
def series():
series_list = []
for series in Series.select():
series_list.append({"title": series.title, "id": series.id})
return jsonify({
"series": series_list
})
@app.route("/api/episodes")
def api_episodes():
all_series: List[Series] = Series.select().order_by(Series.id)

View file

@ -1,3 +1,4 @@
import re
from datetime import timedelta
from pathlib import Path
from typing import Optional
@ -22,6 +23,28 @@ def episode_speaker(series_title: str, episode: int) -> Optional[str]:
return None
title_regex = re.compile(r"Ep(?:is|si)ode (\d+)")
def title_to_episodenumber(title: str, video_number: int) -> int:
print(title)
try:
match = title_regex.search(title)
if not match:
if "Hit Points for Level 12" in title:
return 99
elif "Hit Points for Level 15" in title:
return 136
else:
raise ValueError("No episode number found in title")
return int(match.group(1))
except ValueError:
if title == "Campaign 1": # one-shots at the end of campaign 1
return video_number - 3
else:
raise
def pretty_title(title: str) -> str:
if "|" in title:
return title.split("|")[0].strip()

View file

@ -56,6 +56,7 @@ body {
select {
width: auto;
max-width: 300px;
}
}

View file

@ -141,7 +141,7 @@ export default Vue.extend({
},
data() {
return {
serverData: require("../../data.json") as ServerData,
serverData: {"series": []} as ServerData,
searchResult: [] as Result[],
keyword: this.$route.params.keyword,
series: this.$route.params.series,
@ -177,6 +177,12 @@ export default Vue.extend({
}
const max = 640;
this.ytWidth = (window.innerWidth < max ? window.innerWidth : max) - 2 * 2;
fetch(baseURL + "series")
.then((response) => response.json())
.then((data: ServerData) => {
this.serverData = data;
});
},
methods: {
suggest(input: string) {