Files
param-hub-python/__pycache__/utils.cpython-312.pyc

30 lines
5.3 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>Yj<> <00><00><><00>dZddlZddlZddlmZddlmZddlmZddlm Z m
Z
m Z m Z m Z dedefd <09>Zd
efd <0B>Zd
efd <0C>Zdefd <0A>Zdefd<0F>Zdedefd<11>Zdefd<12>Zdededzfd<14>Zdedefd<17>Zdededzfd<19>Zy)u
ParamHub 工具函数
<EFBFBD>N)<01>Path)<01>datetime)<01>secure_filename)<05>ALLOWED_EXTENSIONS<4E>DEFAULT_CONFIG<49> CONFIG_FILE<4C>
IMAGES_DIR<EFBFBD>DATA_DIR<49>filename<6D>returnc<00>`<00>d|vxr)|jdd<02>dj<00>tvS)u!检查文件扩展名是否允许<E58581>.<2E>)<03>rsplit<69>lowerr)r s <20>4/home/hermes/.hermes/works/param-hub-python/utils.py<70> allowed_filers0<00><00> <0E>(<28>?<3F> W<>x<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>A<EFBFBD>6<>q<EFBFBD>9<>?<3F>?<3F>A<>EW<45>W<>W<><00> file_pathc<00>p<00>|j<00>r%tj|jd<01><02><00>SgS)u加载JSON数据文件<E69687>utf-8<><01>encoding)<04>exists<74>json<6F>loads<64> read_text)rs r<00> load_datars0<00><00><10><17><17><19><13>z<EFBFBD>z<EFBFBD>)<29>-<2D>-<2D>w<EFBFBD>-<2D>?<3F>@<40>@<40> <0A>Irc<00>V<00>|jtj|dd<02><03>d<04><05>y)u保存JSON数据到文件F<E4BBB6><00><02> ensure_ascii<69>indentrrN)<03>
write_textr<00>dumps)r<00>datas r<00> save_datar's#<00><00> <0A><18><18><14><1A><1A>D<EFBFBD>u<EFBFBD>Q<EFBFBD>G<>RY<52><18>Zrc<00><><00>tj<00>rPtjtjd<01><02><00>}t j <00>}|j|<00>|St j <00>S)u$加载网站配置合并默认值rr)rrrrrr<00>copy<70>update)<02>loaded<65>results r<00> load_configr- sU<00><00><12><19><19><1B><15><1A><1A>K<EFBFBD>1<>1<>7<EFBFBD>C<>D<><06><1F>$<24>$<24>&<26><06><0E> <0A> <0A>f<EFBFBD><1D><15> <0A> <19> <1E> <1E> <20> r<00>configc<00>^<00>tjtj|dd<02><03>d<04><05>y)u保存网站配置Fr r!rrN)rr$rr%<00>r.s r<00> save_configr1*s <00><00><0F><1A><1A>4<EFBFBD>:<3A>:<3A>f<EFBFBD>5<EFBFBD><11>K<>V]<5D>^r<00> category_idc<00><00>td|<00>d<02>z S)u'获取动态分类的数据文件路径<E8B7AF>items_z.json)r
)r2s r<00>get_items_filer5/s<00><00> <13><06>{<7B>m<EFBFBD>5<EFBFBD>1<> 1<>1rc<00><><00>t<00>}|jdtd<00>|jdtd<00>|jdtd<00>|jdtd<00>d<05>S)u'从 config.json 动态读取 LLM 配置<E9858D> llm_base_url<72> llm_api_key<65> llm_model<65>llm_vision_model)<04>base_url<72>api_key<65>model<65> vision_model)r-<00>getrr0s r<00>get_llm_configr@4sa<00><00> <18>]<5D>F<EFBFBD><1A>J<EFBFBD>J<EFBFBD>~<7E>~<7E>n<EFBFBD>/M<>N<><19>:<3A>:<3A>m<EFBFBD>^<5E>M<EFBFBD>-J<>K<><17><1A><1A>K<EFBFBD><1E> <0B>)D<>E<><1E>
<EFBFBD>
<EFBFBD>#5<>~<7E>FX<46>7Y<37>Z<>  <06>r<00>date_strc<00><><00>|sydD](} tj||<01>j<00>cSy#ttf$rY<00>=wxYw)u*将日期字符串转换为 Unix 时间戳N)z%Y-%m-%dz%Y-%m-%d %H:%M:%Sz%Y/%m/%d)r<00>strptime<6D> timestamp<6D>
ValueError<EFBFBD> TypeError)rA<00>fmts r<00>parse_date_to_timestamprH?sQ<00><00> <13><13><<3C><03> <11><1B>$<24>$<24>X<EFBFBD>s<EFBFBD>3<>=<3D>=<3D>?<3F> ?<3F>=<3D>
<10><><1B>I<EFBFBD>&<26> <11> <10> <11>s<00>#2<02>A<05>A<05>x<>keyc<00>B<00>|j|<01>}|<02> |dvry|dvryy|S)u?排序时安全获取字段值,缺失时返回合理默认值)<04>
parameters<EFBFBD>context_length<74>mmlu<6C>viewsr)<03> publish_date<74>
created_at<EFBFBD>
updated_at<EFBFBD>)r?)rIrJ<00>vals r<00> safe_sort_keyrUKs4<00><00>
<0B>%<25>%<25><03>*<2A>C<EFBFBD>
<EFBFBD>{<7B> <0E>C<> C<><14> <10>@<40> @<40><15><11> <0E>Jr<00>img_srcc<00><><00>ddl}|jd<03>r|S|jd<04>r|S t|jdd<06>z }|j <00>rt |d<07>5}|j |j<00><00>j<00>}ddd<02>|jj<00>jd<08>}d |d
k(rd n|<05><00>}d|<06>d <04><00>S y#1swY<00>HxYw#t$rYywxYw) u2将图片路径/base64/URL转换为base64 data URIrNzdata:<3A>httpz/static/uploads/rS<00>rbrzimage/<2F>jpg<70>jpegz;base64,) <0A>base64<36>
startswithr <00>replacer<00>open<65> b64encode<64>read<61>decode<64>suffixr<00>lstrip<69> Exception)rV<00>b64<36>img_path<74>f<>img_data<74>ext<78>mimes r<00>read_image_base64rlWs<><00><00><18><0E><19><19>'<27>"<22><16><0E><0E><19><19>&<26>!<21><16><0E>  <0A><1D><07><0F><0F>0B<30>B<EFBFBD> G<>G<><08> <13>?<3F>?<3F> <1C><15>h<EFBFBD><04>%<25><11><1E>=<3D>=<3D><11><16><16><18>2<>9<>9<>;<3B><08>&<26><1A>/<2F>/<2F>'<27>'<27>)<29>0<>0<><13>5<>C<EFBFBD><1B>c<EFBFBD>U<EFBFBD>l<EFBFBD>F<EFBFBD><03><<3C>=<3D>D<EFBFBD><1A>4<EFBFBD>&<26><08><18>
<EFBFBD>3<> 3<> <1D> <10>&<26>%<25><>
<15> <0A> <0C> <0F> <0A>s*<00>5C"<00>!.C<03>AC"<00>C<07>C"<00>" C.<03>-C.)<1C>__doc__rr\<00>pathlibrr<00>werkzeug.utilsrr.rrrr r
<00>str<74>boolrrr'<00>dictr-r1r5r@<00>floatrHrUrl<00>rr<00><module>rus<><00><01><04> <0C> <0A><18><1D>*<2A><02><02>
X<01>3<EFBFBD>X<01>4<EFBFBD>X<01>
<0E><14><0E>[<01><14>[<01>
!<21>T<EFBFBD>!<21>_<01><04>_<01>
2<><03>2<><04>2<>
<06><04><06> <10>c<EFBFBD> <10>e<EFBFBD>d<EFBFBD>l<EFBFBD> <10> <0F>T<EFBFBD> <0F><03> <0F><10>s<EFBFBD><10>s<EFBFBD>T<EFBFBD>z<EFBFBD>r