Attribútum alapú, wordle-szerű kitalálós játékok filmekkel - kiadás éve, műfajok, időtartam, IMDB értékelés, rendezők, stb. viszonya alapján lehet két különböző kitalálós játékot játszani.
Klasszikus wordle-szerű játék - a játék elején generálódik egy kitalálandó film (a bal alsó sarokban kiválasztható filter-kategóriát figyelembevéve). Ezután kell találgatni tetszőleges filmcímekkel (az interaktív keresőmezőt használva), majd a tippünk mellett megjelenik, hogy a kitalálandó film adatai milyen viszonyban állnak a tippelt film adataihoz képest.
A játék kezdtben több (3, 5, 7 vagy 10) filmet sorsol ki, amiknek láthatjuk az összes adatát - kivéve a címét. A játék lényege, hogy minden sorban megtaláljuk a filmhez tartozó címet. Ehhez ugyancsak egy-egy interaktív keresőmezőt kell használni, ezesetben viszont csak a filmcímeket (és az egyértelműség kedvéért a kiadási évet) láthatjuk.
Kliens-szerver modellel működő webalkalmazás, React frontenddel és FastAPI backenddel, illetve az IMDB adatbázisa alapján épített saját, lokális adatbázissal. Jelenleg a projekt PostgreSQL-t használ, de csak a CSV importálás és a fuzzy text search (trigram) indexek specifikusak erre az SQL dialektusra.
Le kell tölteni egy kész adatbázis-exportot: Drive link, 2026.02.06.
Szükséges létrehozni egy PostgreSQL adatbázist a szerverünkön. Például:
psql -u username
CREATE DATABASE moviedle;
GRANT ALL PRIVILEGES ON DATABASE moviedle TO username;
GRANT pg_read_server_files TO username; -- mert az importálást a szervergépen (vagy lokális futtatás esetén a saját gépen) lévő fájlokból csináljuk. (*)
ALTER ROLE username WITH SUPERUSER; -- az indexek bekapcsolása miatt kell csak, tulajdonképpen kihagyható lépés
-- PostgreSQL 15-től szükségesek lehetnek a következők is:
\c moviedle
GRANT ALL PRIVILEGES ON SCHEMA public TO username;(*): technikailag lehetséges más módon is importálni, ehhez érdemes áttanulmányozni az import_final_postgres.sql állományt, illetve a PostgreSQL dokumentációt.
# javasolt virtual environment használata, például: python -m venv .venv && source ./venv/bin/activate
pip install -r requirements.txtÁllítsuk be az adatbázis elérési URL-jét a MOVIEDLE_DATABASE_URL környezeti változóban, vagy a .env fájlban (lásd: .env.example)
Például:
MOVIEDLE_DATABASE_URL=postgresql://user:password@localhost:5432/mydatabaseAz init_db.py script egybefoglalja az adatbázisséma létrehozását, az adatok importálását és végül az indexek létrehozását.
Felhasználói célra csak a végleges adathalmaz betöltéséhez futtassuk a következőt (ez eltarthat akár pár percig is):
python init_db.py --schema --only-final /path/movies.tsvFONTOS : az elérési útvonal az adatbázisszerveren értendő. Lokális gép esetén is a 'postgres' felhasználónak el kell tudnia érni a fájlokat (illetve az összes mappát a fájlig!), teljes jogosultságokkal kell rendelkeznie felettük.
Ezen kívül az adatbázis-felhasználónak valószínűleg rendelkeznie kell legalább a pg_read_server_files jogosultsággal (lásd: PostgreSQL dokumentáció)
Az alkalmazás által használható adatbázis kialakításahoz az IMDB adataiból kell kiindulni, ezeket kell a (PostgreSQL) adatbázisszerverre feltölteni, az adatbázisba importálni. Ezután már az adatbáziskezelő-rendszer eszközeivel szűrjük ki és kapcsoljuk össze a játék számára fontos adatokat egy külön táblába - ezzel fog végül csak dolgozni az tényleges webalkalmazás.
Szükséges létrehozni egy PostgreSQL adatbázist a szerverünkön. Például:
psql -u username
CREATE DATABASE moviedle;
GRANT ALL PRIVILEGES ON DATABASE moviedle TO username;
GRANT pg_read_server_files TO username; -- mert az importálást a szervergépen (vagy lokális futtatás esetén a saját gépen) lévő fájlokból csináljuk. (*)
ALTER ROLE username WITH SUPERUSER; -- az indexek bekapcsolása miatt kell csak, tulajdonképpen kihagyható lépés
-- PostgreSQL 15-től szükségesek lehetnek a következők is:
\c moviedle
GRANT ALL PRIVILEGES ON SCHEMA public TO username;(*): technikailag lehetséges más módon is importálni, ehhez érdemes áttanulmányozni az import_final_postgres.sql állományt, illetve a PostgreSQL dokumentációt.
Az IMDB oldaláról be kell szerezni az alábbi TSV fájlokat:
- name.basics.tsv.gz
- title.akas.tsv.gz
- title.basics.tsv.gz
- title.crew.tsv.gz
- title.ratings.tsv.gz
(Ezek kicsomagolva összesen max 5-10 GB helyet foglalnak)
# javasolt virtual environment használata, például: python -m venv .venv && source ./venv/bin/activate
pip install -r requirements.txtÁllítsuk be az adatbázis elérési URL-jét a MOVIEDLE_DATABASE_URL környezeti változóban, vagy a .env fájlban (lásd: .env.example)
Például:
MOVIEDLE_DATABASE_URL=postgresql://user:password@localhost:5432/mydatabaseAz init_db.py script egybefoglalja az adatbázisséma létrehozását, az IMDB adatok importálását, az adatmanipulációt és végül az indexek létrehozását.
Fejlesztői célra az IMDB adatok megtartásával együtt futtassuk a következőt (ez eltarthat akár 10-15 percig is!):
python init_db.py --schema --load-data /path/to/csvs/FONTOS : az elérési útvonal az adatbázisszerveren értendő. Lokális gép esetén is a 'postgres' felhasználónak el kell tudnia érni a fájlokat (illetve az összes mappát a fájlig!), teljes jogosultságokkal kell rendelkeznie felettük.
Ezen kívül az adatbázis-felhasználónak valószínűleg rendelkeznie kell legalább a pg_read_server_files jogosultsággal (lásd: PostgreSQL dokumentáció)
Mivel a legnagyobb állomány a title.akas.tsv és ennek csak azokat a sorait használjuk, amiben magyar címek vannak (ez a fájl méretéhez képest elég kevés) - megspórolhatjuk az adatbázisszerverre való feltöltésüket egy egyszerű szöveges előfeldolgozással.
head -n 1 title.akas.tsv > title.akas.hu.tsv
cat title.akas.tsv | egrep $'([[:alnum:][:punct:] -:_]*\t){3}HU' >> title.akas.hu.tsvEzután viszont szükséges az import_full_postgres.sql fájlban a title.akas.tsv fájlnevet átírni az új fájlnévre.
uvicorn web.api.main:appFejlesztésre:
cd web/frontend
nvm use 24
npm install
npm run devBuild:
cd web/frontend
nvm use 24
npm install
npm run build
# ezután a web/frontend/dist mappában megtalálhatóak a szükséges fájlok



