Files
QUZ/__pycache__/scrape_newbt.cpython-313.pyc
T

191 lines
32 KiB
Plaintext
Raw Normal View History

2026-06-28 23:48:13 +00:00
ó
¹1?jÈsã ózSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK J
r
SSK J r J
r
Jr SrSrSrS(SjrS rS)S
jrS)S jrS*S jrS
rS+Sjr\S:XGa-\R4"SS9r\R9S\SSS9 \R9S\SSS9 \R9SSSS9 \R9S\SS S9 \R9S!\SS"S9 \R9S#\SS$S9 \R?5r \ RB(aP\ RBRES%5Vs/sH)oRG5(dMURG5PM+ snOSr$\"\ RJ\$\ RL\ RN\ RP\ RRS&9 ggs snf!\*a \+"S'5 \RX"S5 gf=f),éN)Ú
BeautifulSoup)ÚquoteÚunquoteÚurlparsecó¨^^/nURS5H+nURS5U:XdMURU5 M- SnUHUnSnURSS/5nUH.nSnURS5(a[ US5nXG-
nM0 XC:”dMSUnMW US:Xag/nUGHHnURSS/5nU(dM /n UHnSnURS5(a[ US5nUR
5R5RS S
5n
U RU
5 [US-
5Hn U RS5 M M S n [U5S:XaS n O*[U V
s/sH
oÝ(dM U
PM sn
5S:XaS n U (a8USR
5R5nURS
US.5 GM4URSU S.5 GMK /m/mUU4SjnUH†nUSS
:XafU"5 USn
U
RS5(a-U
RS5(aTRSU
S35 M[TRSU
S35 MrTRUS5 Mˆ U"5 SRT5$![
a SnGN+f=f![
a SnGNÐf=fs sn
f)trÚtablerÚtdÚthéÚcolspanÚÚ
Ú FTÚtext)ÚtypeÚcontent)rÚcellscóx>T(dg/nTH-n[SU55(dMURU5 M/ U(dTR5 g[SU55nUS:XaTR5 g/nUHIn[ U5n[ U5U:aUS/U[ U5-
--
nOUSUnURU5 MK /n[
U5HCnSnUHnXR5(dMSn O U(dM2URU5 ME U(dTR5 g/nUH'nURUV s/sHoU PM sn 5 M) [ U5n
/n USn U RSSRU 5-S -5 U RSSRS
/U
-5-S -5 US SH)n
U RSSRU
5-S -5 M+ TRS S
RU 5-S -5 TR5 gs sn f)Nc3ó@# UHoR5v M g7f©Ústrip)Ú.0Úcells Ú/root/go/ws/QUZ/scrape_newbt.pyÚ <genexpr>Ú9table_to_markdown.<locals>.flush_table.<locals>.<genexpr>ZséÐ.ªA D—::—<<ªAùóc3ó8# UHn[U5v M g7fr)Úlen)rÚrs rrrbséРAœ˜QŸ˜ªùsrrFTz| ú | z |z---r ú
r) ÚanyÚappendÚclearÚmaxÚlistr!ÚrangerÚjoin)Únon_empty_rowsr"Ú
t_max_colsÚ padded_rowsÚrow_copyÚnon_empty_col_indicesÚcol_idxÚ has_contentÚ
final_rowsÚidxÚfinal_max_colsÚtable_mdÚheadersÚrowÚcurrent_table_rowsÚ output_partss €€rÚ flush_tableÚ&table_to_markdown.<locals>.flush_tableSs/ø€Þ ðˆÛ#ˆAÜÑ.©AÓ×% aÖØ × ôÑÓ
Ø ˜‹?Ø × ðˆ ÛˆAܘA“wˆHÜ8‹}˜zÓ˜R˜D J´°X³Ñ$>Ñ?à# K 0Ø × Ñ ˜xÖ
 ð!#ÐܘZÖ(ˆG؈KÛ Ø:×#×%Ø"&ñˆ,¨WÖ × ðˆ
ÛˆAØ × Ñ Ñ1FÓGÒ1F¨# œvÑ1FÑ ôÐðˆØ˜Q‘-ˆØ˜˜uŸz™z¨'Ó2°Tј˜uŸz™z¨5¨'°NÑ*BÓCÀdјa˜b“>ˆ O‰O˜D 5§:¡:¨c£?Ñ2°TÑ  ×јF T§Y¡Y¨xÓ%8Ñ8¸6Ñ× Ñ Õ"ùòHsÅH7
rrÚ>z
**z**
r$r)Úfind_allÚ find_parentr&Úhas_attrÚintÚ
ValueErrorÚget_textrÚreplacer*r!Ú
startswithÚendswithr+)Ú table_tagÚall_trsrÚmax_colsÚ
cols_countrr
r
Úclassified_rowsÚexpanded_cellsrÚis_textÚ text_contentr;r8r9r:s @@rÚtable_to_markdownrR
ù€à€GØ× Ñ  ÖØ
>‰>˜ "  N‰N˜ ñ
€Hۈ؈
Ø ˜T 4˜LÓÛˆB؈GØ{‰{˜9× Ü! " Y¡-Ó0
Ñ !ŠJñð Õ Ø!ŠHñð1ƒ}Øð€OÜˆØ ˜T 4˜LÓÞÙ ðˆÛˆB؈GØ{‰{˜9× Ü! " Y¡-Ó0—;;“=×(×°sÓ;ˆ × !  ˜7 Q™;Ö'Ø×% ðˆÜ ˆu‹:˜‹?؉GÜ
™^Ó1š^˜«q—!™^Ñ
2°aÓ
ˆGæ Ø  ™8×.×6ˆ × Ø$÷
ð
× Ø$÷
ñCðN€LØÐö=#ó~ˆØ ˆv‰;˜&Ó Ù ŒMØy>ˆDà˜sׯ
©
°c×(:Ñ(:Ø×# f¨T¨F°&Ð$9Ö×# d¨4¨&°Ð$5Ö × % c¨'¡lÖ ñ„MØ
7‰7 Ð øôC Ø“Gð ûô. Ø“Gð üò2s0Á?J)Ã-J<Æ
K
ÆK
Ê) J9Ê8J9Ê< K Ë K cóºU(dU$URS5n/SQnSn/nUGH"nUR5nURS5(aDU[U5:a5SSKnUR
"SX#S-U5nUR
U5 US-
nMnSU;aURS5n [U 5S:”a}[SU SS55(acURS5(aMU Sn
U SSH+n U[U5:aX¢UU --
n
US-
nM#U
SU --
n
M- UR
U
5 GMUR
U5 GM% SRU5$) Nr)u㉠u㉡u㉢u㉣u㉤u㉥rÚ?z^\?\s*rr c3ó@# UHoR5v M g7frr)rÚps rrÚ(fix_corrupted_symbols.<locals>.<genexpr>³séÐ)GºY¸¯'©'¯)¨)ºYùr) ÚsplitrrFr!ÚreÚsubr&Úallr+) rÚlinesÚsymbolsÚ
symbol_idxÚ new_linesÚlineÚstrippedrYÚreplacedÚpartsÚnew_lineÚparts rÚfix_corrupted_symbolsrf¡sPÞ Øˆ Ø J‰J €EÚ8€GØ€Jà€I܈ؗ:‘:“<ˆØ × Ñ ˜s×
´S¸³\Ó(AÛ Ø—vv˜Ñ)<¸sÑ)BÀDÓIˆ × Ñ ˜ ˜!‰OŠJàdŸ
 3Üu“: “>¤cÑ)G¸UÀ1À2¹YÓ)G×&GÑ&GÈDÏOÉOÐ\_×L`ÑL`Ø$ Q™xHØ % a ˜Ø¨G« Ó
Ñ(;¸dÑ(BÑB˜&¨!™OšJà¨d©
Ñ2šHñ !*ð ×$ XÔØ × Ñ ˜T× "ñ)ð, 9‰9 ÐócóvU(dU$URS5n/nSnUH…nUR5nU(dURU5 M-SSKnUR"SSU5nUb*UR"SSU5nXx:Xa[ U5S:”aMrURU5 UnM‡ SR
U5$)Nrrú[\s\W_]ré
)rXrr&rYrZr!r+) rr\Ú
cleaned_linesÚlast_non_emptyr`rarYÚc_lineÚc_lasts rÚdeduplicate_consecutive_linesroÁÞ Øˆ Ø J‰J €EØ€Mà€Nۈؗ:‘:“<ˆÞØ × Ñ  Ô ãØ˜
 B¨ÓØ Ñ —V’V˜J¨¨NÓ;ˆFØÓ¤C¨£K°"Ó$4Ùà×јŠñð 9‰9 #rgçð?cóÒ^U(dg[US5nURS5HnURS5 M URS5HnURS5 M URS5H%nUR S5 URS5 M' URS S
/5H1nUR 5nU(dMURS US 35 M3 URS 5HOn U R 5nU R
S
S5n
U(dM.U
(dM7U RSUSU
S35 MQ URS5Hn U R
SS5mT(dM[U4SjS55(aM:U(a,[TX5n U (aU RSU S35 MkMmU RSTS35 M„ UR 5nURS5V
s/sHoÝR5PM nn
SRU5nSU;aURSS5nSU;aMUR5$s sn
f)Nrú html.parserrVr$ÚbrrÚliz- ÚstrongÚbz**ÚhrefÚ[z](ÚimgÚsrcc3ó,># UH oT;v M g7fr©©rÚxr|s €rrÚ#html_to_markdown.<locals>.<genexpr>ýsøéÐ[Ò-Z¨ ž8Ò-Zùóƒ©zo.pngzx.pngzt.pngzcheck-mark.pngz ![image](z
)rr?Ú insert_afterÚ replace_withÚ
insert_beforerDÚgetr%Údownload_and_save_imagerXÚrstripr+rEr)Ú html_contentÚ
assets_dirÚdelayÚsouprVrsrtrurrwrxr{Ú
local_pathr`r\Ú cleaned_textr|s @rÚhtml_to_markdownrÚsø€Þ ØÜ ˜ }Ó 5€Dð]‰]˜3Ö
ˆØ ñ ðm‰m˜DÖØ
˜Öñm‰m˜!ˆØ
×Ñ˜ÔØ
˜Öñ
—-‘- ¨3 ÖàÓ ˆß ˆ4Ø × Ñ  " T F¨" 
Ö ]‰]˜
ˆØz‰z‹|ˆØu‰uV˜RÓ ˆß ˆ4—D
N‰N˜Q˜t˜f B t f¨AÐ  ð}‰}˜UÖØg‰ge˜RÓ ˆß ˆ3”sÔ[Ñ-ZÓÜ4°S¸L
ÞØ×$ y°° ¸AÐ%>Öð× Ñ  9¨S¨E°Ð!3Ö =‰=?€Dð(,§z¡z°$Ô'7Ó 8Ò'7˜t[‰[Ž]Ñ'7€EÐ —99˜#€LØ

#×+¨H°fÓ=ˆ ð 
× Ñ Ó Ðùò
9sÈI$có[RR[U5R5SnU(a[ U5S:”aSn[
R "URS55R5nSUU3$)Nr éz.pngúutf-8Únewbt_) ÚosÚpathÚsplitextrr!ÚhashlibÚmd5ÚencodeÚ hexdigest)ÚurlÚextÚhs rÚget_image_filenamerŸshÜ
'‰'×
Ñ
œ8 C=×
.¨qÑ
1€CÞ ”#c“(˜Q“,ØˆÜ Š C—JJ˜wÓ(×4€AØ
A3s ÐrgcóúU(dgURS5(aSU3nURS5(dU$[R"USS9 [U5n[RR X5n[RR
U5(aSU3$[R"U5 SS0n[R"XS S
9nURS :XaC[US 5nURUR5 SSS5 [S
U35 SU3$[SUSURS35 U$!,(df  N@=f![ an[SU35 SnAU$SnAff=f)https://newbt.krÚhttpT)Úexist_okz/assets/ú
User-AgentúsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36é©r7ÚtimeoutéÈÚwbz [Image] Downloaded image: z* [Image Warning] Failed to download: z (HTTP rzz- [Image Error] Error downloading image: )rFr•ÚmakedirsrŸrr+ÚexistsÚtimeÚsleepÚrequestsr‡Ú status_codeÚopenÚwriterÚprintÚ Exception) Ú image_urlÚ
target_dirrŒÚfilenameÚ dest_pathr7r"Úes rrˆsdÞ Øð×јC× Ñ Ø& y kÐ2ˆ à × Ñ  × ÐðCÜ
Š Ò% iÓÜ—G‘G—L‘L Ó6ˆ ä
7‰7>‰>˜)× ˜h˜ 
Š
à ðPð
ˆô
LŠL˜¸RÑ Ø =‰=˜ ÜÔ&¨!ؘŸ ™ Ô Ð4°X°JÐ ˜h˜ZÐ Ð>¸y¸ÐQR×Q^ÑQ^ÐP_Ð_`Ð  Ð÷&ûô óCÜ
Ð=¸a¸SÐ ÐûðCús=½A'EÂ%A EÃ0EÄ EÄ'EÅ
EÅEÅ
E:Å!E5Å5E:cóSU3nSS0n[R"U5 [R"X#SS9nURS:XGaUR 5nURS5(SU;USn[
US S
9nUVs/sHowRS S 5PM nn/n /n
[U5HNup·URS
5S:XdMU RU 5 U
RURS S 55 MP U (aU SOSn U
(aSRU
5OS n
U (aSR[[U 55OS nXŒXÞ4$/SS S 4$s snf![an[SUSU35 SnAN+SnAff=f)Nz#https://newbt.kr/question/examples/r¥rjÚsuccessÚdatacó8[URSS55$)numberr)rBr‡)r€s rÚ<lambda>Ú*fetch_choices_and_answer.<locals>.<lambda>Es´#°a·e±e¸HÀaÓ6HÔ2Irg)ÚkeyÚcontentsrÚ is_answerÚ1réÿÿÿÿr#Ú,z+ [API Error] Choices fetch error for Qú: )r‡ÚjsonÚsortedÚ enumerater&r+ÚmapÚstrrµr´)Úq_idrŒr7r"Úresr¾r€ÚchoicesÚcorrect_indicesÚ correct_strsr4Ú correct_idxÚ correct_strÚcorrect_answers_serializedr»s rÚfetch_choices_and_answerr×8sØ ¨vÐ
6€CàðLð€Gô ‡J‚JˆuÔðIÜ LŠL˜°rÑ Ø =‰=˜ Ø—&&“(ˆw‰wy×! f°£mؘ6{ä˜dÑ(IÑJÙ:>Ó?º$°QŸ5™5 ¨RÖ0¹$Ð#%Ø! ÜžoF—uu˜)¨SÕ'×.¨sÔ$×+¨A¯E©E°*¸bÓ,AÖ
5D˜o¨aÒ Þ:F˜eŸj™j¨Ô6ÈB ÞTc¨S¯X©X´c¼#¸Ó6OÔ-PÐikШ[Ð ˆr2rˆùò#@øô óIÜ
Ð;¸D¸6ÀÀAÀ3ÐHûðIús1¡A&E$ÂEÂ")E$ÃB E$ÅE$Å$
F Å.FÆF cóTSS0nSn[R"U5 SU3n[R"XSSS9nURS:Xa˜UR 5nURS5(arS U;alUS n/n UHGn
U
RS
S5R
5n U (dM,U R[X²U55 MI U (aS RU 5n/n
[R"U5 SU3n[R"XãSS9nURS:XUR 5nURS5(a{S U;auUS nUHjn
U
RS
S5n U (dMU R
5(dM5U
RSS5n[X²U5nU
RSUSU35 Ml S RU
5nUU4$![an [S US
U 35 Sn A GNSn A ff=f![an [SUS
U 35 Sn A N^Sn A ff=f)Nr¥rzhttps://newbt.kr/resolve/get/rjrz
---
z5 [API Error] Human explanation fetch error for QrÉz,https://newbt.kr/resolve/getResolvedResults/ÚnameÚAIu ### 🤖 u AI 해설
z2 [API Error] AI explanation fetch error for Q) r‡rr&rr+r´)rr7Úhuman_explanationÚ url_humanr"r€rPÚai_explanationsÚurl_aiÚ
model_nameÚ cleaned_cÚai_explanation_combineds rÚfetch_explanationsrâYsàðLð€Gð
Ð܇J‚JˆuÔðSØ3°D°6Ð:ˆ Ü LŠL˜¸RÑ Ø =‰=˜ Ø—&&“(ˆw‰wy×! f°£mؘ6‘{ØÛŸ˜i¨Ó4 ŸÔ(8¸ÈÓ(NÖöØ(5×(:Ñ(:¸8Ó(DÐ
€O܇J‚JˆuÔðPظvÐFˆÜ LŠL˜¸ Ø =‰=˜ Ø—&&“(ˆw‰wy×! £mؘ6‘{ÛŸ˜i¨Ó,q˜QŸW™WŸYYØ%&§U¡U¨6°4Ó%8˜
Ü$4°QÀEÓ$J˜ Ø'׸:¸,ÀnÐU^ÐT_Ð/`Ö ðÓØ Ð 5øô/ óSÜ
ÐEÀdÀVÈ2ÈaÈSÐQ×RûðSûô& óPÜ
ÐBÀ4À&ÈÈ1È#ÐN×OûðPúsCžBGÂ)7GÃ9A7HÅ4HÆ 9HÇ
G?Ç#G:Ç:G?È
H'È H"È"H'có”UR5nURS5 UR5Vs1sHo"SiM sn$s snf)Nz3SELECT id FROM QuizQuestions WHERE source = 'newbt'r)ÚcursorÚexecuteÚfetchall)Úconnrär8s rÚget_existing_question_idsrèˆs=Ø
[‰[]€FØ
‡N$Ÿo™oÔ /sŒFÑ 0ùÒ 0s´Aú qple_quiz.dbú./frontend/public/assetscóž^V•[R"U5nUR5nURS5 UR 5Vs/sHoˆSPM n nSU ;a,URS5 UR 5 [
S5 [U5n