iqdZddlZddlZGddZedkreZdddd d dd d dd ddddddddgZedeD] Zededdedd!e eZ ede e de D]"Zededdedd!dSdS)u8 展览信息过滤器 - 根据用户偏好自动过滤 Nc4eZdZdZd dZdZdZdZd dZdS) ExhibitionFilteru展览过滤器Nc6|`tjtjtjtdd}|||_|jdi}|s/|jdidi}t|dg|_ t|dg|_ dS)u初始化过滤器Nconfigzuser_preferences.jsonexhibition_filteruser_preferences filter_types keep_types) ospathjoindirname__file__ _load_configrgetsetr r )self config_path ex_filters Q/root/.openclaw/workspace/travel/beijing-exhibitions/scripts/exhibition_filter.py__init__zExhibitionFilter.__init__ s  ',, 9 9::'K '' 44 KOO$7<<  ] (:B??CCDWY[\\I nb A ABBimmL"==>>c t|dd5}tj|cdddS#1swxYwYdS#t$r!}t d|d|icYd}~Sd}~wwxYw)u加载配置文件rzutf-8)encodingNu"警告:无法加载配置文件 z: )openjsonload Exceptionprint)rrfes rrzExhibitionFilter._load_configs k3999 $Qy|| $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $    I{IIaII J J JIIIIII s8A5 A9A9A A- A("A-(A-c|dd}|dd}|jD] }||vs||vrdSgd}|D] }||vrdS |jD] }||vs||vrdSgd}|D] }||vrdS dS)u!判断展览是否应该被过滤typetitleT)u装置u当代u民俗u亲子u生肖u地质u科普u合集F)u历史u古代u考古u文物u 博物馆u故宫u书法u藏传u佛教u古蜀u青铜u文明u庞贝u 三星堆)rr r ) r exhibitionex_typer& filter_typefilter_keywordskeyword keep_type keep_keywordss r should_filterzExhibitionFilter.should_filter(s..,,w++ ,  Kg%%K)?)?tt*@kjj&  G%tt   IG##w)';';uu(<kkk $  G%uu urchg}|D],}||s||-|S)u过滤展览列表)r.append)r exhibitionsfilteredexs rfilter_exhibitionsz#ExhibitionFilter.filter_exhibitionsFsD $ $B%%b)) $###r cf||}t|dd}|d|S)u3获取推荐展览(已过滤不符合兴趣的)c|ddv|ddkt|dddkfS)Nsource)u故宫博物院官网u中国美术馆官网u北京市文物局priceu免费hallr%r)rlen)xs rz6ExhibitionFilter.get_recommendations..UsLh#kkg(*AEE&"%%&&*rT)keyreverseN)r4sorted)rr1limitr2 sorted_exs rget_recommendationsz$ExhibitionFilter.get_recommendationsNsN**;77     %  r)N)r5) __name__ __module__ __qualname____doc__rrr.r4rCrrrr so????$<!!!!!!rr__main__u 庞贝展u考古/古罗马)r&r$u帕拉第奥展u 建筑艺术u 三星堆展u 古蜀文明u 马文化展u 生肖文化u河北古代艺术u 古代艺术u 庙会文化u 民俗文化u 原始展览:z - r&z (r$)u 过滤后 (u 个):u ✓ ) rGrr rrDfiltertest_exhibitionsr r3r4r2r;rHrrrMs S!S!S!S!S!S!S!S!l z    F'9::#^<< .99 .99&?? .99  E/33 1R[11BvJ1112222(()9::H E /##h-- / / /00055 3r'{33bj3334444+(55r