Spaces:
Sleeping
Sleeping
Create fallback_questions.py
Browse files- fallback_questions.py +199 -0
fallback_questions.py
ADDED
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""
|
2 |
+
Fallback quiz-spørsmål for når AI-modeller ikke er tilgjengelige
|
3 |
+
Organisert etter tema og språk
|
4 |
+
"""
|
5 |
+
|
6 |
+
FALLBACK_QUESTIONS = {
|
7 |
+
"no": { # Norske spørsmål
|
8 |
+
"norsk historie": [
|
9 |
+
{
|
10 |
+
"spørsmål": "Hvilket år ble Norge selvstendig fra Danmark?",
|
11 |
+
"alternativer": ["1814", "1815", "1813", "1816"],
|
12 |
+
"korrekt_svar": 0,
|
13 |
+
"forklaring": "Norge ble selvstendig fra Danmark i 1814 etter Napoleonskrigene."
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"spørsmål": "Hvem var Norges første konge etter selvstendigheten i 1814?",
|
17 |
+
"alternativer": ["Christian Frederik", "Karl Johan", "Oscar I", "Haakon VII"],
|
18 |
+
"korrekt_svar": 0,
|
19 |
+
"forklaring": "Christian Frederik ble valgt til konge av den norske riksforsamlingen på Eidsvoll i 1814."
|
20 |
+
},
|
21 |
+
{
|
22 |
+
"spørsmål": "Hvilket år fikk kvinner stemmerett i Norge?",
|
23 |
+
"alternativer": ["1913", "1915", "1910", "1920"],
|
24 |
+
"korrekt_svar": 0,
|
25 |
+
"forklaring": "Kvinner fikk stemmerett i Norge i 1913, som et av de første landene i verden."
|
26 |
+
}
|
27 |
+
],
|
28 |
+
"oslo": [
|
29 |
+
{
|
30 |
+
"spørsmål": "Hva heter Oslo kommunes rådhus?",
|
31 |
+
"alternativer": ["Oslo rådhus", "Akershus festning", "Stortinget", "Slottet"],
|
32 |
+
"korrekt_svar": 0,
|
33 |
+
"forklaring": "Oslo rådhus er kjent for sin karakteristiske arkitektur og er stedet hvor Nobels fredspris deles ut."
|
34 |
+
},
|
35 |
+
{
|
36 |
+
"spørsmål": "Hvilken øy i Oslofjorden er mest kjent for sine museer?",
|
37 |
+
"alternativer": ["Bygdøy", "Hovedøya", "Gressholmen", "Langøyene"],
|
38 |
+
"korrekt_svar": 0,
|
39 |
+
"forklaring": "Bygdøy har flere av Norges viktigste museer, inkludert Vikingskipshuset og Kon-Tiki museet."
|
40 |
+
},
|
41 |
+
{
|
42 |
+
"spørsmål": "Hva heter Oslos hovedgate for shopping?",
|
43 |
+
"alternativer": ["Karl Johans gate", "Storgata", "Grensen", "Torggata"],
|
44 |
+
"korrekt_svar": 0,
|
45 |
+
"forklaring": "Karl Johans gate strekker seg fra Jernbanetorget til Det kongelige slott og er Oslos hovedstrøk."
|
46 |
+
}
|
47 |
+
],
|
48 |
+
"bergen": [
|
49 |
+
{
|
50 |
+
"spørsmål": "Hva kalles det fargerike kaiområdet i Bergen?",
|
51 |
+
"alternativer": ["Bryggen", "Fisketorget", "Torgallmenningen", "Nordnes"],
|
52 |
+
"korrekt_svar": 0,
|
53 |
+
"forklaring": "Bryggen er UNESCOs verdensarvsted og består av fargerike trebygninger fra hansatiden."
|
54 |
+
},
|
55 |
+
{
|
56 |
+
"spørsmål": "Hvilket fjell kan du ta Fløibanen opp til?",
|
57 |
+
"alternativer": ["Fløyen", "Ulriken", "Løvstakken", "Sandviksfjellet"],
|
58 |
+
"korrekt_svar": 0,
|
59 |
+
"forklaring": "Fløibanen er en av Norges mest populære turistattraksjoner og tar deg opp til Fløyen."
|
60 |
+
},
|
61 |
+
{
|
62 |
+
"spørsmål": "Bergen er kjent som 'Porten til' hva?",
|
63 |
+
"alternativer": ["Fjordene", "Vestlandet", "Hardanger", "Sognefjorden"],
|
64 |
+
"korrekt_svar": 0,
|
65 |
+
"forklaring": "Bergen kalles 'Porten til fjordene' fordi den er utgangspunkt for mange fjordturer."
|
66 |
+
}
|
67 |
+
]
|
68 |
+
},
|
69 |
+
"en": { # English questions
|
70 |
+
"norwegian history": [
|
71 |
+
{
|
72 |
+
"spørsmål": "When did Norway gain independence from Denmark?",
|
73 |
+
"alternativer": ["1814", "1815", "1813", "1816"],
|
74 |
+
"korrekt_svar": 0,
|
75 |
+
"forklaring": "Norway gained independence from Denmark in 1814 after the Napoleonic Wars."
|
76 |
+
},
|
77 |
+
{
|
78 |
+
"spørsmål": "Who was Norway's first king after independence in 1814?",
|
79 |
+
"alternativer": ["Christian Frederik", "Karl Johan", "Oscar I", "Haakon VII"],
|
80 |
+
"korrekt_svar": 0,
|
81 |
+
"forklaring": "Christian Frederik was elected king by the Norwegian constituent assembly at Eidsvoll in 1814."
|
82 |
+
}
|
83 |
+
],
|
84 |
+
"oslo": [
|
85 |
+
{
|
86 |
+
"spørsmål": "What is the name of Oslo's city hall?",
|
87 |
+
"alternativer": ["Oslo City Hall", "Akershus Fortress", "Parliament", "Royal Palace"],
|
88 |
+
"korrekt_svar": 0,
|
89 |
+
"forklaring": "Oslo City Hall is known for its distinctive architecture and hosts the Nobel Peace Prize ceremony."
|
90 |
+
},
|
91 |
+
{
|
92 |
+
"spørsmål": "Which island in the Oslo fjord is most famous for its museums?",
|
93 |
+
"alternativer": ["Bygdøy", "Hovedøya", "Gressholmen", "Langøyene"],
|
94 |
+
"korrekt_svar": 0,
|
95 |
+
"forklaring": "Bygdøy houses several of Norway's most important museums, including the Viking Ship Museum."
|
96 |
+
}
|
97 |
+
],
|
98 |
+
"bergen": [
|
99 |
+
{
|
100 |
+
"spørsmål": "What is the colorful wharf area in Bergen called?",
|
101 |
+
"alternativer": ["Bryggen", "Fish Market", "Torgallmenningen", "Nordnes"],
|
102 |
+
"korrekt_svar": 0,
|
103 |
+
"forklaring": "Bryggen is a UNESCO World Heritage site consisting of colorful wooden buildings from the Hanseatic period."
|
104 |
+
}
|
105 |
+
]
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
def get_fallback_questions(tema: str, språk: str = "no", antall: int = 5):
|
110 |
+
"""
|
111 |
+
Hent fallback-spørsmål for et gitt tema og språk
|
112 |
+
|
113 |
+
Args:
|
114 |
+
tema: Tema for spørsmålene (f.eks. "oslo", "bergen", "norsk historie")
|
115 |
+
språk: Språkkode ("no" eller "en")
|
116 |
+
antall: Antall spørsmål å returnere
|
117 |
+
|
118 |
+
Returns:
|
119 |
+
Liste med quiz-spørsmål
|
120 |
+
"""
|
121 |
+
# Normaliser tema til lowercase
|
122 |
+
tema_key = tema.lower().strip()
|
123 |
+
|
124 |
+
# Sjekk om språk finnes
|
125 |
+
if språk not in FALLBACK_QUESTIONS:
|
126 |
+
språk = "no" # Default til norsk
|
127 |
+
|
128 |
+
# Sjekk om tema finnes for språket
|
129 |
+
if tema_key not in FALLBACK_QUESTIONS[språk]:
|
130 |
+
# Prøv å finne lignende tema
|
131 |
+
available_topics = list(FALLBACK_QUESTIONS[språk].keys())
|
132 |
+
|
133 |
+
# Enkel matching for vanlige varianter
|
134 |
+
tema_mapping = {
|
135 |
+
"oslo": ["oslo", "oslo kommune", "hovedstad"],
|
136 |
+
"bergen": ["bergen", "bergen kommune"],
|
137 |
+
"norsk historie": ["norsk historie", "historie", "norway history", "norwegian history"]
|
138 |
+
}
|
139 |
+
|
140 |
+
for standard_tema, variants in tema_mapping.items():
|
141 |
+
if any(variant in tema_key for variant in variants):
|
142 |
+
tema_key = standard_tema
|
143 |
+
break
|
144 |
+
|
145 |
+
# Hvis fortsatt ikke funnet, bruk første tilgjengelige tema
|
146 |
+
if tema_key not in FALLBACK_QUESTIONS[språk]:
|
147 |
+
tema_key = available_topics[0] if available_topics else "oslo"
|
148 |
+
|
149 |
+
# Hent spørsmål
|
150 |
+
questions = FALLBACK_QUESTIONS[språk].get(tema_key, [])
|
151 |
+
|
152 |
+
# Begrens antall spørsmål
|
153 |
+
if len(questions) > antall:
|
154 |
+
questions = questions[:antall]
|
155 |
+
|
156 |
+
return questions
|
157 |
+
|
158 |
+
def get_available_topics(språk: str = "no"):
|
159 |
+
"""
|
160 |
+
Hent liste over tilgjengelige temaer for et språk
|
161 |
+
|
162 |
+
Args:
|
163 |
+
språk: Språkkode ("no" eller "en")
|
164 |
+
|
165 |
+
Returns:
|
166 |
+
Liste med tilgjengelige temaer
|
167 |
+
"""
|
168 |
+
if språk not in FALLBACK_QUESTIONS:
|
169 |
+
språk = "no"
|
170 |
+
|
171 |
+
return list(FALLBACK_QUESTIONS[språk].keys())
|
172 |
+
|
173 |
+
def get_topic_info(tema: str, språk: str = "no"):
|
174 |
+
"""
|
175 |
+
Hent informasjon om et tema
|
176 |
+
|
177 |
+
Args:
|
178 |
+
tema: Tema å få info om
|
179 |
+
språk: Språkkode
|
180 |
+
|
181 |
+
Returns:
|
182 |
+
Dict med tema-informasjon
|
183 |
+
"""
|
184 |
+
tema_key = tema.lower().strip()
|
185 |
+
|
186 |
+
if språk not in FALLBACK_QUESTIONS:
|
187 |
+
språk = "no"
|
188 |
+
|
189 |
+
if tema_key not in FALLBACK_QUESTIONS[språk]:
|
190 |
+
return None
|
191 |
+
|
192 |
+
questions = FALLBACK_QUESTIONS[språk][tema_key]
|
193 |
+
|
194 |
+
return {
|
195 |
+
"tema": tema_key,
|
196 |
+
"språk": språk,
|
197 |
+
"antall_spørsmål": len(questions),
|
198 |
+
"tilgjengelig": True
|
199 |
+
}
|