From 245253cd9e0ebaad3b9b4efbfae8c0e3090afc9b Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期三, 30 七月 2025 22:00:53 +0800
Subject: [PATCH] 添加 AI 生成/改写 docx ;添加微信公众号自动发布
---
auto_media_publisher/uploaders/uploader_base.py | 10
.gitignore | 4
auto_media_publisher/downloaders/dajiala_downloader.py | 2
auto_media_publisher/uploaders/uploader_gongzhonghao.py | 236 +++
auto_media_publisher/uploaders/uploader_twitterX.py | 12
auto_media_publisher/config/conf_llm.py | 209 +-
auto_media_publisher/config/conf_video_mashup.py | 8
auto_media_publisher/generators/video_generator_mashup.py | 16
auto_media_publisher/uploaders/uploader_bilibili.py | 22
data/auto_media_publisher.sqlite3 | 0
data/cookies/18918594752/gongzhonghao.json | 1
auto_media_publisher/config/conf_video_taijiniao.py | 2
config/users/user_18918594752.json | 35
auto_media_publisher/uploaders/uploader_xiaohongshu.py | 10
auto_media_publisher/config/conf_base.py | 4
config/users/user_13381602515.json | 2
auto_media_publisher/generators/video_generator_concat.py | 6
auto_media_publisher/generators/docx_generator_gemini.py | 183 ++
auto_media_publisher/utils/utils_text2image_pollinations.py | 22
auto_media_publisher/config/conf_docx_generate_complex.py | 2109 +++++++++++++++++++++++++++++++
auto_media_publisher/generators/docx_generator_rewriter.py | 105 +
auto_media_publisher/uploaders/uploader_douyin.py | 14
test/test_upload.py | 6
auto_media_publisher/config/conf_platform_login_url.py | 8
auto_media_publisher/utils/uploader_helper.py | 3
auto_media_publisher/generators/video_generator_taijiniao.py | 4
auto_media_publisher/modifiers/rewriter/docx_rewriter_gemini.py | 81
config/users/user_18918594752bukebuke.json | 2
auto_media_publisher/uploaders/login_chrome.py | 4
auto_media_publisher/config/conf_docx_generate.py | 613 +++++++++
auto_media_publisher/uploaders/uploader_shipinhao.py | 14
auto_media_publisher/uploaders/uploader_baijiahao.py | 101 +
auto_media_publisher/uploaders/uploader_kuaishou.py | 10
auto_media_publisher/uploaders/uploader_tiktok.py | 16
auto_media_publisher/generators/docx_generator_creator.py | 94 +
auto_media_publisher/generators/video_generator_manual.py | 2
36 files changed, 3,718 insertions(+), 252 deletions(-)
diff --git a/.gitignore b/.gitignore
index 5432fdb..2594a36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,8 +13,8 @@
data/docx_final/
data/docx_selected/
data/images_layer/
-data/video_draft/
-data/video_final/
+data/media_draft/
+data/media_final/
data/taijiniao/
data/dajiala_top15_data.json
diff --git a/auto_media_publisher/config/conf_base.py b/auto_media_publisher/config/conf_base.py
index 105f217..9e5f0a1 100644
--- a/auto_media_publisher/config/conf_base.py
+++ b/auto_media_publisher/config/conf_base.py
@@ -8,8 +8,8 @@
# 寮�鍙戠幆澧冿紝鍩轰簬褰撳墠鏂囦欢寰�涓婁袱绾�
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
-VIDEO_DIR_DRAFT = os.path.join(BASE_DIR, "data/video_draft")
-VIDEO_DIR_FINAL = os.path.join(BASE_DIR, "data/video_final")
+VIDEO_DIR_DRAFT = os.path.join(BASE_DIR, "data/media_draft")
+VIDEO_DIR_FINAL = os.path.join(BASE_DIR, "data/media_final")
COOKIE_DIR = os.path.join(BASE_DIR, "data/cookies")
DOCX_DIR_DOWNLOADED = os.path.join(BASE_DIR, "data/docx_downloaded")
DOCX_DIR_SELECTED = os.path.join(BASE_DIR, "data/docx_selected")
diff --git a/auto_media_publisher/config/conf_docx_generate.py b/auto_media_publisher/config/conf_docx_generate.py
new file mode 100644
index 0000000..aff228c
--- /dev/null
+++ b/auto_media_publisher/config/conf_docx_generate.py
@@ -0,0 +1,613 @@
+STORY_PROMPT_PARAMETERS ={
+ "who": [
+ "浠庢繁鍦崇▼搴忓憳鑰佸叕鐨勮瑙�",
+ "浠庢澀宸炲叏鑱屽お澶殑瑙嗚",
+ "浠庡寳浜浗浼佸共閮ㄨ�佸鐨勮瑙�",
+ "浠庡箍宸炴捣褰掑崥澹�佸叕鐨勮瑙�",
+ "浠庨暱娌欏紑缇庡闄㈢殑瀚傚瓙鐨勮瑙�",
+ "浠庤タ瀹夊崠鎴夸腑浠嬬殑寮熷紵鐨勮瑙�",
+ "浠庢垚閮芥憜鎽婂崠鍗ゅ懗鐨勫濮愮殑瑙嗚",
+ "浠庡崡浜ぇ瀛﹀垰姣曚笟濂冲効鐨勮瑙�",
+ "浠庨噸搴嗙綉绾㈠濡囩殑瑙嗚",
+ "浠庝笂娴风濠氬緥甯堢殑闂鸿湝瑙嗚",
+ "浠庢渤鍖楀幙鍩庝汉姘戝尰闄㈠尰鐢熺殑濡堝瑙嗚",
+ "浠庝笢鍖椾笅宀楀伐浜虹埜鐖哥殑瑙嗚",
+ "浠庣寤哄皬闀囬珮涓彮涓讳换鐨勮瑙�",
+ "浠庝簯鍗楀紑姘戝鐨勫ぇ濮戝瑙嗚",
+ "浠庡ぉ娲ュ仛鎶栭煶鐩存挱鐨勮〃濡硅瑙�",
+ "浠庡悎鑲ユ埧鍦颁骇寮�鍙戝晢灏忓彅瀛愮殑瑙嗚",
+ "浠庨潚宀涘垰鐢熷畬浜岃儙鐨勫珎瀛愮殑瑙嗚",
+ "浠庤吹闃冲嚭绉熻溅鍙告満鐖哥埜鐨勮瑙�",
+ "浠庢祹鍗楀仛鍏�冭緟瀵艰�佸笀鐨勮〃濮愯瑙�",
+ "浠庡崡鏄屽叏娆句拱鎴跨敺鍙嬬殑瑙嗚",
+ "浠庡叞宸炲崟浜插濡堢殑瑙嗚",
+ "浠庡搱灏旀花瀹舵斂淇濆鐨勮瑙�",
+ "浠庡お鍘熷垰绂诲鐨勯椇铚滆瑙�",
+ "浠庡ぇ鐞嗘贩鏂囧垱鍦堢殑灏忕櫧瑙嗚",
+ "浠庡懠鍜屾旦鐗归儴闃熻浆涓氱埗浜茬殑瑙嗚",
+ "浠庣煶瀹跺簞鎼炶淇殑灏忓Ж澶瑙�",
+ "浠庡畞娉㈠紑鍏徃涓夊灏忕櫧鐨勮瑙�",
+ "浠庨儜宸炲辜鍎垮洯鑰佸笀鐨勮瑙�",
+ "浠庡帵闂ㄥ瘜浜屼唬鐢锋湅鍙嬬殑瑙嗚",
+ "浠庨暱鏄ラ��浼戣�佹暀甯堝ザ濂剁殑瑙嗚",
+ "浠庝箤椴佹湪榻愭皯鏃忓鏍℃敮鏁欏コ鍎跨殑瑙嗚",
+ "浠庝腑灞遍摱琛屽伐浣滅殑鍎垮瑙嗚",
+ "浠庡崡瀹佸甯傛憡璐╃殑鑰佸叕瑙嗚",
+ "浠庤嫃宸炰簰鑱旂綉澶у巶濂冲悓浜嬬殑瑙嗚",
+ "浠庢俯宸炵倰鎴垮洟浜屽彅鐨勮瑙�",
+ "浠庣彔娴疯法澧冪數鍟嗚�佹澘濞樼殑瑙嗚",
+ "浠庢睍澶村啘鏉戣�佸鐨勫ぇ濮ㄥ瑙嗚",
+ "浠庢箹鍗楁��鍖栧啘鏉戝僵绀艰皥宕╃殑琛ㄥ紵瑙嗚",
+ "浠庢箹鍖楀疁鏄屽垰杞濂冲叕鍔″憳瑙嗚",
+ "浠庡畨寰藉叚瀹夊垵涓牎闀跨埗浜茬殑瑙嗚",
+ "浠庡洓宸濈坏闃宠鍌鐨勫コ鐮旂┒鐢熻瑙�",
+ "浠庡北涓滀复娌傝彍甯傚満鍗栭浮铔嬬殑濡堢殑瑙嗚",
+ "浠庢睙瑗胯担宸炵伀杞︾珯鎿﹂瀷闃垮Ж鐨勮瑙�",
+ "浠庡箍瑗垮寳娴峰甯傛憜鎽婂か濡荤殑瑙嗚",
+ "浠庤吹宸為伒涔夎淇伐鍦扮殑鑸呰垍瑙嗚",
+ "浠庡唴钂欏彜鍖呭ご鐭垮尯鍑鸿韩姣嶄翰鐨勮瑙�",
+ "浠庢捣鍗椾笁浜氬仛鏃呮媿鎽勫奖鐨勫皬鍙斿瓙鐨勮瑙�",
+ "浠庤タ钘忔媺钀ㄦ敮鏁欏コ鑰佸笀鐨勮瑙�",
+ "浠庡畞澶忛摱宸濊嵂浼侀珮绠″珎瀛愮殑瑙嗚",
+ "浠庣敇鑲冮檱鍗楁暀浣撳眬琛ㄥ摜鐨勮瑙�",
+ "浠庢柊鐤嗕紛鐘佹彺鐤嗗尰鐢熺殑瑙嗚",
+ "浠庨噸搴嗛珮閾佷笂鍋堕亣鐨勫ぇ濮愯瑙�",
+ "浠庡寳浜鍖烘埧鎶曡祫浜虹埗浜茬殑瑙嗚",
+ "浠庢繁鍦虫湀鍏ヤ笁涓囧嵈浣忓嚭绉熷眿濂冲効鐨勮瑙�",
+ "浠庡箍宸濳TV澶滃満椹诲敱鐢峰弸鐨勮瑙�",
+ "浠庨暱娌欏浠嬫墍鑰佹澘濞樼殑瑙嗚",
+ "浠庢垚閮戒簩鑳庡ザ鐖镐笅鐝悗鐨勮瑙�",
+ "浠庡ぉ娲ュ紑涓蹭覆棣欑殑濡瑰か瑙嗚",
+ "浠庡崡浜吇鑰侀櫌鎶ゅ伐鐨勮瑙�",
+ "浠庝笂娴疯偛鍎跨劍铏戝濡堢兢绠$悊鍛樼殑瑙嗚",
+ "浠庨潚宀涘绀兼憚褰卞笀鐨勮瑙�",
+ "浠庡悎鑲ユ硶闄㈡墽琛屽眬鐨勫澶瑙�",
+ "浠庤タ瀹夊皬鍟嗗搧鎵瑰彂甯傚満鐨勮�佸﹩瑙嗚",
+ "浠庡崡鏄岀伀閿呭簵鑰佹澘濞樼殑瑙嗚",
+ "浠庢祹鍗楀叕鍥烦骞垮満鑸為樋濮ㄧ殑瑙嗚",
+ "浠庡搱灏旀花澶т笓鍒氭瘯涓氬コ鍎跨殑瑙嗚",
+ "浠庡帵闂ㄥ啓鍏紬鍙锋悶鍓笟鐨勫濡堣瑙�",
+ "浠庡ぇ鐞嗚嚜鐢辨憚褰卞笀鐨勫ぇ鑸呭摜瑙嗚",
+ "浠庡お鍘熻�佹棫灏忓尯淇濆畨澶х埛鐨勮瑙�",
+ "浠庡懠鍜屾旦鐗瑰幓鑰冪爺鐨勪緞濂宠瑙�",
+ "浠庣煶瀹跺簞鍒濇亱濂冲弸鐨勮瑙�",
+ "浠庨儜宸炲叕鍔″憳鐖朵翰鐨勮瑙�",
+ "浠庡崡瀹佷埂闀囧熀灞傚共閮ㄧ殑瑙嗚",
+ "浠庤嫃宸炵嫭灞呬腑骞存湭濠氬濮愮殑瑙嗚",
+ "浠庢俯宸炵寮傚甫濞冪殑鍫傚摜瑙嗚",
+ "浠庣彔娴疯法鐪佹帰浜插﹩濠嗙殑瑙嗚",
+ "浠庢睍澶村悓涔″井淇$兢閲岀垎鏂欑殑瑙嗚",
+ "浠庡箍瑗挎潙鍙g湅鐑椆鐨勫ザ濂惰瑙�",
+ "浠庤吹宸炲洖涔″缓鎴跨殑澶栫敟瑙嗚",
+ "浠庢捣鍗楁埧浜т腑浠嬬殑瑙嗚",
+ "浠庢柊鐤嗚澶村彂浼犲崟鐨勫鐢熻瑙�",
+ "浠庝笂娴峰搴細璁兢閲岀殑灏忓瀛愯瑙�",
+ "浠庡寳浜寮傜敺寰嬪笀鐨勮瑙�",
+ "浠庢澀宸炵劍铏戣�冪紪鐨勫噯濂冲┛瑙嗚",
+ "浠庡箍宸�996鎼爾绋嬪簭鍛樼殑鍓嶅コ鍙嬭瑙�",
+ "浠庢垚閮借劚鍙g婕斿憳闂鸿湝鐨勮瑙�",
+ "浠庡ぉ娲ュ绀肩幇鍦虹殑鍓嶄换瑙嗚",
+ "浠庨噸搴嗙伀閿呭簵鑰佹澘鐨勯椇铚滆瑙�",
+ "浠庡崡浜綉鍙嬬嚎涓嬭闈㈢殑瑙嗚",
+ "浠庡悎鑲ュ疇鐗╁尰闄㈢殑瀹炰範鍖荤敓瑙嗚",
+ "浠庨暱娌欏け涓氬張澶嶅悎鐨勫墠澶瑙�",
+ "浠庡ぇ鐞嗙煭绉熸埧鎴夸笢鐨勮瑙�",
+ "浠庢繁鍦抽珮钖絾瀛ょ嫭濂冲効鐨勮瑙�",
+ "浠庣彔娴锋墦绠楄8杈炲幓鏀暀鐨勮〃濡硅瑙�"
+ ],
+ "what": [
+ "濠嗗﹩鍙戠幇濯冲鎵嬫満閲岀殑绉樺瘑鑱婂ぉ璁板綍",
+ "鑰佸叕绐佺劧瀹e竷瑕佺濠氾紝鐞嗙敱璁╀汉闇囨儕",
+ "灏忓瀛愭殫涓牬鍧忔柊濠氱敓娲�",
+ "瀛╁瓙琚檶鐢熶汉鎺ヨ蛋寮曞彂鍏ㄥ娣蜂贡",
+ "濠嗗涓轰竴寮犻仐鍢变簤鎵т笉涓�",
+ "闂鸿湝鑳屽悗鎹呭垁锛屾姠璧板ソ闂鸿湝鑰佸叕",
+ "鑰佸叕浜嬩笟澶辫触闅愮瀿瀹朵汉鐪熺浉",
+ "濡诲瓙鍙戠幇鑰佸叕鍑鸿建鍚屼簨",
+ "瀹跺涵鑱氫細鐖嗗彂鍙h锛屾彮闇插骞寸瀵�",
+ "涓堝か韬偅閲嶇梾鍗寸瀿鐫�濡诲瓙",
+ "灏忓瀛愯璁″珌绁稿濡囧伔閽�",
+ "濠嗗﹩绉佽嚜澶勭悊瀛欏瓙鏁欒偛闂",
+ "鍓嶄换绐佺劧鍑虹幇鎼呭眬",
+ "涓堝か琚妇鎶ヨ亴鍔¤繚瑙勶紝瀹跺涵闄峰叆鍗辨満",
+ "濡诲瓙鎬�瀛曢伃閬囨祦浜э紝澶鐭涚浘婵�鍖�",
+ "濠嗗﹩寮鸿骞叉秹鍎垮瓙濠氬Щ鐢熸椿",
+ "濯冲琚偦灞呴櫡瀹冲伔绐�",
+ "涓堝か鎰忓鍙戠幇鑷繁骞堕潪浜茬敓鐖朵翰",
+ "瀹朵腑閬椾骇琚緥甯堟倓鎮勬敼鍐�",
+ "鍎垮涓轰簡瀛╁瓙涓庡﹩濠嗗喎鎴樻暟鏈�",
+ "涓堝か鏃х埍褰掓潵锛屽搴櫡鍏ョ悍浜�",
+ "濯冲鎰忓鎬�涓婁簩鑳庯紝涓堝か鎬佸害绐佺劧杞彉",
+ "濠嗗﹩鏆椾腑缁欏瓩瀛愭崲瀛︽牎",
+ "灏忓瀛愭晠鎰忓悜鐖舵瘝鎶归粦濯冲",
+ "瀛╁瓙鐨勪翰鐢熺埗浜茶韩浠芥洕鍏�",
+ "鑰佸叕娣卞绁炵澶辫釜锛屽紩鍙戝叏瀹舵亹鎱�",
+ "濡诲瓙琚皬涓夊▉鑳佸垎鎵�",
+ "濠嗗﹩涓庡効濯充簤澶哄搴储浜�",
+ "涓堝か鍋峰伔鑳岀潃濡诲瓙杩樺��",
+ "濯冲鍙戠幇涓堝か鏇炬湁鍙岄噸韬唤",
+ "鍓嶅か甯﹀瀛愬綊鏉ワ紝寮曞彂鎶氬吇鏉冨ぇ鎴�",
+ "濠嗗﹩绉佽嚜鎷胯蛋缁撳绀奸噾",
+ "涓堝か琚�佹澘璋冭亴澶栧湴锛屽か濡绘劅鎯呰�冮獙",
+ "濡诲瓙璇細涓堝か涓庡コ鍚屼簨浜插瘑",
+ "鍎垮涓庡叕鍏箣闂存殫鐢熸儏鎰�",
+ "濠嗗﹩缁勭粐瀹跺涵鎶曠エ鍐冲畾鍎垮瓙濠氬Щ",
+ "灏忓瀛愭殫涓媿鎽勫搴煕鐩捐棰戝娉�",
+ "涓堝か琚ソ鍙嬮獥璐紝濡诲瓙鍊惧姏鐩稿姪",
+ "濠嗗﹩鍙戠幇鍎垮闅愮瀿鐪熷疄瀛﹀巻",
+ "鍎垮瓙绐佺劧瀹e竷缁撳锛屽濡囦笉婊�",
+ "濡诲瓙鍙戠幇涓堝か鏃ф墜鏈鸿棌鏈夌瀵嗙収鐗�",
+ "濠嗗﹩绉佷笅绛栧垝瀹跺涵鑱氫細鑳屽悗鏆楄棌闃磋皨",
+ "灏忓瀛愬湪鏈嬪弸鍦堟暎甯冨搴笉鍜岃埃瑷�",
+ "涓堝か琚湅鍙嬪嚭鍗栵紝浜嬩笟涓�钀藉崈涓�",
+ "濡诲瓙寰楃煡濠嗗﹩鏇剧粡闅愮瀿閲嶅ぇ鐥呮儏",
+ "鍎垮涓轰簡浜嬩笟绂诲鍑鸿蛋",
+ "濠嗗﹩鍋峰伔甯効瀛愬畨鎺掔浉浜�",
+ "涓堝か鍦ㄥ鏈夌鐢熷瓙锛屽搴鏆寸垎鍙�",
+ "濡诲瓙鍙戠幇鑰佸叕闅愯棌鐨勫法棰濆�哄姟",
+ "濠嗗﹩涓庡濡囦负瑁呬慨椋庢牸浜夋墽",
+ "鍎垮鍊熸満閫艰揩濠嗗﹩鍑哄敭鑰佸畢",
+ "涓堝か娣卞涓庨檶鐢熷コ瀛愰�氳瘽",
+ "濡诲瓙鍙戠幇濠嗗﹩绔熸槸鑷繁浜茬敓姣嶄翰",
+ "灏忓瀛愭晠鎰忓埗閫犲搴喎鎴�",
+ "濠嗗﹩绉樺瘑甯姪鍎垮澶嶈亴",
+ "涓堝か闅愮瀿鐢熺梾浣忛櫌娑堟伅",
+ "濯冲绉佽嚜鍗栨帀瀹跺涵璧勪骇",
+ "濡诲瓙閬亣缃戠粶鏆村姏锛屼笀澶棤鍔涗繚鎶�",
+ "濠嗗﹩鏆椾腑璧勫姪鍎垮瓙鍒涗笟",
+ "灏忓瀛愬伔钘忓涓噸瑕佹枃浠�",
+ "涓堝か涓哄搴粯榛樻壙鎷呭法棰濊捶娆�",
+ "濡诲瓙鎬�鐤戝﹩濠嗙洃瑙嗚嚜宸�",
+ "鍎垮娣卞澶栧嚭锛岃涓堝か璇細鍑鸿建",
+ "濠嗗﹩涓庨偦灞呭悎璋嬫媶杩侀娉�",
+ "涓堝か涓庡墠濂冲弸绉樺瘑鑱旂郴",
+ "濡诲瓙琚彂鐜板弬鍔犵瀵嗚仛浼�",
+ "灏忓瀛愭姠璧板鏃忕敓鎰忓叧閿鎴�",
+ "濠嗗﹩鍥犳棫鐤鹃殣鐬掔梾鎯�",
+ "涓堝か涓㈠け閲嶈鍚堝悓锛屽嵄鍙婂搴粡娴�",
+ "濡诲瓙鍙戠幇涓堝か鏆椾腑璁剧珛绉佹埧璐︽埛",
+ "鍎垮鎷掔粷濠嗗﹩瀹夋帓鐨勭敓娲绘柟寮�",
+ "濠嗗﹩涓哄効瀛愮瀵嗕拱鎴�",
+ "灏忓瀛愪妇鎶ュ鏃忎紒涓氳繚瑙�",
+ "涓堝か閬亣鑱屽満鎬ч獨鎵�",
+ "濡诲瓙鍙戠幇濠嗗﹩涓庡墠澶湁鑱旂郴",
+ "濠嗗﹩璁″垝璁╁効濯虫斁寮冨伐浣�",
+ "涓堝か鏆椾腑甯姪鍓嶅杩樺��",
+ "濡诲瓙鎰忓鍙戠幇瀹跺涵鑰佺収鐗囩湡鐩�",
+ "灏忓瀛愬伔鍋锋媿鎽勫搴瀵�",
+ "濠嗗﹩涓哄瓩瀛愭暀鑲茶垂鐢ㄦ殫涓娆�",
+ "涓堝か琚揩杈炶亴锛屽搴櫡鍏ュ洶澧�",
+ "濡诲瓙绉樺瘑瀛︿範鐞嗚储",
+ "鍎垮涓庡﹩濠嗗拰瑙o紝瀹跺涵姘旀皼缂撳拰",
+ "濠嗗﹩瑕佹眰鍎垮瓙鍔犲揩涔版埧閫熷害",
+ "涓堝か涓庨椇铚滃叧绯绘毀鏄�",
+ "濡诲瓙鍙戠幇涓堝か浠ュ墠鏈夌姱缃褰�",
+ "灏忓瀛愯璁¤濠嗗﹩澶辨湜",
+ "濠嗗﹩鎮g梾鏈憡鐭ュ効濯�",
+ "涓堝か鏆椾腑璋冩煡濡诲瓙鎵嬫満",
+ "濡诲瓙鎬�鐤戝皬濮戝瓙绐ユ帰闅愮",
+ "鍎垮涓轰簡瀛╁瓙蹇嶈濠嗗﹩",
+ "濠嗗﹩璁″垝鎼埌鍎垮瓙瀹跺悓浣�",
+ "涓堝か澶变笟锛屽瀛愮嫭鑷拺璧峰搴�",
+ "濡诲瓙鍙戠幇涓堝か鍙岄噸鐢熸椿",
+ "灏忓瀛愰椆瀹跺涵鑱氫細鍙樻晠",
+ "濠嗗﹩瀹夋帓鍎垮瓙涓庨偦灞呭コ鍎跨浉浜�",
+ "涓堝か琚闄疯椽姹�",
+ "濡诲瓙鍙戠幇鍎垮瓙涓庡皬濮戝瓙绉樺瘑鑱旂粶",
+ "涓堝か绐佺劧鎻愬嚭鍏ㄥ鎼縼寮曞彂鐭涚浘",
+ "濡诲瓙鍙戠幇濠嗗﹩钘忓尶鍎垮瓙杩囧幓涓戦椈",
+ "灏忓瀛愭剰澶栨��瀛曪紝瀹跺涵闄峰叆娣蜂贡",
+ "濠嗗﹩鍋峰伔甯﹀瓩瀛愬弬鍔犺ˉ涔犵彮",
+ "涓堝か澶栧嚭鍑哄樊鏃惰鍗峰叆鍟嗕笟绾犵悍",
+ "濡诲瓙绉樺瘑鑱旂郴鍓嶇敺鍙嬪紩鍙戣浼�",
+ "灏忓瀛愭殫鍦伴噷鎼炲灝瀚傚瓙鐨勭敓鎰�",
+ "濠嗗﹩涓庨偦灞呰仈鎵嬪浠樺濡�",
+ "涓堝か鎰忓澶卞繂锛屽搴韩浠介敊涔�",
+ "濡诲瓙鍙戠幇涓堝か鑳岀潃濂逛拱璞溅",
+ "鍎垮鏃犳剰闂村彂鐜板鏃忚储浜у垎閰嶇瀵�",
+ "濠嗗﹩涓庡濡囦负瀛欏瓙鏁欒偛璐圭敤浜夊惖",
+ "涓堝か鍦ㄥ鏈変簩濠氬瀛愯鍙戠幇",
+ "濡诲瓙琚﹩濠嗚璁¢櫡瀹宠亴鍦哄け鎰�",
+ "灏忓瀛愬埄鐢ㄦ墜鏈虹洃鍚搴璇�",
+ "濠嗗﹩鏆椾腑骞查鍎垮瓙浜嬩笟",
+ "涓堝か鎷掔粷甯﹀瀛愬洖濠嗗杩囧勾",
+ "濡诲瓙鍙戠幇灏忓瀛愬鍎垮瓙鏈夐潪鍒嗕箣鎯�",
+ "濠嗗﹩鍋峰伔淇敼閬楀槺鍐呭",
+ "涓堝か涓庡閬囧コ鍚屼簨琚姄鐜拌",
+ "濡诲瓙琚偦灞呰瑙e伔鎷垮瀛愮帺鍏�",
+ "灏忓瀛愯璁″珌绁稿紵濯冲鏆�",
+ "濠嗗﹩閫艰揩鍎垮鏀惧純姊︽兂鑱屼笟",
+ "涓堝か涓哄搴殣鐬掕礋鍊虹湡鐩�",
+ "濡诲瓙鍙戠幇涓堝か鎵嬫満涓殣钘忓閲嶈韩浠�",
+ "鍎垮涓庡﹩濠嗗洜瀹跺姟闂鍐锋垬",
+ "濠嗗﹩鍋峰伔甯﹀瓩瀛愬弬鍔犲畻鏁欎华寮�",
+ "涓堝か琚嵎鍏ョ綉缁滆瘓楠楁",
+ "濡诲瓙琚皬濮戝瓙闄峰瀵艰嚧浜插鍏崇郴鐮磋",
+ "灏忓瀛愭姠鍗犲搴叧閿储浜�",
+ "濠嗗﹩涓庡効濯充簤澶哄瓩瀛愭姎鍏绘潈",
+ "涓堝か澶栭亣琚瀛愬綋鍦烘姄鍖�",
+ "濡诲瓙鍙戠幇涓堝か绉佽棌璞畢閽ュ寵",
+ "鍎垮涓哄搴壓鐗茶嚜鎴戜簨涓�",
+ "濠嗗﹩瀵嗚皨鎷嗘暎鍎垮瓙鍜屽濡囩殑鎰熸儏",
+ "涓堝か鑳岀潃瀹朵汉杩涜璧屽崥",
+ "濡诲瓙鍙戠幇灏忓瀛愭搷鎺у搴井淇$兢",
+ "灏忓瀛愭殫涓寫鎷ㄧ闂村﹩濯冲叧绯�",
+ "濠嗗﹩鍋峰伔璧勫姪鍎垮瓙鍒涗笟澶辫触",
+ "涓堝か鍥犲け涓氭矇榛樹笉璇�",
+ "濡诲瓙琚璁や负鍋风獌瀹朵骇",
+ "鍎垮涓庡﹩濠嗕负瀹跺姟浜嬩簤鍚靛崌绾�",
+ "濠嗗﹩鏆椾腑鎷胯蛋缁撳绀奸噾",
+ "涓堝か涓庡墠濡荤瀵嗚仈缁�",
+ "濡诲瓙鍙戠幇濠嗗﹩闅愯棌鍋ュ悍闂",
+ "灏忓瀛愬埄鐢ㄤ翰鎴氬叧绯昏皨鍙栧埄鐩�",
+ "濠嗗﹩寮哄埗瀹夋帓鍎垮瓙鐩镐翰",
+ "涓堝か娣卞鎺ラ檶鐢熺數璇濊濡诲瓙鎬�鐤�",
+ "濡诲瓙琚ソ鍙嬭儗鍙涙儏鎰熷穿婧�",
+ "鍎垮涓哄瀛愭暀鑲蹭笌濠嗗﹩瀵圭珛",
+ "濠嗗﹩璁捐鍎垮浜嬩笟澶辫触",
+ "涓堝か闅愮瀿閲嶅ぇ鐥呮儏",
+ "濡诲瓙鍙戠幇涓堝か绉樺瘑璐锋",
+ "灏忓瀛愭晠鎰忓埗閫犲搴煕鐩�",
+ "濠嗗﹩鑳岀潃瀹朵汉鍗栨帀鑰佸畢",
+ "涓堝か琚翰鎴氶櫡瀹冲悕瑾夊彈鎹�",
+ "濡诲瓙閬亣鑱屽満鎬ч獨鎵�",
+ "鍎垮鍙戠幇濠嗗﹩绉佽棌瀹舵棌绉樺瘑",
+ "濠嗗﹩閫艰揩鍎垮鏀惧純宸ヤ綔",
+ "涓堝か琚瀛愬彂鐜板弻閲嶇敓娲�",
+ "濡诲瓙鏆椾腑璋冩煡涓堝か琛岃釜",
+ "灏忓瀛愯璁℃尋璧板珎瀛愮敓娲诲湀",
+ "濠嗗﹩绉樺瘑鎿嶆帶瀹跺涵缁忔祹",
+ "涓堝か鎰忓閬楀け閲嶈鏂囦欢",
+ "濡诲瓙鍙戠幇濠嗗﹩涓庡皬濮戝瓙鍚堣皨",
+ "鍎垮涓哄搴壓鐗插仴搴�",
+ "濠嗗﹩鍋峰伔鑱旂郴鍎垮鍓嶇敺鍙�",
+ "涓堝か琚揩杈炶亴瀹跺涵闄峰叆鍗辨満",
+ "濡诲瓙鍙戠幇涓堝か绉佽棌閾惰鍗�",
+ "灏忓瀛愭姠璧板瓩瀛愭姎鍏绘潈",
+ "濠嗗﹩閫艰揩鍎垮瓙璐疆璞畢",
+ "涓堝か鏆椾腑杩樺�轰笉鍛婅瘔瀹朵汉",
+ "濡诲瓙閬亣缃戠粶鏆村姏",
+ "鍎垮涓庡﹩濠嗗啺閲婂墠瀚�",
+ "濠嗗﹩瑕佹眰鍎垮鐢熶簩鑳�",
+ "涓堝か涓庡瀛愬ソ鍙嬫毀鏄�",
+ "濡诲瓙鍙戠幇涓堝か鏄旀棩鐘姜璁板綍",
+ "灏忓瀛愰櫡瀹冲﹩濠嗗仴搴�",
+ "濠嗗﹩鎮g梾鐬掔潃瀹朵汉",
+ "涓堝か鏆椾腑鐩戣濡诲瓙鎵嬫満",
+ "濡诲瓙鎬�鐤戝皬濮戝瓙鍋风湅鏃ヨ",
+ "鍎垮涓哄﹩濠嗗繊璁�",
+ "濠嗗﹩璁″垝鎼埌鍎垮瓙瀹朵綇",
+ "涓堝か澶变笟濡诲瓙鎾戝",
+ "濡诲瓙鍙戠幇涓堝か闅愯棌绉樺瘑",
+ "灏忓瀛愬埗閫犲搴娉�",
+ "濠嗗﹩瀹夋帓鍎垮瓙鐩镐翰",
+ "涓堝か琚闄疯椽姹�",
+ "濡诲瓙鍙戠幇鍎垮瓙绉樺瘑浜ゅ線灏忓瀛�",
+ "鍝ュ摜绐佺劧鑳屽彌寮熷紵锛屾姠澶哄鏃忎紒涓氭帶鍒舵潈",
+ "濮愬闅愮瀿缁撳浜嬪疄锛岀瀵嗙敓涓嬪瀛�",
+ "鐖朵翰绐佺劧瀹e竷瑕佸啀濠氾紝寮曞彂鍏ㄥ鍙嶅脊",
+ "姣嶄翰鍙戠幇鍎垮瓙闅愮瀿澶氬勾鐨勫�哄姟",
+ "琛ㄥ紵鏃犳剰娉勯湶瀹舵棌绉樺瘑锛屽鑷翠翰鎴氬弽鐩�",
+ "閭诲眳涓炬姤瀹堕噷鍏诲疇鐗╂壈姘戯紝閭婚噷鍏崇郴绱у紶",
+ "楂樹腑鍚屽鍥炰埂鎼呬贡鏃ф儏锛屽紩鍙戜笁瑙掓亱",
+ "灏忓彅瀛愮鑷尓鐢ㄥ叕娆捐鎶擄紝瀹跺涵钂欑緸",
+ "澶у瀛愬伔璧板濡圭殑瀚佸锛屽鏃忔挄瑁�",
+ "鍫傚厔寮熷洜鍦熷湴绾犵悍闂瑰埌娉曞涵",
+ "闂鸿湝鏆楀湴涓庝笀澶浼氾紝鍙嬫儏鐮磋",
+ "澶栧﹩鍋忓績瀛欏瓙锛屽拷瑙嗗瓩濂崇殑鎴愰暱",
+ "濮ㄥ璇紶瀹朵笐锛屼翰鎴氱兢鍐呯兢璧锋敾鍑�",
+ "琛ㄥ绐佺劧褰掑浗锛屽甫鏉ヤ笉鍙憡浜虹殑绉樺瘑",
+ "鑸呰垍涓轰簡涓�绗旈仐浜ц捣璇変緞瀛�",
+ "寮熷琚浼氫笌閭诲眳鐢峰瓙鏆ф槯锛屽搴喎鎴�",
+ "鍫傚鎶簡琛ㄥ摜鐨勫コ鏈嬪弸锛屽鏃忎笉鍜�",
+ "鐖风埛涓寸粓鍓嶆彮闇插鏃忛殣绉樺巻鍙�",
+ "濂跺ザ鍙嶅瀛欏瓙濠氫簨锛屽弻鏂瑰搴墤鎷斿缉寮�",
+ "濂藉弸绐佺劧澶辫仈锛岀暀涓嬬绉橀仐涔�",
+ "濡瑰鍥犺亴鍦烘檵鍗囨殫绠楀濮�",
+ "寮熷紵鍋峰伔鍦ㄥ鍏诲皬涓夛紝濡诲瓙宕╂簝",
+ "澶栧叕閬椾骇琚潪娉曡浆绉伙紝瀹跺涵鎴愬憳澶ч椆",
+ "鍙斿彅鏆椾腑绛瑰瀹跺涵鑱氫細锛屽嵈琚儗鍙�",
+ "閭诲眳闄峰瀹堕噷瀛╁瓙鍋风獌锛岄椆涓婃淳鍑烘墍",
+ "楂樹腑鍚屽浼氫笂鏃ф儏澶嶇噧锛屽紩鍙戜笀澶珘濡�",
+ "澶т集琚紶鏌撶梾闅旂锛屽搴潰涓存亹鎱�",
+ "琛ㄥ紵娆犱笅宸ㄩ璧屽�猴紝鍏ㄥ琚壍杩�",
+ "濮戝骞叉秹鍎垮瓙濠氬Щ锛屽埗閫犲搴鐥�",
+ "闂鸿湝鏃犳剰娉勯湶闅愮锛屽弸鎯呯牬瑁�",
+ "鐖朵翰閱夐┚琚姄锛屽奖鍝嶅鏃忓悕澹�",
+ "姣嶄翰鍋峰伔鎷胯蛋濂冲効缁撳绀奸噾",
+ "鍏勫紵鍥犻仐浜у垎閰嶉椆缈伙紝鏂粷寰�鏉�",
+ "瀚傚瓙鍦ㄥ鏆撮娉腑閫夋嫨绂诲紑",
+ "鐖风埛鐨勯仐鎰胯缁ф壙浜虹鏀�",
+ "濂跺ザ鐨勫亸蹇冨紩鍙戝厔寮熷濡逛簤鍚�",
+ "琛ㄥ琚墠澶籂缂狅紝瀹朵汉鍑烘墜鐩稿姪",
+ "鑸呰垍璧屽崥杈撻挶锛屽閲岄櫡鍏ュ洶澧�",
+ "濡瑰绉樺瘑缁忚惀鍓笟锛岄伃閬囧悎浼欎汉鑳屽彌",
+ "寮熷紵琚�佹澘闄峰锛岄潰涓村け涓�",
+ "澶栧叕绐佺劧澶辫釜锛屽浜哄洓澶勫鎵�",
+ "鍙斿彅鍊熼挶涓嶈繕锛屽紩鍙戝搴悍浜�",
+ "閭诲眳绾犵紶涓嶄紤锛屽共鎵板浜虹敓娲�",
+ "楂樹腑鍚屽缁撳鍏哥ぜ閬亣鍐峰満",
+ "澶т集鎮g梾闅愮瀿锛屽搴垚鍛樼煕鐩惧姞鍓�",
+ "琛ㄥ紵鍋锋嬁瀹朵腑璐甸噸鐗╁搧琚姄",
+ "濮戝鍥犲珘濡掑埗閫犲搴埃瑷�",
+ "闂鸿湝鍙備笌浼犻攢锛屽搴櫡鍏ュ嵄鏈�",
+ "鐖朵翰琚彮鍙戞湁澶栭亣锛屽搴繏涓寸牬瑁�",
+ "姣嶄翰鎷掔粷鎺ュ彈缁ф瘝锛屽搴喎鎴�",
+ "鍏勫紵涓轰簤澶虹敓鎰忓悎浣滄潈浜掔浉鎷嗗彴",
+ "瀚傚瓙鍑鸿建琚笀澶彂鐜帮紝闂逛笂濯掍綋",
+ "鐖风埛鍥犺储浜ч棶棰樹笌瀛愬コ鍙嶇洰鎴愪粐",
+ "濂跺ザ鍋忕埍瀛欏コ锛岀枏杩滃瓩瀛�",
+ "琛ㄥ绂诲褰掓潵锛屽甫鐫�澶嶆潅鎯呯华",
+ "鑸呰垍鍗峰叆璇堥獥妗堬紝瀹跺涵钂欑緸",
+ "濡瑰绉樺瘑鎬�瀛曪紝閫夋嫨鐙嚜鐢熷瓙",
+ "寮熷紵涓烘湅鍙嬫媴淇濓紝闄峰叆璐㈠姟鍗辨満",
+ "澶栧叕閬楀槺鍏紑锛屾剰澶栨彮闇插鏃忕瀵�",
+ "鍙斿彅绉佸悶鍏锛岃涓炬姤",
+ "閭诲眳鍥犲仠杞︾籂绾蜂笌瀹朵汉浜夋墽",
+ "楂樹腑鍚屽鑱氫細鐖嗗彂婵�鐑堜簤鍚�",
+ "澶т集鎷掔粷鎺ュ彈瀛欏濡囷紝鍒堕�犲喎鍦�",
+ "琛ㄥ紵琚崟锛屽鏃忓悕瑾夊彈鎹�",
+ "濮戝鎻掓墜鍎垮鏁欒偛瀛╁瓙锛屽紩鍙戜簤绔�",
+ "闂鸿湝绉佷笅鍜屼笀澶毀鏄э紝鍙嬫儏缁堢粨",
+ "鐖朵翰韬偅閲嶇梾闅愮瀿濡诲瓙",
+ "姣嶄翰涓哄搴壓鐗插仴搴凤紝绮剧宕╂簝",
+ "鍏勫紵鍥犲搴储浜ф柇缁濆叧绯�",
+ "瀚傚瓙闅愮瀿杩囧幓琚彮鍙�",
+ "鐖风埛鐨勯仐鐗╄浜哄伔鍋锋嬁璧�",
+ "濂跺ザ闅愮瀿瀹跺涵绉樺瘑澶氬勾",
+ "琛ㄥ绐佺劧鍑虹幇锛屽甫鏉ュ嵄鏈�",
+ "鑸呰垍璧屽崥杈撳厜绉搫",
+ "濡瑰琚浼氬伔绐冿紝閬喎钀�",
+ "寮熷紵琚В闆囷紝瀹跺涵闄峰叆鍥板",
+ "澶栧叕鍘讳笘锛岄仐浜т簤澶烘垬鐖嗗彂",
+ "鍙斿彅鑳岀潃瀹朵汉璐锋涔版埧",
+ "閭诲眳涓炬姤瀹朵汉鍣煶鎵版皯",
+ "楂樹腑鍚屽涔嬮棿鏃ц处閲嶆彁",
+ "澶т集涓庡紵濯冲叧绯荤揣寮�",
+ "琛ㄥ紵绉佽嚜鍗栨帀绁栦骇",
+ "濮戝涓嶆柇鎸戞嫧绂婚棿瀹跺涵鎴愬憳",
+ "闂鸿湝楠楄蛋瀹朵腑璐骇",
+ "鐖朵翰琚寚鎺ц亴鍔′笉褰�",
+ "姣嶄翰琚効濯虫帓鏂�",
+ "鍏勫紵鍒涗笟澶辫触锛屽�哄姟缂犺韩",
+ "瀚傚瓙澶辫釜寮曞彂瀵绘壘琛屽姩",
+ "鐖风埛閬楀槺琚鏀�",
+ "濂跺ザ鍥犲亸瑙佷笌瀹朵汉鍐宠",
+ "琛ㄥ闅愮瀿濠氬Щ鐘舵��",
+ "鑸呰垍琚帶娆鸿瘓",
+ "濡瑰鍋峰伔杈炶亴",
+ "寮熷紵閬亣鑱屽満鎺掓尋",
+ "澶栧叕鐣欎笅绁炵淇′欢",
+ "鍙斿彅澶辫仈鏁版湀",
+ "閭诲眳涓庡浜虹垎鍙戣偄浣撳啿绐�",
+ "楂樹腑鍚屽鎰忓閲嶉�㈠紩鍙戠悍浜�"
+ ],
+ "style": [
+ "鍍忓皬绾功鐑笘涓�鏍凤紝鐙楄鍙堟缃笉鑳�",
+ "鍍忚眴鐡f棩璁颁竴鏍风粏鑵昏鍒猴紝灞傚眰閫掕繘",
+ "鍍忔儏鎰熶富鎾彛鎾墽鏈紝3鍒嗛挓涓�涓弽杞�",
+ "鍍忕患鑹哄悙妲藉ぇ浼氾紝璇�熷揩銆佺垎鐐瑰",
+ "鍍忕煭瑙嗛绗竴浜虹О纰庣蹇碉紝浠e叆鎰熷己",
+ "鍍忓井鍗氳秴璇濈垎鏂欒创锛屽甫鐐圭湡瀹炲拰鐙楀甫鎰�",
+ "鍍忓叕浼楀彿鐖嗘鎯呮劅鏂囷紝娓╂煍涓棌鍒╁垉",
+ "鍍忕煡涔庣儹甯栤�滄垜瀚佽繘浜嗕竴涓钁╁搴�濓紝鍐呭鐪熷疄鍙堟瀬闄愭媺鎵�",
+ "鍋囪鏄�滃綋浜嬩汉鍖垮悕鎶曠鈥濓紝寮曞彂璇勮鐙傛疆",
+ "鍐欏緱鍍忓墽鏈垎闀滃ご锛岀洿鎺ュ彲鎷嶇煭鍓�",
+ "鍍忔湅鍙嬪湀鍚愭Ы鏂囷紝鐭皬绮炬倣鐩村嚮鐥涚偣",
+ "鍍忕綉缁滆鍧涙儏鎰熺増锛岄暱绡囧ぇ璁哄眰灞傚墫鏋�",
+ "鍍忔儏鎰熻劚鍙g锛屽菇榛樺張鎵庡績",
+ "鍍忛兘甯傝█鎯呭皬璇达紝缁嗚妭涓板瘜鎰熸儏绾犵粨",
+ "鍍忓井鍗氬皬鍓у満锛屾儏缁紶鎵弽杞绻�",
+ "鍍忕煡涔庨棶绛旓紝鐞嗘�у姞鎯呯华娣峰悎鐖嗗彂",
+ "鍍忓井澶存潯鐭枃锛屽共鑴嗗埄钀藉張鎶撲汉",
+ "鍍忓揩鎵嬬洿鎾棿鍚愭Ы锛岃浼椾簰鍔ㄦ劅寮�",
+ "鍍忓井淇¤涔﹁瘎璁哄尯锛屾繁搴﹀叡楦�",
+ "鍍忔姈闊冲墽鎯呯煭瑙嗛鑴氭湰锛岃妭濂忕揣鍑戝弽杞阀濡�",
+ "鍍忕煡涔庣淇★紝鍖垮悕鍊捐瘔甯︾偣鏃犲",
+ "鍍廈绔欏脊骞曚簰鍔紝鐑儓鍙堢妧鍒�",
+ "鍍忓井鍗氭晠浜嬫帴榫欙紝灞傚眰閫掕繘鍓ф儏",
+ "鍍忓皬绾功鐪熶汉鍒嗕韩锛岀粏鑺傜湡瀹炰唬鍏ユ劅寮�",
+ "鍍忓井淇℃湅鍙嬪湀鏂囨锛屾儏缁尝鍔ㄦ槑鏄�",
+ "鍍忚眴鐡e奖璇勶紝鎯呯华鍐烽潤浣嗘殫钘忔壒鍒�",
+ "鍍忕洿鎾甫璐ч棿闅欑垎鏂欙紝杞绘澗璋冧緝鍙堟姄鐪肩悆",
+ "鍍忕綉缁滃皬璇寸珷鑺傦紝鐣欐偓蹇�",
+ "鍍忓叕浼楀彿杩炶浇鏂囷紝鐜幆鐩告墸",
+ "鍍忓井鍗氶棶绛旂垎鏂欙紝鎮康涓嶆柇",
+ "鍍忕煡涔庡尶鍚嶅悙妲斤紝鎯呯华鐩寸櫧",
+ "鍍忕煭瑙嗛寮瑰箷鐑棬璇勮鍚堥泦",
+ "鍍忕數鍙版儏鎰熻妭鐩枃绋匡紝娓╂煍鍙堢妧鍒�",
+ "鍍忓ご鏉″彿鎯呮劅涓撴爮锛屾暟鎹敮鎾戝姞鐖嗙偣",
+ "鍍忓皬绾功杈句汉鎰熸偀锛岀湡瀹炲張鏈夋儏缁�",
+ "鍍忔儏鎰熷井淇$兢闀挎枃锛屽眰灞傛彮闇�",
+ "鍍忕煡涔庣儹闂ㄥ洖绛旓紝瑙傜偣椴滄槑涓斿甫鎰�",
+ "鍍忓井鍗氱儹鎼滄枃妗堬紝鐭皬绮剧偧鍐插嚮寮�",
+ "鍍忔湅鍙嬪湀鑷槻娈靛瓙锛屽菇榛樹腑閫忓交",
+ "鍍忓枩椹媺闆呴煶棰戝墽鏈紝鍒嗘瀵硅瘽",
+ "鍍廈绔橴P涓昏嚜杩帮紝鎯呯华楗辨弧",
+ "鍍忓叕浼楀彿鐣欒█鍖鸿京璁猴紝瑙傜偣纰版挒",
+ "鍍忓井鍗氳揪浜虹垎鏂欙紝鍐呭涓板瘜缁嗚嚧",
+ "鍍忔姈闊宠揪浜鸿杩帮紝璇�熷揩寮犲姏寮�",
+ "鍍忕煡涔庢儏鎰熶笓鏍忥紝鍒嗘瀽娣卞叆",
+ "鍍忕煭瑙嗛绗竴瑙嗚鍓ф儏锛屾儏鎰熺粏鑵�",
+ "鍍忕綉缁滃皬璇村揩绔犺妭锛屽惛寮曠画鐪�",
+ "鍍忓井鍗氭晠浜嬭繛杞斤紝鑺傚鏄庡揩",
+ "鍍忓井淇″叕浼楀彿鐢ㄦ埛鎶曠锛屾儏缁ケ婊�",
+ "鍍忕煡涔庡喎绗戣瘽鍔犳儏鎰燂紝椋庤叮鍙堣嫤娑�",
+ "鍍忓皬绾功濠氬Щ蹇冩儏鍒嗕韩锛屾劅鍚岃韩鍙�",
+ "鍍忕洿鎾棿鎯呮劅浜掑姩锛岃浼楀叡楦�",
+ "鍍忓井鍗氭瀛愭墜鐖嗘枡锛屽菇榛樹腑甯﹀垁",
+ "鍍忕煡涔庢儏鎰熻瘽棰樼儹鐐癸紝鐞嗘�ф儏缁吋鍏�",
+ "鍍忚眴鐡h涔︾瑪璁帮紝鎯呮劅娣卞埢",
+ "鍍忓井淇″叕浼楀彿鐖嗘鏍囬鍏氭枃妗�",
+ "鍍忓井鍗氳秴璇濊拷鏄熺矇涓濈垎鏂�",
+ "鍍忕煭瑙嗛鍓ф儏瑙h锛屽墽鎯呰穼瀹�",
+ "鍍忕煡涔庡尶鍚嶉棶绛旓紝鎯呯华鐪熷疄",
+ "鍍忕數鍙版儏鎰熻璋堢锛屾俯鏆栫湡璇�",
+ "鍍忓井鍗氳瘽棰樿璁猴紝瑙傜偣澶氬厓",
+ "鍍忕煡涔庢儏鎰熸晠浜嬮泦锛岀粏鑵诲張寮曞彂鍏遍福",
+ "鍍忚眴鐡e奖璇勫墽閫忥紝鎯呯华娓愯繘",
+ "鍍忔湅鍙嬪湀鐢熸椿闅忕瑪锛岀湡瀹炲張鎰熸��",
+ "鍍忓皬绾功鏃ュ父鎰熸偀锛屾俯鏆栨不鎰�",
+ "鍍忓井淇″叕浼楀彿娣卞害鍒嗘瀽锛屾暟鎹笌鎯呮劅缁撳悎",
+ "鍍忓井鍗氱垎鏂欏笘锛屽姴鐖嗙粏鑺�",
+ "鍍忔姈闊虫儏鎰熺煭鍓э紝鑺傚绱у噾",
+ "鍍忕煡涔庡尶鍚嶆儏鎰熷挩璇紝缁嗚嚧鍒嗘瀽",
+ "鍍忕洿鎾棿鎯呮劅鍚愭Ы锛岃閫熷揩",
+ "鍍忓皬绾功鐭瘒鏁呬簨锛屾儏缁祿鐑�",
+ "鍍忓井鍗氭晠浜嬩細锛屽弽杞绻�",
+ "鍍忕煡涔庡績鐞嗗瑙嗚锛屽墫鏋愭繁鍒�",
+ "鍍忓井淇″叕浼楀彿濠氬Щ鎯呮劅鎸囧崡",
+ "鍍忓井鍗氳揪浜虹敓娲绘彮绉�",
+ "鍍忔姈闊崇垎娆剧煭鍓ц剼鏈�",
+ "鍍忕煡涔庣儹鐐硅璁哄笘",
+ "鍍忓皬绾功鐪熸儏鍛婄櫧",
+ "鍍忚眴鐡g敤鎴锋棩璁帮紝鎰熷彈缁嗚吇",
+ "鍍忓井鍗氭儏鎰熻褰曪紝绠�娲佺妧鍒�",
+ "鍍忓井淇″叕浼楀彿鎯呮劅璋冪爺鎶ュ憡",
+ "鍍忕煡涔庡尶鍚嶇垎鏂欙紝鐪熷疄闇囨捈",
+ "鍍忕洿鎾棿浜掑姩闂瓟锛屽菇榛樼妧鍒�",
+ "鍍忓皬绾功杈句汉缁忛獙鍒嗕韩",
+ "鍍忓井鍗氱儹闂ㄨ瘎璁哄悎闆�",
+ "鍍忕煡涔庢繁搴﹀垎鏋愭枃",
+ "鍍忓井淇″叕浼楀彿濠氬Щ鍥版儜闆嗛敠",
+ "鍍忔姈闊冲墽鎯呭弽杞悎闆�",
+ "鍍忓井鍗氭晠浜嬬被鐭枃",
+ "鍍忕煡涔庣粡鍏告儏鎰熸渚�",
+ "鍍忓皬绾功鐪熷疄鎰熸偀",
+ "鍍忚眴鐡gぞ鍖哄悙妲�",
+ "鍍忓井鍗氳揪浜鸿棰戣В璇�",
+ "鍍忓井淇″叕浼楀彿鐢熸椿鏉傝皥",
+ "鍍忕煡涔庡尶鍚嶆棩璁�",
+ "鍍忕洿鎾棿绮変笣浜掑姩鏂�",
+ "鍍忓皬绾功鎯呮劅纰庣墖",
+ "鍍忓井鍗氱儹鐐硅拷韪�",
+ "鍍忕煡涔庡績鐞嗗鐖嗘枡",
+ "鍍忓井淇″叕浼楀彿濠氬Щ鏁欒",
+ "鍍忔姈闊虫儏鎰熻杩�",
+ "鍍忓井鍗氭瀛愭墜鏁呬簨",
+ "鍍忕煡涔庨棶绛旂儹鐐�",
+ "鍍忓皬绾功鏁呬簨鍚堥泦",
+ "鍍忚眴鐡g敤鎴峰悙妲�",
+ "鍍忓井鍗氳揪浜烘儏鎰熷垎鏋�",
+ "鍍忓井淇″叕浼楀彿鎯呮劅瑙h",
+ "鍍忕煡涔庢儏鎰熺粡楠屽垎浜�",
+ "鍍忕洿鎾棿瑙備紬鐖嗘枡",
+ "鍍忓皬绾功鐪熷疄鏁呬簨",
+ "鍍忓井鍗氱儹鐐硅瘎璁�",
+ "鍍忕煡涔庢儏鎰熸棩璁�",
+ "鍍忓井淇″叕浼楀彿濠氬Щ寤鸿",
+ "鍍忔姈闊虫晠浜嬮泦閿�",
+ "鍍忓井鍗氭晠浜嬭В璇�",
+ "鍍忕煡涔庢儏鎰熺儹闂ㄥ笘瀛�"
+ ],
+ "level": [
+ "鐙楄绋嬪害鎷夋弧锛岃兘鎷�100闆嗗搴鸡鐞嗗墽",
+ "姣忔閮借鏈夊弽杞紝瑙備紬鐪嬪畬鍙細璇达細鐪熺殑鍋囩殑锛�",
+ "鍓ф儏瑕佽浜衡�滅瑧涓甫楠傗�濓紝瓒婄璋辫秺鐪熷疄",
+ "鍓嶆湡娓╂儏锛屽悗鏈熺垎鐐革紝缁撳熬鍙嶈浆鍐嶅弽杞�",
+ "姣忎竴鑺傞兘瑕佸儚鏈嬪弸鍦堢垎鏂欙細涓嶄俊浣犺兘鐪嬪畬涓嶆埅鍥�",
+ "鍐烽潤鍙欒堪+鐐歌鍓ф儏锛屽儚浜插巻鑰呴粯榛樿杩版儕澶╁唴骞�",
+ "鏃㈢湡瀹炲張鐙楄锛岃浜哄垎涓嶆竻浣犳槸鍦ㄨ鏁呬簨杩樻槸璁板綍鍛借繍",
+ "鎶撲綇鈥滀汉鎬х殑灏忔伓鈥濓紝璁╀汉蹇嶄笉浣忚浆鍙戣鈥滆繖澶儚鎴戝悓浜嬩簡鈥�",
+ "鍓ф儏寮犲姏鍗佽冻锛岃兘璁╀汉涓�鍙f皵鐪嬪畬鍑屾櫒涓夌偣",
+ "缁嗚妭鎯婁汉锛屽弽杞眰鍑轰笉绌凤紝鏍规湰鍋滀笉涓嬫潵",
+ "鍏呮弧鑱屽満涓庡搴弻绾跨籂钁涳紝灞傚眰韪╃偣鐥涚偣",
+ "鍚勭鎰忔兂涓嶅埌鐨勨�滈粦澶╅箙鈥濅簨浠朵笉鏂鏉�",
+ "鎯呯华娉㈠姩鏋佸ぇ锛屼粠娆㈠枩鍒版劋鎬掔灛闂村垏鎹�",
+ "鏁呬簨浜虹墿鏃㈠彲鎭ㄥ張鍙�滐紝瑙備紬鎯呮劅闅句互鍓茶垗",
+ "鍙拌瘝鐘�鍒╋紝娈垫鐖嗙偢锛屽紩鍙戞繁搴﹁璁�",
+ "鎮康鐜幆鐩告墸锛屾瘡涓粏鑺傞兘钘忕巹鏈�",
+ "鍙嶈浆鍔涘害澶у埌璁╀汉鎬�鐤戜汉鐢�",
+ "鐙楄鍗寸湡瀹烇紝鍫瘮鐜板疄鐢熸椿娴撶缉鐗�",
+ "铏愬績鍓ф儏涓庡枩鍓у厓绱犲畬缇庤瀺鍚堬紝绗戜腑甯︽唱",
+ "鑺傚绱у噾锛屾儏缁捣浼忓儚鍧愯繃灞辫溅",
+ "鐭涚浘婵�鐑堬紝鍐茬獊鐏姳鍥涙簠",
+ "甯︾潃娴撴祿鐨勪汉鎯呭懗锛屽張鐙犺荆鑷虫瀬",
+ "浜虹墿鍒荤敾缁嗚吇锛岀湡瀹炴劅鐖嗘",
+ "鍓ф儏鍒囨崲鑷劧锛岃穼瀹曡捣浼忎笉鍋滄瓏",
+ "璁╀汉杈瑰悙妲借竟涓婂ご锛屾牴鏈仠涓嶄笅鏉�",
+ "璁╀汉蹇嶄笉浣忓彂鏈嬪弸鍦堝悙妲藉拰杞彂",
+ "姣忎釜瑙掕壊閮芥湁鑷繁鐨勯殣绉樺拰鏁呬簨",
+ "鍐茬獊鍗囩骇锛屼豢浣涢殢鏃惰兘鐐歌",
+ "姣忔瀵硅瘽閮芥殫钘忎紡绗�",
+ "楂樿兘鍙嶈浆鎺ヤ簩杩炰笁锛岃浜哄ぇ鍛艰繃鐦�",
+ "缁嗚妭閾哄灚涓ュ瘑锛屽墽鎯呭彂灞曞嚭浜烘剰鏂�",
+ "缁撳熬澶у弽杞紝褰诲簳棰犺涔嬪墠璁ょ煡",
+ "鍓ф儏寮犲姏寮猴紝鎶撲汉鐪肩悆涓嶆澗鎵�",
+ "琛ㄧ幇浜烘�ч槾鏆楅潰锛屾埑涓浼楃棝鐐�",
+ "鏃㈡畫閰峰張娓╂殩锛屽厖婊′汉鐢熺櫨鎬�",
+ "鍓ф儏璺屽畷璧蜂紡锛屽甫鏉ユ儏鎰熼珮娼�",
+ "鏁呬簨鍐呭澶氱嚎浜ょ粐锛屽眰灞傞�掕繘",
+ "绮捐嚧鍙堝埡婵�锛屼护浜烘棤娉曢噴鍗�",
+ "鍙h鍖栬〃杈撅紝澧炲己浠e叆鎰�",
+ "鍓ф儏鐢熷姩锛屼豢浣涜韩涓村叾澧�",
+ "鍙嶈浆璁捐宸у锛屼护浜哄ぇ寮�鐪肩晫",
+ "缁嗚妭涓板瘜锛屾瀯寤虹湡瀹炴劅寮虹儓鐨勫満鏅�",
+ "鍙欎簨鑺傚蹇紝绱ф姄瑙備紬娉ㄦ剰鍔�",
+ "鏁呬簨閫昏緫绱у瘑锛岀幆鐜浉鎵�",
+ "鍓ф儏鍏呮弧寮犲姏鍜屾垙鍓ф��",
+ "瑙掕壊鎬ф牸绔嬩綋锛屽啿绐佺湡瀹�",
+ "绱у紶鍒烘縺锛屽甫鏉ユ儏鎰熷叡楦�",
+ "浜虹墿鍔ㄦ満澶嶆潅锛屾儏鑺傝穼瀹�",
+ "璁╀汉娆茬舰涓嶈兘锛屽墽鎯呮繁鍒�",
+ "鍏呮弧鎮康涓庣垎鐐癸紝鍙嶈浆涓嶆柇",
+ "绗戜腑甯︽唱锛岃Е鍔ㄥ績鐏垫繁澶�",
+ "寮曞彂瑙備紬鍏辨儏涓庡弽鎬�",
+ "璁╀汉蹇嶄笉浣忓埛灞忚浆鍙�",
+ "鍓ф儏璺屽畷璧蜂紡锛屾姄浣忚浼楁儏缁�",
+ "鎯呰妭璁捐绮惧阀锛屽弽杞嚭浜烘剰鏂�",
+ "浠や汉鍏村涓旀劅鍔紝鎴忓墽寮犲姏鍗佽冻",
+ "浜虹墿鍐茬獊婵�鐑堬紝琛ㄧ幇鐪熷疄浜烘��",
+ "鏃㈢嫍琛�鍙堟劅浜猴紝鎯呮劅鍏呮矝",
+ "鍚稿紩鍔涘己锛岃浼楀仠涓嶄笅鏉�",
+ "鍓ф儏鑺傚鏄庡揩锛屾儏缁尝鍔ㄥぇ",
+ "缁嗚妭鎵撶(绮捐嚧锛岃惀閫犲己鐑堜唬鍏ユ劅",
+ "鍙欎簨娴佺晠锛屾儏鎰熼�掕繘鏈夊簭",
+ "琛ㄧ幇澶氶噸鎯呮劅锛屽墽鎯呬赴婊�",
+ "灞傚眰閾哄灚锛岄珮娼凯璧�",
+ "璇濋鎬у己锛屽紩鍙戠儹璁�",
+ "璁╀汉鍥炲懗鏃犵┓锛屾缃笉鑳�",
+ "鍙嶈浆璁╀汉鐩灙鍙e憜锛屽墽鎯呰穼瀹�",
+ "鐙楄鍏冪礌鍜岀幇瀹炵敓娲诲畬缇庣粨鍚�",
+ "鏁呬簨绱у噾锛岀幆鐜浉鎵�",
+ "鎯呮劅绾犵粨锛岀煕鐩炬縺鐑�",
+ "鍓ф儏涓板瘜锛岀粏鑺傜敓鍔�",
+ "璁╀汉绗戜腑甯︽唱锛屽績鎯呭鏉�",
+ "琛ㄧ幇浜烘�у急鐐癸紝鐩村嚮鐥涚偣",
+ "鍚稿紩瑙備紬娣卞害鍏虫敞",
+ "鍓ф儏閾洪檲缁嗚嚧锛屽眰娆′赴瀵�",
+ "鎯呰妭璁剧疆宸у锛屽弽杞笉鏂�",
+ "璁╀汉娆茬舰涓嶈兘鐨勬儏鎰熸媺鎵�",
+ "鐙楄绋嬪害濯茬編椤剁骇鐢佃鍓�",
+ "鏁呬簨鍏呮弧寮犲姏涓庢偓蹇�",
+ "鍒荤敾缁嗚吇锛屼汉鐗╀赴瀵�",
+ "鍐茬獊婵�鐑堬紝鍙嶈浆棰戠箒",
+ "琛ㄧ幇瀹跺涵浼︾悊鐨勫鏉傛��",
+ "鎯呮劅鐪熸寶锛屾瀬鍏锋劅鏌撳姏",
+ "绱у噾鍓ф儏锛屾姄浜虹溂鐞�",
+ "鑺傚鏄庡揩锛屾儏缁捣浼忓ぇ",
+ "鏋勬�濆阀濡欙紝鍏呮弧鎯婂枩",
+ "寮曞彂寮虹儓鎯呮劅鍏遍福",
+ "浠や汉蹇冭烦鍔犻�熺殑鍓ф儏鍙戝睍",
+ "鍙欎簨鎵嬫硶澶氭牱锛屽眰娆″垎鏄�",
+ "鎯呮劅琛ㄨ揪鐪熷垏锛屽姩浜哄績寮�",
+ "鍙嶈浆璁捐绮惧僵缁濅鸡",
+ "鍓ф儏缁嗚妭鐪熷疄涓旀姄浜�",
+ "鍏呮弧鎴忓墽寮犲姏涓庢儏鎰熺籂钁�",
+ "鏁呬簨鍐呭涓板瘜澶氬僵",
+ "浠や汉鎰熷悓韬彈锛岄毦浠ュ繕鎬�",
+ "璁╀汉蹇嶄笉浣忎竴鐪嬪啀鐪�",
+ "鐙楄鍏冪礌涓庣幇瀹炲啿绐佷氦缁�",
+ "鎯呰妭璺屽畷璧蜂紡锛屽紩鍙戣璁�",
+ "鎯呮劅鍒荤敾娣卞埢锛屼护浜哄叡楦�",
+ "鍓ф儏绱у噾锛岃妭濂忔妸鎺х簿鍑�",
+ "浜虹墿褰㈣薄涓版弧锛屽啿绐佺湡瀹�",
+ "浠や汉闇囨捈鐨勫墽鎯呭弽杞�",
+ "鐙楄鍙堢湡瀹烇紝浠や汉涓婄樉",
+ "鍓ф儏閾哄灚缁嗚吇锛岀粨灞�绮惧僵",
+ "鎯呮劅鎻忓啓缁嗚嚧锛屾劅鏌撳姏寮�",
+ "璁╀汉娆茬舰涓嶈兘锛岃繛鐪嬩笉鑸�",
+ "鍐茬獊婵�鐑堬紝鎯呯华寮犳壃",
+ "鍙欒堪鐢熷姩锛屽紩鍙戝叡鎯�"
+ ]
+}
\ No newline at end of file
diff --git a/auto_media_publisher/config/conf_docx_generate_complex.py b/auto_media_publisher/config/conf_docx_generate_complex.py
new file mode 100644
index 0000000..fd64a1d
--- /dev/null
+++ b/auto_media_publisher/config/conf_docx_generate_complex.py
@@ -0,0 +1,2109 @@
+STORY_PROMPT_PARAMETERS_COMPLEX = {
+ "涓昏鑱屼笟": [
+ "灏忓鑰佸笀",
+ "澶栫鍖荤敓",
+ "绂诲寰嬪笀",
+ "鐭鐗欏尰",
+ "楂樹腑璇枃鑰佸笀",
+ "绀惧尯淇濆畨",
+ "鎶曡祫椤鹃棶",
+ "鏁戞姢杞﹀徃鏈�",
+ "褰辫缂栧墽",
+ "鍖荤編鍜ㄨ甯�",
+ "鍋ヨ韩鏁欑粌",
+ "鏌怣CN绛剧害涓绘挱",
+ "蹇冪悊鍜ㄨ甯�",
+ "骞煎効鍥洯闀�",
+ "鍦颁骇涓粙",
+ "瀹舵斂鍏徃鑰佹澘",
+ "缃戠害杞﹀徃鏈�",
+ "鐢靛彴涓绘寔浜�",
+ "鑱屼笟浼村",
+ "鍓ф湰鏉�涓绘寔浜�",
+ "瀹舵暀鍚嶅笀",
+ "楂樿�冪姸鍏冭甯�",
+ "绉佷汉渚︽帰",
+ "鐞嗚储鍗氫富",
+ "浜屾墜杞﹁穿",
+ "澶滃満缁忕悊",
+ "鍏叧鍏徃杩愯惀",
+ "鍗犳槦甯�",
+ "鎴垮湴浜у紑鍙戝晢鍗冮噾",
+ "鑷獟浣撶嫍琛�鍐欐墜",
+ "鍓ф儏鐭墽瀵兼紨",
+ "娉曞尰",
+ "甯傜骇鍏姟鍛�",
+ "缃戞枃鍐欐墜",
+ "鍔ㄦ极閰嶉煶婕斿憳",
+ "蹇�掑憳",
+ "瀹変繚闃熼暱",
+ "绉佺珛瀛︽牎鑰佸笀",
+ "瑁佺紳",
+ "鍔ㄧ墿鍖婚櫌瀹炰範鐢�",
+ "鍐滄潙濡囪仈涓讳换",
+ "濠氱ぜ绛栧垝甯�",
+ "鐏攨搴楀悎浼欎汉",
+ "鍖婚櫌鎶ょ悊閮ㄤ富浠�",
+ "杩為攣渚垮埄搴楄�佹澘",
+ "鏈嶈鍘傚伐浜�",
+ "蹇搴楁墦宸ヤ汉",
+ "杞欢娴嬭瘯宸ョ▼甯�",
+ "鍓嶅彴鎺ュ緟",
+ "浼氳鍔╃悊",
+ "鎴夸骇涓绘挱",
+ "鎯呮劅璋冭В甯�",
+ "缃戠粶鎺ㄧ悊up涓�",
+ "鐩楀棰樻潗灏忚浣滆��",
+ "绉佷汉鍘ㄥ笀",
+ "鐢峰+鐞嗗彂甯�",
+ "鍎跨鏃╂暀椤鹃棶",
+ "鐣欏鍜ㄨ涓粙",
+ "涓撹亴淇濆",
+ "鏈堝珎",
+ "鐑樼剻宸ヤ綔瀹ゅ悎浼欎汉",
+ "娴峰綊鍒涗笟鑰�",
+ "鍎跨鍖荤敓",
+ "鍔冲姩浠茶涓撳憳",
+ "鍐涗汉杞笟骞查儴",
+ "绮捐璁捐甯�",
+ "瀹犵墿鎽勫奖甯�",
+ "钀ラ攢璁插笀",
+ "鎯呰叮鐢ㄥ搧搴楀簵闀�",
+ "褰辫鎶曡祫浜�",
+ "鏍″洯绠$悊鍛�",
+ "绉佽惀璇婃墍闄㈤暱",
+ "褰╃ぜ璋堝垽椤鹃棶",
+ "涓勾绂诲鐢疯嚜濯掍綋浜�",
+ "鏌愰�夌鑺傜洰鐨勬窐姹伴�夋墜",
+ "鏌愮煡鍚嶄紒涓氬叕鍏�",
+ "璞溅淇悊鎶�甯�",
+ "缃戠粶濂充富鎾粡绾汉",
+ "鍐呰。鍝佺墝浠g悊鍟�",
+ "濂冲瓙鍋ヨ韩鎴垮垱濮嬩汉",
+ "鑼惰壓甯�",
+ "绂诲紓鍐嶅瀹跺涵璁插笀",
+ "涔℃潙浠h鑰佸笀",
+ "鍩庡競鏀归�犺璁″笀",
+ "灏忓尯涓氬浼氫富浠�",
+ "灏忓瀷鏈嶈杩為攣鑰佹澘濞�",
+ "鐔熼鎽婃憡涓�",
+ "鎵撳亣缁存潈寰嬪笀",
+ "楂樼濠氫粙鎵�鍒涘浜�",
+ "璺ㄥ鐢靛晢鍗栧",
+ "娴锋窐浠h喘杈句汉",
+ "绂诲鍗忓晢甯�",
+ "涔℃潙鏃呮父椤圭洰鍙戣捣浜�",
+ "鍐滄潙蹇墜涓绘挱",
+ "涓夎儙濡堝鍗氫富",
+ "鎯呯华绠$悊璁插笀",
+ "鐙楃嫍璁粌甯�",
+ "灏戝勾瀹�佸笀",
+ "绀剧兢瑁傚彉鎿嶇洏鎵�",
+ "绉佺珛瀛︽牎鎶曡祫浜�",
+ "璧勬湰鍏徃绉樹功",
+ "娓告垙宸ヤ綔瀹よ�佹澘",
+ "淇濆仴鍝侀攢鍞【闂�",
+ "鎯呬荆鏃呮媿鎽勫奖甯�",
+ "鍐滄潙鍒涗笟闈掑勾",
+ "鑴卞彛绉�婕斿憳",
+ "瀹枟灏忚鍐欐墜",
+ "钀ュ吇甯�",
+ "楂樼鑲插効瀚�",
+ "楠ㄧ涓讳换",
+ "鐝犲疂搴楄�佹澘",
+ "蹇墜璇綍鍗氫富",
+ "鏈湴濠氭亱绾㈠",
+ "鐧戒簨涓绘寔浜�",
+ "绉佸嫙鍩洪噾椤鹃棶",
+ "绀惧尯鐢靛晢鍥㈤暱",
+ "AI鎹㈣劯瑙嗛鍓緫甯�",
+ "鎶栭煶鍙樿杈句汉",
+ "鎯呮劅淇鏁欑粌",
+ "椁愰ギ杩為攣鍝佺墝COO",
+ "琛楀ご琛ㄦ紨鑹轰汉",
+ "涔℃潙姘戝鑰佹澘",
+ "绉佺珛鍖婚櫌钀ラ攢涓讳换",
+ "浼經绯诲コ浼佷笟瀹�",
+ "绂诲娆$殑濠氭亱瀵煎笀",
+ "楂樹腑蹇冪悊杈呭鑰佸笀",
+ "瀹跺涵鏆村姏骞查绀惧伐",
+ "鏁欏煿鏈烘瀯鍒涘浜�",
+ "鐩存挱鐢靛晢閫夊搧甯�",
+ "濂冲洟閫�褰规垚鍛�",
+ "鎯呬荆浜掓挄鑺傜洰鍢夊",
+ "閰掑簵澶滅彮鍓嶅彴",
+ "鐢滃搧搴楀姞鐩熷晢",
+ "缃戠粶杩藉�轰汉鍛�",
+ "鐑偣璇濋灏忕紪",
+ "浜岃儙濂剁埜鑲插効鍗氫富",
+ "鎬皥鏁呬簨闊抽涓绘挱",
+ "鎶ュ鍨嬫秷璐瑰垎鏋愬笀",
+ "鍜栧暋搴楃嫭绔嬪簵涓�",
+ "绉佷汉璁㈠埗濠氱罕璁捐甯�",
+ "濠氬鎯呭挩璇㈤【闂�",
+ "绂诲鍐烽潤鏈熺爺绌惰��",
+ "寰俊鐩镐翰缇ょ兢涓�",
+ "瀹跺涵鍏崇郴涓撳",
+ "缃戠粶鏆村姏鍙楀鑰呰甯�",
+ "缃戠粶PUA鎻鑰�",
+ "涓勾鍒涗笟澶辫触鑰�",
+ "鐩戠嫳鐙辫",
+ "鐩戠嫳鏈嶅垜褰掓潵鑰�",
+ "鏌愮渷鍙扮紪瀵�",
+ "鏁欒緟鍥句功缂栬緫",
+ "姣嶅┐骞冲彴鍐呭杩愯惀",
+ "璺ㄥ浗濠氬Щ鏈嶅姟鏈烘瀯椤鹃棶",
+ "浠e啓鎯呬功鍐欐墜",
+ "楂橀搧鍒楄溅鍛�",
+ "濂冲洟缁冧範鐢熸瘝浜�",
+ "褰╄櫣瀹跺涵鎴愬憳",
+ "鏃犱笟鑷敱浜�",
+ "鏌愬搴欏眳澹�",
+ "绉佸瘑鏃ヨ娉勯湶鑰�",
+ "鍎跨鎯呯华璋冭В蹇楁効鑰�",
+ "鏌愭潙鏀功涔嬪瓙",
+ "鍊哄姟涓粙鍏徃杩愯惀",
+ "澶ч緞鏈鐢峰叕鍔″憳",
+ "鍥戒紒璋冨矖浜哄憳",
+ "涓勾绂诲鍐嶅ǘ瀵硅薄",
+ "鐩镐翰骞冲彴閲戠墝鐗电嚎浜�",
+ "瀹跺涵濠氬Щ浠茶璋冭В鍛�",
+ "鎯呬荆鍏崇郴鍗辨満鍒嗘瀽甯�",
+ "闀挎湡澶栨淳鐨勫伐绋嬪笀",
+ "鍏徃骞翠細绛栧垝浜�",
+ "濠嗗璋冭В鍏徃鍒涘浜�",
+ "鐩存挱MCN鍝佺墝鏂瑰鎺ヤ汉",
+ "鐭墽IP瀛靛寲鎬荤洃",
+ "绉熸埧涓粙闂ㄥ簵搴楅暱",
+ "浜屾墜濂緢鍝佸洖鏀跺憳",
+ "鏌愮煡鍚嶅ぇ瀛﹂鍫傚憳宸�",
+ "寮傚湴鎭嬩笓灞炲啓淇″啓鎵�",
+ "濠氬悗璐骇鍒嗗壊椤鹃棶",
+ "缃戠粶濠氱罕鎽勫奖淇浘甯�",
+ "鐖辨儏鍚堢害鍜ㄨ甯�",
+ "濠氬ЩAA鍒跺�″鑰�",
+ "涓勾鑱屽満杩峰け鑰�",
+ "绂诲鍐烽潤鏈熷績鐞嗙爺绌跺憳",
+ "缃戞毚涓炬姤蹇楁効鑰�",
+ "鏌愬幙鐢佃鍙板コ涓绘寔",
+ "缃戞亱鍙嶈瘓蹇楁効鑰�",
+ "绉樺瘑鎯呬汉鍩硅璁插笀",
+ "鎯呮劅鐢靛彴骞曞悗閰嶉煶",
+ "浜插瓙缁艰壓绛栧垝浜�",
+ "鍏荤敓鐩存挱闂磋瘽鏈富鎾�",
+ "鎯呮劅鏁呬簨蹇墜鐢蜂富",
+ "鍚垫灦鐜嬪皬绾功鐖嗘浣滆��",
+ "鐙楄瀹跺涵棰樻潗鐭墽鍓緫鍛�",
+ "鈥滃濡囨垬闃熲�濈兢涓�",
+ "澶璐㈠姟绠$悊甯�",
+ "鍚屽煄鎭嬬埍鑴卞崟鏁欑粌",
+ "鍓嶇綉绾㈢幇钀介瓌涓勾鐢�",
+ "绉佸澶辫触鎯呮劅澶嶇洏甯�",
+ "闅愯棌韬唤鐨勮豹闂ㄧ户鎵夸汉"
+ ],
+ "涓昏鎬у埆": [
+ "鐢�",
+ "濂�",
+ "浼鎴愬紓鎬ц韩浠�",
+ "璺ㄦ�у埆鑰�",
+ "鎬у埆妯$硦锛堟梺浜烘棤娉曞垽鏂級",
+ "闈炰簩鍏冩�у埆",
+ "鍙岄噸浜烘牸锛堜袱绉嶆�у埆锛�",
+ "鐏甸瓊绌胯秺瀵艰嚧鎬у埆鍙樺寲",
+ "鎬у埆浜掓崲锛堝洜鏌愮浜嬩欢鎴栭瓟娉曪級",
+ "鍘熶负鐢锋�х幇涓哄コ鎬э紙鍙樻�э級",
+ "鍘熶负濂虫�х幇涓虹敺鎬э紙鍙樻�э級",
+ "鐜板疄涓槸鐢锋�э紝铏氭嫙涓栫晫鏄コ鎬�",
+ "鐜板疄涓槸濂虫�э紝铏氭嫙涓栫晫鏄敺鎬�",
+ "澶鐏甸瓊浜掓崲",
+ "鍚屾�ф亱鐢锋��",
+ "鍚屾�ф亱濂虫��",
+ "鍙屾�ф亱涓昏",
+ "鎬у埆韬唤闅愯棌锛堝墽鎯呭悗鏈熸彮鏅擄級",
+ "浼鎴愬悓鎬ф亱浠ラ殣鐬掔湡鐩�",
+ "鍥犲墽鎯呴渶瑕佸亣瑁呮垚鍙︿竴涓�у埆"
+ ],
+ "鍦扮偣": [
+ "濠氱ぜ鐜板満",
+ "铚滄湀鏃呴",
+ "鑰佸悓瀛﹁仛浼氶鍘�",
+ "KTV 鍖呭帰",
+ "鍖婚櫌鐥呮埧",
+ "楂橀搧杞﹀帰",
+ "鍔ㄨ溅绔欏�欒溅瀹�",
+ "椋炴満缁忔祹鑸�",
+ "娴疯竟姘戝",
+ "绂诲鐧昏澶�",
+ "姘戞斂灞�闂ㄥ彛",
+ "瀹鹃鍙屼汉搴婁笂",
+ "瀹朵腑鍘ㄦ埧",
+ "瀹朵腑娴村",
+ "鏂版埧瑁呬慨鐜板満",
+ "澶滃競鎽婁綅",
+ "娣卞鍑虹杞﹀悗搴�",
+ "鍏徃鑼舵按闂�",
+ "鍗曚綅骞翠細鐜板満",
+ "澶滃簵 VIP 鍖呭帰",
+ "鍏洯闀挎",
+ "鍒濅腑鏁欏鏃у潃",
+ "瀛︽牎鎿嶅満",
+ "楂樹腑瀵濆闂ㄥ彛",
+ "澶у鍥句功棣�",
+ "鍋ヨ韩鎴跨鏁欏",
+ "绉佷汉褰遍櫌",
+ "浜ф埧闂ㄥ彛",
+ "鍓嶄换濠氱ぜ鐜板満",
+ "濠氱ぜ褰╂帓鐜板満",
+ "鍦颁笅鍋滆溅鍦�",
+ "澶╁彴鎶界儫鍖�",
+ "闃冲彴鏅掕。鍖�",
+ "鍒闇插彴",
+ "娉虫睜杈�",
+ "鎯呰叮閰掑簵",
+ "鍗曡韩鍏瘬",
+ "鐩存挱闂寸幇鍦�",
+ "鎷嶆垙鐗囧満",
+ "鏂伴椈鍙戝竷浼�",
+ "杞﹂渿涓殑杞﹀唴",
+ "娌欏彂涓�",
+ "鍦颁笅閰掑惂",
+ "婢″爞鎹㈣。闂�",
+ "鏁村鍖婚櫌",
+ "寰嬪笀浜嬪姟鎵�",
+ "璀﹀療灞�鎺ュ緟鍘�",
+ "娉曢櫌闂ㄥ彛",
+ "鐪嬪畧鎵�浼氳瀹�",
+ "闈掓梾澶氫汉闂�",
+ "澶辫仈涓夊勾鐨勬皯瀹�",
+ "楂樼濠氫粙鎵�",
+ "绂诲紓缇よ仛浼�",
+ "蹇冪悊鍜ㄨ瀹�",
+ "澧撳湴",
+ "绁鐜板満",
+ "澶滆窇鐨勫皬鍖哄皬璺�",
+ "鍏徃鑰佹澘鍔炲叕瀹�",
+ "鎽勫奖宸ヤ綔瀹�",
+ "鎯呬汉绉熶綇鐨勫叕瀵�",
+ "鍒氳淇ソ鐨勫鎴�",
+ "褰╃ぜ璋堝垽妗�",
+ "鎹夊ジ鐜板満",
+ "鍘曟墍闂ㄥ彛",
+ "褰曢煶妫�",
+ "鐩存挱PK鐜板満",
+ "楗眬鍚庣殑鍖呮埧",
+ "娓╂硥姹犱腑",
+ "琚伔鎷嶇殑閰掑簵鎴�",
+ "澶滃競鐑х儰鎽�",
+ "鐢熻偛绉戣瘖瀹�",
+ "濠氭涓績",
+ "鎵撹儙璇婃墍",
+ "蹇冪悊娌荤枟瀹�",
+ "鍌湢鍥炲繂瀹�",
+ "鑰佸绁栧眿",
+ "鏉戝彛鍏崷鍦�",
+ "楹诲皢妗屾梺",
+ "鍏荤敓棣�",
+ "鑰佸悓瀛﹀绀�",
+ "鍚屼簨鑱氶鍚庣殑灏忓贩",
+ "闅斿閭诲眳瀹�",
+ "鍓嶇敺鍙嬬殑瀹�",
+ "闂鸿湝瀹舵矙鍙戜笂",
+ "濮愬か瀹舵荡缂搁噷",
+ "棰嗗瀹跺鍘�",
+ "鍐涜鎿嶅満",
+ "澶忎护钀ヨ惀鍦�",
+ "蹇楁効鑰呮椿鍔ㄧ幇鍦�",
+ "瀵哄簷绁堢澶�",
+ "绁炲﹩搴欏悗闄�",
+ "绠楀懡鎽�",
+ "濠氱罕璇曡。闂�",
+ "鍓х粍鍖栧闂�",
+ "鏈嬪弸鍦堝埛鍒扮殑瀹氫綅",
+ "鍋ヨ韩鏁欑粌瀹胯垗",
+ "鐩存挱閫佽揣閫斾腑",
+ "濠氳溅涓�",
+ "浜ф绛夊�欏尯",
+ "楂樿�冨墠鏁欏",
+ "璺ㄥ勾澶滆澶�",
+ "鎯呬汉鑺傜嫭鑷挅鍟¢",
+ "娣卞渚垮埄搴�",
+ "鎼鐜板満",
+ "鍙屽崄涓�璐墿鐙傛澶�",
+ "鎺翰鍥炶�佸鐏溅涓�",
+ "鍐滄潙濠氱ぜ澶ф",
+ "澶у瀹胯垗妤间笅",
+ "閰掓瑙掕惤",
+ "鎯呮晫瀹堕棬鍙�",
+ "妤奸亾杞",
+ "浜叉垰瀹剁殑濠氱ぜ鍚庡彴",
+ "澶╂ˉ涓�",
+ "鎯呮劅鐢靛彴褰曢煶瀹�",
+ "骞村楗妗�",
+ "澶辨暎浜蹭汉鍥㈣仛鐜板満",
+ "绂诲鍐烽潤鏈熸渶鍚庝竴澶�",
+ "濠氬Щ鍜ㄨ鎵�",
+ "鎵褰掓潵璺笂",
+ "闇茶惀甯愮",
+ "缃戠孩鎺㈠簵閫斾腑",
+ "澶滃競鍗犲崪鎽�",
+ "澶氬勾鏈竻绌虹殑閭",
+ "鎵撳伐鍦板鑸�",
+ "澶辫釜灏戝コ鐨勬埧闂�",
+ "鎭嬬患鎷嶆憚鍦�",
+ "姘戜織鏉戜綋楠屽眿",
+ "鍑虹灞嬪鐨勭數姊噷",
+ "妤间笂閭诲眳瀹�",
+ "鍙岃優鑳庨敊璁ょ殑搴婁笂",
+ "鍋囨壆鎯呬荆鐨勮妭鐩粍",
+ "鑷┚娓歌溅绁哥幇鍦�",
+ "鏁戞姢杞︿笂",
+ "鐑悳绗竴鐨勫湴閾佸彛",
+ "澶氬勾濂藉弸濠氱ぜ鎶翰",
+ "寮傚湴鎭嬪垎鎵嬫ˉ澶�",
+ "澶栨淳椹诲鍦板嚭宸殑鍏瘬",
+ "绁绁栧厛鐨勭伀鍫嗚竟",
+ "楂樺師鏀暀鍦�",
+ "鍐滄潙鐣欏畧鍎跨瀹�",
+ "濠氫粙骞冲彴瑙侀潰鍦扮偣",
+ "娴峰鐣欏瀵勫瀹跺涵",
+ "鏂囪壓闈掑勾灏忎功搴�",
+ "璇楃ぞ鑱氫細鍦烘墍",
+ "鎵撳伐浜哄姙鍏鍘曟墍",
+ "鍓嶅か鐜颁换濠氱ぜ鐨勮钀�",
+ "琚伔鎷嶅悗鏇濆厜鐨勬憚褰辨",
+ "妤奸《鐑х儰鑱氫細",
+ "灏忓尯淇濆畨瀹�",
+ "鍑屾櫒涓夌偣鐨勫嚭绉熷眿",
+ "鎻村姪鐑嚎鍔炲叕瀹�",
+ "閫佸鍗栭�斾腑琚挒鐨勮矾鍙�",
+ "鑰冪爺鑷範瀹�",
+ "绀句氦APP绾夸笅瑙侀潰鍦�",
+ "绾夸笂鑴卞崟鐩存挱娲诲姩鐜板満",
+ "鐢靛姩杞︾淮淇偣",
+ "鍖婚櫌鎬ヨ瘖瀹�",
+ "閰掑簵璧板粖",
+ "鍒汉鐨勫鎴垮簥涓�",
+ "鎯呬荆鍚垫灦鐨勬槦宸村厠",
+ "鍒嗘墜绾康鏃ョ殑鑰佸湴鏂�",
+ "寮傚浗鏈哄満杞満鍦�",
+ "鐏溅绔欏箍鍦�",
+ "绮剧鐥呴櫌鎺㈣鍖�",
+ "鎶㈠瀛愮幇鍦�",
+ "瀛╁瓙瀹堕暱浼�",
+ "鏁欏笀鍔炲叕瀹�",
+ "鎵撳畼鍙哥殑娉曞涵璧板粖",
+ "鐩存挱鎾曢�肩殑鑼堕",
+ "鍗栦繚闄╃殑浼氬鍘�",
+ "鑰佸勾鐩镐翰瑙�",
+ "搴熷純娓镐箰鍥�",
+ "榛勬槒鑰佽灏忓贩",
+ "鍘曟墍鍙戠幇绉樺瘑褰曢煶绗�",
+ "骞煎効鍥帴閫佸彛",
+ "瀛╁瓙浜插瓙閴村畾涓績",
+ "浠e瓡鏈烘瀯",
+ "涓粙鍏徃浼氳瀹�",
+ "灏忔梾棣嗛��鎴垮彛",
+ "鍙ら晣鏃呮媿鍦�",
+ "璇峰懡鐨勬潙骞查儴鍔炲叕瀹�",
+ "蹇�掑爢鏀剧殑椹跨珯",
+ "楂樿�冨悗鑱氶楗簵",
+ "绂诲鍐烽潤鏈熻绀洪",
+ "闀跨鍏瘬",
+ "闊充箰鑺傚笎绡峰尯",
+ "鍦伴搧鎷ユ尋杞﹀帰",
+ "鍏徃鍑哄樊璺笂",
+ "鏈哄満璐靛鍘�",
+ "浜岃儙鐢熻偛璁″垝璁ㄨ鍦�",
+ "鑲插効璁插骇",
+ "鐪嬭豹瀹呯殑鍞ゼ澶�",
+ "瑁呬慨閫夋潗甯傚満",
+ "鑰佺牬灏忔埧瀛愬眿椤�",
+ "鎺㈢洃鐨勬帰璁垮尯"
+ ],
+ "鍓嶄换韬唤": [
+ "鍒濇亱",
+ "闈掓绔归┈",
+ "澶у鍚屽",
+ "鍓嶅か",
+ "鍓嶅",
+ "鏇剧粡鐨勮�佹澘",
+ "鍓嶅鍙�",
+ "楂樹腑鏆楁亱瀵硅薄",
+ "鍓嶄换涓婂徃",
+ "绂诲甯﹀▋鐨勫墠浠�",
+ "鍐涗汉鍑鸿韩鐨勫墠浠�",
+ "鏇炬晳杩囧ス鍛界殑浜�",
+ "鍓嶇敺鍙嬬殑鍏勫紵",
+ "鍓嶅コ鍙嬬殑闂鸿湝",
+ "濠氱ぜ涓婇�冭窇鐨勬柊閮�",
+ "濠氱ぜ涓婇�冭窇鐨勬柊濞�",
+ "鏈澶紙姣佺害锛�",
+ "鏇捐濠氫絾鏈粨濠氱殑瀵硅薄",
+ "鍑哄浗鍚庨煶璁叏鏃犵殑浜�",
+ "鏇剧粡鐨勫疄涔犲甯�",
+ "鏀暀鏃惰璇嗙殑鎭嬩汉",
+ "澶у巶绋嬪簭鍛樺墠浠�",
+ "鏂囪壓闈掑勾鍓嶄换",
+ "鎽囨粴涔愰槦鍚変粬鎵�",
+ "涓绘挱鍓嶄换",
+ "缃戠孩鍓嶄换",
+ "鑴卞彛绉�婕斿憳",
+ "鍋ヨ韩鏁欑粌",
+ "鍜栧暋甯�",
+ "绾硅韩甯�",
+ "绾硅韩搴楄�佹澘",
+ "鎽勫奖甯�",
+ "鍓嶄换鏄釜鏈夐挶鐨勪腑骞翠汉",
+ "娓g敺浠h〃浜虹墿",
+ "娴风帇",
+ "缁胯尪濠婂墠浠�",
+ "PUA涓撳",
+ "绂昏繃涓夋濠氱殑鍓嶄换",
+ "濠氭墭",
+ "楂樺喎鍖荤敓",
+ "娓╂煍鐨勫績鐞嗗挩璇㈠笀",
+ "绉佹暀鍓嶄换",
+ "鑹鸿�冭�佸笀",
+ "琛ㄦ紨绯诲闀�",
+ "璀﹀療鍓嶄换",
+ "妫�瀵熷畼鍓嶄换",
+ "鑸炶��",
+ "璧涜溅鎵�",
+ "椋炶鍛�",
+ "绌哄鍓嶄换",
+ "閾惰鐞嗚储椤鹃棶",
+ "琚埗姣嶅珜寮冪殑绌峰皬瀛�",
+ "瀵屼簩浠e墠浠�",
+ "娴峰綊纭曞+",
+ "娴峰綊楠楀瓙",
+ "澶栦紒楂樼",
+ "閰掑惂椹诲敱",
+ "娴佹氮姝屾墜",
+ "杩芥ⅵ澶辫触鑰�",
+ "鐭棰戝垱涓氳��",
+ "鎼炲井鍟嗙殑鍓嶄换",
+ "浠ヤ负鏄櫧椹帇瀛愮殑浜�",
+ "绮剧鎿嶆帶澶у笀",
+ "寮傚湴鎭嬪垎鎵嬬殑鍓嶄换",
+ "鍋囪鍗曡韩鐨勫凡濠氱敺",
+ "闅愯棌瀛愬コ韬唤鐨勫墠浠�",
+ "鏃╂亱瀵硅薄",
+ "缃戞亱濂旂幇澶辫触鐨勫墠浠�",
+ "绾︾偖璁よ瘑鐨�",
+ "鍦ㄥ墽缁勮璇嗙殑鍓嶄换",
+ "鏄庢槦鍔╃悊鍓嶄换",
+ "鍗佸叓绾垮皬婕斿憳",
+ "鎭嬬埍鑺傜洰涓婄殑鍓嶄换",
+ "鍓嶇敺鍙嬬殑濂冲弸",
+ "鍓嶅コ鍙嬬殑鐢峰弸",
+ "鏇惧嚭鍗栦富瑙掔殑浜�",
+ "濠氬唴鍑鸿建瀵硅薄",
+ "缁撳褰撳ぉ鍔堣吙瀵硅薄",
+ "璇堥獥鐘�",
+ "鍓嶄换鏄礋鍊虹疮绱殑鍊熻捶浜�",
+ "娆犺祵鍊鸿窇璺殑浜�",
+ "鐖舵瘝瀹夋帓鐨勭浉浜插璞�",
+ "涓轰簡绉绘皯鑰屾亱鐖辩殑浜�",
+ "寮傚浗鎭嬪け璐ュ璞�",
+ "鏁村澶辫触鍚庢秷澶辩殑鍓嶄换",
+ "鎶涘純瀛╁瓙鐨勫墠浠�",
+ "瀛╁瓙鐨勪翰鐢熺埗/姣�",
+ "閰掗",
+ "姣掑搧鍓嶇鑰�",
+ "浠庣洃鐙卞嚭鏉ョ殑鍓嶄换",
+ "鍋囧拰灏�",
+ "浼绌蜂汉鐨勫瘜璞�",
+ "浼瀵屼汉鐨勭┓浜�",
+ "涓哄浠囨帴杩戜富瑙掔殑浜�",
+ "鏇胯韩鎭嬩汉",
+ "鍥犱负璧岀害鍦ㄤ竴璧风殑鍓嶄换",
+ "鎯呬汉韬唤鐨勫墠浠�",
+ "琚寘鍏昏繃鐨勪汉",
+ "鏇剧粡鍖呭吇杩囦富瑙掔殑浜�",
+ "鍓嶄换鏄翰鎴氫粙缁嶇殑",
+ "鍚嶆牎楂樻潗鐢�",
+ "涔︽硶瀹�",
+ "寮�鑼堕鐨勫墠浠�",
+ "寮�鐞嗗彂搴楃殑鍓嶄换",
+ "鏂囩帺鍦堢殑鑰佹睙婀�",
+ "涓昏瀛︾敓鏃朵唬鐨勫甯�",
+ "鏇剧粡鍐欐儏涔︾殑浜�",
+ "鍥犱负瀛﹂湼鑰屽磭鎷滅殑鍓嶄换",
+ "琚福鍚庤繕蹇靛康涓嶅繕鐨勫墠浠�",
+ "鍋囪澶卞繂鍥炴潵鐨勫墠浠�",
+ "鍥炲浗缁ф壙瀹朵骇鐨勫墠浠�",
+ "鍒涗笟澶辫触璺戣矾鐨勫墠浠�",
+ "瀹跺涵鏆村姏鏂藉鑰�",
+ "鎭嬬埍鑴戝墠浠�",
+ "鍙岄噸浜烘牸鑰�",
+ "鍦ㄥ搴欓噷閲嶉亣鐨勫墠浠�",
+ "鏇惧湪ICU鎺㈢梾鐩歌瘑鐨勫墠浠�",
+ "闈掑皯骞村彌閫嗘湡璁よ瘑鐨勫墠浠�",
+ "鍙傚姞蹇楁効娲诲姩鏃惰璇嗙殑",
+ "鍘绘敮鏁欎埂鏉戦亣鍒扮殑鍓嶄换",
+ "鏇炬偅鎶戦儊鐥囩殑鍓嶄换",
+ "绮剧鐥呭悍澶嶈��",
+ "蹇冪悊鎺у埗鐙�",
+ "鎷夸富瑙掑綋瀹為獙瀵硅薄鐨勫績鐞嗗瀹�",
+ "鍐欏皬璇村彇鏉愮殑鍓嶄换",
+ "鍋锋媿涓昏鐨勮窡韪媯",
+ "鏇剧粦鏋惰繃涓昏鐨勫墠浠�",
+ "璇曞浘鍚堣皨澶嶄粐鐨勪汉",
+ "涓昏鏁戝懡鎭╀汉鐨勫悗浠�",
+ "涓昏鏇炬姏寮冭繃鐨勪汉",
+ "鏇垮厔/濮愯拷姹備富瑙掔殑浜�",
+ "涓昏鍘熸湰瑕侀鍏荤殑瀛╁瓙鐨勭埗浜�",
+ "鏇剧粡鐨勮垶浼�",
+ "鏇剧粡鐨勫悎绉熷鍙�",
+ "鍏辩敤涓�涓偖绠辫璇嗙殑",
+ "绗斿弸鍓嶄换",
+ "鍖垮悕璁哄潧缃戝弸",
+ "绉熸埧琚潙鍚庤璇嗙殑鎴夸笢",
+ "闅斿閭诲眳",
+ "鎴夸骇绾犵悍瀵规墜",
+ "鎵撳畼鍙哥粨璇嗙殑鍓嶄换",
+ "鍓嶄换鏄緥甯�",
+ "鏇句负涓昏椤剁姜鐨勪汉",
+ "璇堥獥鍚堜紮浜哄彉鎭嬩汉",
+ "涓昏鐨勫績鐞嗗尰鐢�",
+ "涓昏鐨勫紵寮�/濮愬鐨勫ソ鍙�",
+ "鍚屾�у墠浠�",
+ "鍙樻�у墠浠�",
+ "涓昏鏇句激瀹宠繃鐨勫墠浠�",
+ "鍑哄浗鍚庡啀鍥炴潵鐨勪汉",
+ "楂樹腑鑰佸笀鐨勫効瀛�",
+ "鑹烘湳灞曢倐閫呯殑鍓嶄换",
+ "涔扮敾琚獥鏃惰璇嗙殑鍓嶄换",
+ "鍏卞悓鎶氬吇瀹犵墿鑰岃璇�",
+ "鏇剧粡缃戠粶鍚垫灦瀵硅薄",
+ "缇よ亰鐩歌瘑鐨勫墠浠�",
+ "璇彂绾㈠寘鍚庣粨璇嗙殑鍓嶄换",
+ "鍏变韩鍏呯數瀹濊璇嗙殑鍓嶄换",
+ "鎵撻敊鐢佃瘽缁撹瘑鐨勫墠浠�",
+ "杞︾ジ鐩搁亣鐨勫墠浠�",
+ "澶卞繂鏈熼棿缁撹瘑鐨勫墠浠�",
+ "琚璁や负浜叉垰璁よ瘑鐨勫墠浠�",
+ "鍦ㄥ尰闄㈠悓搴婅繃鐨勭梾鍙�",
+ "鍋氬疄楠岃鍏ュ叾瀹為獙瀹ょ殑鍓嶄换",
+ "浣撴鏃堕亣鍒扮殑鍓嶄换",
+ "鎷涜仒鏃堕潰璇曞畼鍙樻亱浜�",
+ "澶у瀵煎笀鐨勫瓙濂�",
+ "鏂囪壓姹囨紨鎼。",
+ "鏀暀鏈熼棿琚浼氭槸澶",
+ "鍦伴搧鍋堕亣鐧炬鐨勫墠浠�",
+ "璇嬁蹇�掔粨璇嗙殑鍓嶄换",
+ "鍖垮悕淇℃潵寰�鐨勫墠浠�",
+ "閫氳繃 AI 鐢熸垚鐨勫墠浠�",
+ "閫氳繃鍏冨畤瀹欑浉璇嗙殑鍓嶄换",
+ "绋嬪簭涓殑铏氭嫙瑙掕壊鎭嬩汉",
+ "鍥犲疇鐗╁尰闄㈢粨璇嗙殑鍓嶄换",
+ "鍦ㄥ浠嬫墍娉ㄥ唽鍚庨噸閫�",
+ "澶辨亱閰掑惂鎾炶鐨勬棫鐖�",
+ "鏃╁勾琚揩鍒嗘墜鐨勫墠浠�",
+ "鍥犺溅绁镐抚澶辫蹇嗙殑鏃х埍",
+ "鏇剧粡鐨勪繚闀�",
+ "鏇捐涓昏鏁戣繃鐨勮惤榄勪汉",
+ "涓�璧风┛瓒婅繃鏉ョ殑鎭嬩汉",
+ "骞宠鏃剁┖鍥炴潵鐨勬棫鐖�"
+ ],
+ "鐜扮姸鎻忚堪": [
+ "澶变笟涓変釜鏈堬紝浜嬩笟璺屽叆璋峰簳",
+ "鍒氬崌鑱屼负閮ㄩ棬缁忕悊锛屽唴蹇冪┖铏氬嵈鍏夐矞浜附",
+ "闅愬涓夊勾锛屽瀛愬凡婊′袱宀�",
+ "鍗冲皢缁撳锛屽嵈鍙戠幇鑷繁鐖变笂浜嗕即濞�",
+ "鍦ㄥ浗澶栫敓娲诲叓骞达紝鍒氬垰鍥炲浗鎺翰",
+ "鑰佸叕鍑鸿建锛屽嵈涓嶆暍绂诲",
+ "澶卞繂鍚庨噸鏂伴亣瑙佸墠浠伙紝璁板繂閫愭笎鎭㈠",
+ "褰撲簡浜斿勾鍏ㄨ亴濡堝锛屽喅瀹氶噸杩旇亴鍦�",
+ "鍒氬垰鍧愬畬鐗紝鎯抽噸鏂板仛浜�",
+ "娆犱笅楂樺埄璐凤紝姣忓ぉ琚偓鍊虹數璇濊桨鐐�",
+ "鐖舵瘝閲嶇梾锛岃嚜宸辨棤鍔涙壙鎷呭尰鑽垂",
+ "鍋囩粨濠氶獥缁垮崱锛屽亣鎴忕湡鍋氬姩浜嗗績",
+ "瑁呯┓璇曟帰鐖变汉锛屽弽琚彮绌跨湡瀹炶韩浠�",
+ "浜屽鍒氭弧涓�骞达紝鐜颁换绔熸槸鍓嶄换鍏勫紵",
+ "涓�澶滄毚瀵岋紝浜叉垰寮�濮嬩笂闂ㄥ�熼挶",
+ "娴佽惤琛楀ご锛屽伓閬囧綋骞村垵鎭�",
+ "浜嬩笟鏈夋垚锛屾劅鎯呬竴鐗囩┖鐧�",
+ "鎮勬倓鏌ュ嚭鎬�瀛曪紝杩樻病鍛婅瘔瀵规柟",
+ "浣忚繘璞棬锛屽嵈瑕佽绌蜂笁骞�",
+ "瀹朵腑绐佸彂鐏伨锛屼竴鏃犳墍鏈�",
+ "鍒氭嬁鍒扮濠氬崗璁紝鍗村彂鐜板墠澶溅绁�",
+ "濠氱ぜ褰撳ぉ锛屾柊濞樼獊鐒舵秷澶�",
+ "閬亣缃戠粶鏆村姏锛岄�夋嫨绂诲紑绀句氦骞冲彴",
+ "鍒氳緸鑱屽垱涓氾紝鍚堜綔鏂硅窇璺�",
+ "褰撶孩濂虫槦锛屽嵎鍏ヤ笐闂�",
+ "瀛ゅ効鍑鸿韩锛岀獊鐒惰璞棬璁や翰",
+ "瀛╁瓙澶辫釜锛岃鏂规��鐤戞槸鑷繁骞茬殑",
+ "鐖朵翰鍘讳笘锛岀暀涓嬪�哄姟鏃犳暟",
+ "琚鏃忛┍閫愶紝涓�鏃犳墍鏈夊紑濮嬫墦鎷�",
+ "鍏徃鐮翠骇锛屾嫋娆犲憳宸ュ伐璧�",
+ "鍋囪鎯呬荆楠楁埧涓滐紝鍗磋秺闄疯秺娣�",
+ "鍒氭暣瀹屽锛岃鍓嶄换璁ゅ嚭",
+ "澶у鑲勪笟锛岀埗姣嶄竴鐩翠互涓烘瘯涓氫簡",
+ "缃戞亱琚獥锛岃楠楄储涔熻楠楀績",
+ "琚椇铚滄姠鐢峰弸锛岃繕琚弽鍜竴鍙�",
+ "杞︾ジ閱掓潵锛屽彂鐜扮┛瓒婂洖鍗佸勾鍓�",
+ "鎶曡祫澶辫触锛屽崠鎺夋埧瀛愭惉鍥炶�佸",
+ "閰掑悗澶辨帶锛岄啋鏉ュ彂鐜版��瀛�",
+ "鏈鍏堝瓡锛岀敺鏂规秷澶变笉瑙�",
+ "蹇�掑憳宸ヤ綔涓紝閫佽揣閫佸埌鍓嶄换瀹�",
+ "鐩存挱鐖嗙伀锛岀幇瀹炲嵈涓�鍦伴浮姣�",
+ "寰椾簡缁濈棁锛岄�夋嫨涓嶅憡璇夊浜�",
+ "鎶戦儊鐥囨仮澶嶄腑锛岄潰涓存柊鎰熸儏鎸戞垬",
+ "韬唤琚啋鐢紝娆犱笅涓�灞佽偂鍊�",
+ "琚叕鍙稿紑闄わ紝杩樿涓婂徃鎷夐粦",
+ "杩炵画鍔犵彮鐚濆�掞紝鍖荤敓寤鸿绔嬪嵆浼戝吇",
+ "鐖舵瘝閫煎锛岃嚜宸卞嵈鏆楁亱鍚屼簨",
+ "璐骇琚喕缁擄紝鍏ㄥ鍙兘闈犺�佸﹩鍏�",
+ "璋庣О楂樺鍘嗭紝鍗冲皢琚叕鍙告煡楠�",
+ "鏇炬槸灏忎笁锛屽浠婅浜烘彃瓒�",
+ "寮熷紵鍏ョ嫳锛屽叏瀹跺悕澹版壂鍦�",
+ "瀛╁瓙涓嶆槸浜茬敓鐨勶紝浣嗚嚜宸辫繕鐖辩潃浠�",
+ "瀵勪汉绡变笅锛屾瘡澶╅兘瑕佸皬蹇冪考缈�",
+ "濠氬Щ澶辫触锛岀嫭鑷甫濞冩墦鎷�",
+ "鑷鑰冪爺锛屽嵈涓嶆暍鍛婅瘔瀹朵汉",
+ "鎵撳浠藉伐锛岀淮鎸佸熀鏈敓娲�",
+ "鏇炬槸榛戝府鎴愬憳锛屽浠婃兂鍋氬杽浜�",
+ "缁欎汉鍋氫繚濮嗭紝鍗翠笌鐢蜂富浜烘湁鎯呮劔",
+ "鍒氬緱鐭ヨ韩涓栦箣璋滐紝鎬�鐤戝叏瀹朵汉閮藉湪楠楁垜",
+ "涓哄紵寮熼《缃紝鍑虹嫳鍚庡彂鐜颁竴鍒囧彉浜�",
+ "鍥犵梾涓嶈兘鐢熻偛锛屼笀澶嵈娓存湜瀛╁瓙",
+ "鏂板涓夊ぉ锛屽﹩濠嗘彁鍑鸿瘯濠氭湡",
+ "琚福鐢烽獥璧版墍鏈夌Н钃勶紝杩樿鑷繁杩樹俊鐢ㄥ崱",
+ "绮捐嫳鐢熸椿鑳屽悗锛岃棌鐫�璧屽崥鎴愮樉",
+ "鍗曚翰濡堝锛屾瘡澶╂紨鍙岄潰浜虹敓",
+ "鍦ㄥ瘜浜哄褰撳徃鏈猴紝鍗磋灏戝ザ濂跺嬀寮�",
+ "鍥犳晳浜虹槴鐥紝鍙嶈浜哄鍛婁笂娉曞涵",
+ "濡瑰椤舵浛鑷繁涓婂ぇ瀛︼紝濡備粖鎴愪簡椋庝簯浜虹墿",
+ "濂冲己浜鸿韩浠斤紝鍗存棤涓�浜虹煡鏅撳ス澶辩湢鎶戦儊",
+ "瀛╁瓙寰楅噸鐥咃紝闇�鐧句竾鎵嬫湳璐�",
+ "鍏徃瑁佸憳锛岃�佹澘鍗存兂娼滆鍒欐垜",
+ "鎹愮簿鏃剁暀涓嬬殑瀛╁瓙鎵句笂闂ㄦ潵",
+ "涓㈠け瀛╁瓙澶氬勾锛屾煇澶╄矾涓婂伓閬�",
+ "杈炶亴寮�椁愬巺锛岀涓�澶╁氨閬姇璇�",
+ "涓烘晳姣嶄翰鍊熼珮鍒╄捶锛屽浠婅閫煎��",
+ "鎹㈣偩鎵嬫湳鎴愬姛锛屽嵈鐖变笂浜嗕緵浣撳灞�",
+ "鍓嶄换鍥炲浗锛岀獊鐒朵綇杩涙垜闅斿",
+ "鐙嚜鏃呰锛屽嵈鍦ㄥ紓鍥借閫氱級",
+ "鐢熸椿鎷嵁锛岄潬鎵撻浂宸ュ吇瀹�",
+ "鎯呯华澶辨帶锛屽垰鍒氬拰鑰佸叕澶у惖涓�鏋�",
+ "鍒氭惉鏂板锛岄偦灞呮槸鍓嶄换鐨勬湅鍙�",
+ "閰掔簿渚濊禆锛屽鎬曡涓堝か鍙戠幇",
+ "澶卞幓宸ヤ綔鍚庯紝寮�濮嬭祵鍗氶�冮伩鐜板疄",
+ "瀹跺涵鏆村姏鍙楀鑰咃紝鏆椾腑瀵绘眰甯姪",
+ "澶у杈嶅锛屾垚涓虹綉绾㈢洿鎾富",
+ "闈犵綉璐风淮鎸佺敓娲伙紝娣遍櫡鍊哄姟鍗辨満",
+ "琚笀澶喎钀斤紝鏆椾腑鎬�鐤戜粬鏈夊閬�",
+ "琚叕鍙歌鍛橈紝鍜岃�佸叕鎰熸儏娓愯娓愯繙",
+ "鏂版檵缃戠孩锛岄鍏夎儗鍚庨殣钘忕瀵�",
+ "鍒氬垰绂诲锛岀嫭鑷姎鍏讳袱涓瀛�",
+ "鍒氫粠鎴掓瘨鎵�鍑烘潵锛屾兂閲嶅洖姝h建",
+ "鎮f湁鎱㈡�х梾锛岀粡娴庡帇鍔涘法澶�",
+ "鐢熸剰澶辫触锛屾瑺涓嬩竴灞佽偂鍊哄姟",
+ "琚揩鏀惧純浜嬩笟锛屾垚涓哄叏鑱屼富濡�",
+ "鏆楁亱鍚屼簨澶氬勾锛屽缁堟病鍕囨皵琛ㄧ櫧",
+ "濠氬Щ鍗辨満锛岄潰涓寸涓夎�呬粙鍏�",
+ "瀹跺涵鍏崇郴绱у紶锛岀埗姣嶅己鐑堝弽瀵瑰濮�",
+ "鑰佸叕鍑鸿建锛岀瀵嗚皟鏌ュ鏂规儏鍙�",
+ "鍒氬垰鏅嬪崌锛岄潰涓磋亴鍦烘帓鎸�",
+ "澶卞幓鐖舵瘝锛岀嫭鑷壙鎷呭搴矗浠�",
+ "闄峰叆缃戞亱楠楀眬锛岃韩蹇冨彈鍒�",
+ "琚湅鍙嬭儗鍙涳紝璐骇鎹熷け鎯ㄩ噸",
+ "鎰忓鎬�瀛曪紝闈复宸ㄥぇ鍘嬪姏",
+ "鎬�鐤戜笀澶殣钘忕瀵嗭紝绉佷笅璋冩煡",
+ "琚埗姣嶉�煎锛屽績涓彟鏈夋繁鐖�",
+ "鎰熸儏绾犺憶澶嶆潅锛屼笁瑙掑叧绯荤籂缂犱笉娓�",
+ "琚叕鍙告�ч獨鎵帮紝鑻︿簬鏃犲鐢宠瘔",
+ "澶氭鍒涗笟澶辫触锛岃礋鍊虹疮绱�",
+ "閬亣杞︾ジ锛屽け蹇嗗骞�",
+ "绮剧鐘舵�佷笉浣筹紝棰戠箒鍙戜綔鎶戦儊",
+ "澶卞幓宸ヤ綔锛岄潰涓村搴牬瑁�",
+ "娣辩埍鐨勪笀澶獊鐒跺け韪�",
+ "琚��鐤戜笌鍚屼簨鏈夋煋锛岄櫡鍏ュ洶澧�",
+ "鍒氬垰浜у悗鎶戦儊锛屾儏缁笉绋�",
+ "鐖舵瘝鍙屼骸锛岀収椤惧紵寮熷濡�",
+ "琚笀澶鏆达紝绉樺瘑閫冪",
+ "鍒氬垰鎴掕祵鎴愬姛锛岄噸鏂板仛浜�",
+ "閬亣缃戠粶娆哄噷锛岀敓娲婚櫡鍏ラ槾褰�",
+ "韬偅缁濈棁锛岄�夋嫨闅愮瀿鐪熺浉",
+ "琚ソ鍙嬫姠璧扮敺鍙嬶紝蹇冪闅惧繊",
+ "涓轰簡瀛╁瓙鏀惧純姊︽兂锛岀敓娲诲钩娣�",
+ "瀹跺涵鐭涚浘婵�鐑堬紝鍏勫紵鍙嶇洰鎴愪粐",
+ "娆犱笅宸ㄩ鍊哄姟锛岄櫡鍏ラ粦绀句細绾犵悍",
+ "闅愯棌杩囧幓绉樺瘑锛屽鎬曡鎻┛",
+ "缁忓巻杞︾ジ鏄忚糠锛岄啋鏉ュ凡鏄簲骞村悗",
+ "涓堝か绐佺劧鍙樺績锛屽彟缁撴柊娆�",
+ "鍒涗笟澶辫触锛屽瀛愭壙鎷呮墍鏈夊�哄姟",
+ "瀛╁瓙鎮g梾锛屽か濡讳负鍖昏嵂璐逛簤鍚典笉鏂�",
+ "濠嗗鍏崇郴绱у紶锛屽搴笉鍜岃皭",
+ "琚皬涓夐獨鎵帮紝瀹跺涵鐮磋杈圭紭",
+ "鍗曚翰瀹跺涵闀垮ぇ锛屾复鏈涚湡鐖�",
+ "宸ヤ綔鍘嬪姏澶э紝濠氬Щ鍑虹幇瑁傜棔",
+ "鏆楁亱瀵硅薄宸插锛屾棤娉曡嚜鎷�",
+ "琚獥璐㈤獥鑹诧紝鎯呮劅鍙楀垱",
+ "浜嬩笟鏈夋垚锛屼絾濠氬Щ绌鸿櫄",
+ "涓烘儏鎵�鍥帮紝澶卞幓鑷垜",
+ "鍒氬垰鎬�瀛曪紝鍙戠幇涓堝か鍑鸿建",
+ "琚椇铚滆儗鍙涳紝鍙嬫儏鐮磋",
+ "鍥犺浼氫笌涓堝か鍒嗗眳",
+ "鍒氬垰鍑虹嫳锛屽姹傚搴師璋�",
+ "瀛╁瓙琚粦鏋讹紝瀹跺涵闄峰叆鎭愭厡",
+ "涓堝か澶变笟锛屽搴粡娴庨櫡鍥板",
+ "濠嗗﹩浠嬪叆濠氬Щ锛屽か濡荤煕鐩炬縺鍖�",
+ "琚璁や负灏忎笁锛岀ぞ浼氬帇鍔涘法澶�",
+ "鍋峰伔鏀掗挶鍑嗗绂诲",
+ "涓堝か璧屽崥鎴愮樉锛屽搴牬瑁�",
+ "閬亣杞︾ジ澶卞繂锛屽搴敓鍙�",
+ "濂冲効鐣欏閬囬櫓锛屽か濡诲垎姝у姞鍓�",
+ "鑷繁鍑鸿建锛岄櫡鍏ラ亾寰锋專鎵�",
+ "涓уけ鐢熻偛鑳藉姏锛屽か濡诲叧绯荤揣寮�",
+ "鐙嚜鎶氬吇鎮g梾涓堝か",
+ "涓堝か娴峰宸ヤ綔锛屽濮诲紓鍦�",
+ "瀹舵棌浼佷笟缁ф壙绾犵悍",
+ "琚寚璐f姏寮冨搴�",
+ "闅愯棌澶氬勾鐨勭瀵嗚鎻紑",
+ "瀹跺涵鑱氫細鍙樻垚澶ф垬",
+ "閭诲眳涓炬姤瀹跺涵鐭涚浘",
+ "缃戠粶鐩存挱鏇濆厜绉佺敓娲�",
+ "鍙戠幇涓堝か闅愮瀿鍊哄姟",
+ "瀛╁瓙鎴愮哗浼樺紓锛屽搴湡鏈涢珮",
+ "闈复閫�浼戝嵄鏈�",
+ "鏀跺埌鍖垮悕鎭愬悡淇�",
+ "涓堝か琚崟锛屽搴0瑾夊彈鎹�",
+ "浜插弸鑳屽彌锛屽绔嬫棤鎻�",
+ "鐙珛鑷富锛屾嫆缁濆搴潫缂�",
+ "闈复璐骇鍒嗗壊璇夎",
+ "鍓嶄换绐佺劧鍑虹幇锛屾悈涔辩敓娲�",
+ "闄峰叆璧屽崥绾犵悍",
+ "瀹跺涵鎴愬憳鎮i噸鐥�",
+ "闈复鎴夸骇琚煡灏�",
+ "瀹朵腑绐佺劧鍑虹幇闄岀敓浜�",
+ "濡诲瓙鎬�鐤戜笀澶湁澶栭亣",
+ "涓堝か鐢熸剰澶辫触锛岃礋鍊虹疮绱�",
+ "濂冲効濠氫簨琚弽瀵�",
+ "鐖舵瘝鍌鍘嬪姏澶�",
+ "鏂版埧瑁呬慨閬亣绾犵悍",
+ "瀹朵腑绐佺劧鏂按鏂數",
+ "瀛╁瓙鍙涢�嗘湡锛屽搴揣寮�",
+ "澶鎰熸儏娣℃紶锛屽舰鍚岄檶璺�",
+ "閬亣璇堥獥鍥紮",
+ "濠氬Щ闈复绗笁鑰呮寫鎴�",
+ "涓уけ宸ヤ綔鎶�鑳斤紝闅句互璋嬬敓",
+ "瀹跺涵鎴愬憳娑夋瘨琚崟",
+ "闈复瀛╁瓙鎶氬吇鏉冧簤澶�",
+ "瀹跺涵鍐呴儴璧勬簮浜夊ず婵�鐑�",
+ "涓уけ淇′换锛屽か濡诲垎灞�",
+ "闈㈠濠嗗鎴樹簤"
+ ],
+ "鍒濆浜嬩欢": [
+ "鍋堕亣楂樹腑鍚屽浼�",
+ "鍙戠幇涓堝か鎵嬫満鏈夋毀鏄т俊鎭�",
+ "鏃犳剰涓惉鍒板﹩濠嗗拰濮愬鐨勭瀵嗗璇�",
+ "涓堝か绐佺劧鎻愬嚭绂诲",
+ "琚墠浠绘剰澶栨壘涓婇棬",
+ "闂鸿湝鑳屽悗鎹呭垁瀛�",
+ "濠嗗﹩绐佺劧閫佹潵涓�鍫嗙ぜ鐗�",
+ "瀛╁瓙鍦ㄥ鏍¤娆鸿礋",
+ "鍙戠幇瀹堕噷璐︾洰涓嶅鍔�",
+ "涓堝か澶滀笉褰掑",
+ "闂鸿湝缁撳閭�璇锋垜鍑哄腑",
+ "琚悓浜嬭璁¢櫡瀹�",
+ "鏃犳剰闂寸湅鍒颁笀澶拰鍓嶄换鑱婂ぉ璁板綍",
+ "绐佺劧鏀跺埌鍖垮悕濞佽儊淇�",
+ "濠嗗﹩鍦ㄨ儗鍚庤鎴戝潖璇�",
+ "涓堝か閫佹潵涓�寮犻檶鐢熷コ浜虹殑鐓х墖",
+ "瀛╁瓙鎴愮哗绐佺劧涓嬫粦",
+ "鍓嶄换鎴愪负閭诲眳",
+ "涓堝か鐢佃瘽閲岄殣鐬掕韪�",
+ "鍏徃瑁佸憳椋庢尝娉㈠強鎴�",
+ "闂鸿湝鍜屼笀澶湁鏆ф槯鍏崇郴",
+ "绐佺劧琚憡鐭ュ浜ц杞Щ",
+ "濠嗗﹩绐佸彂閲嶇梾",
+ "鍙戠幇涓堝か寮�閿�绁炵",
+ "闂鸿湝閭�鎴戝幓鍙傚姞绉樺瘑鑱氫細",
+ "瀛╁瓙琚�佸笀鎶曡瘔",
+ "涓堝か澶滄櫄娑堝け鍑犱釜灏忔椂",
+ "鏃犳剰鐪嬪埌涓堝か鐨勯殣钘忕ぞ浜よ处鍙�",
+ "鍓嶄换瀵规垜鍙戣捣绀句氦鏀诲嚮",
+ "濠嗗﹩绉佽嚜骞叉秹瀹跺姟瀹夋帓",
+ "鍙戠幇涓堝か鎵嬫満钘忔湁鐓х墖",
+ "瀛╁瓙鎰忓闂叆鐖舵瘝浜夊惖鐜板満",
+ "闂鸿湝绐佺劧鎼埌鎴戝闄勮繎",
+ "涓堝か鍜屽墠濡昏仈绯婚绻�",
+ "瀹堕噷鏀跺埌鍖垮悕鍖呰9",
+ "濠嗗﹩绉佷笅瀹夋帓鐩镐翰",
+ "鍏徃鍐呴儴鏈変汉閽堝鎴�",
+ "涓堝か鍑鸿建璇佹嵁鏇濆厜",
+ "瀛╁瓙鍙傚姞姣旇禌澶卞埄",
+ "闂鸿湝鑳屽彌鎯呮劅鍛婄櫧",
+ "涓堝か绐佺劧杈炶亴",
+ "濠嗗﹩鏆椾腑鑱旂郴鎴戦椇铚�",
+ "鍙戠幇涓堝か鍙岄噸韬唤",
+ "瀛╁瓙绐佺劧璇磋瘽寮傚父",
+ "鍓嶄换鍙傚姞瀹跺涵鑱氫細",
+ "闂鸿湝鎻愬嚭鍊熼挶涓嶈繕",
+ "涓堝か澶滄櫄鎺ョ數璇濈绉�",
+ "濠嗗﹩涓庨偦灞呭悎璋嬫帓鎸ゆ垜",
+ "鍙戠幇瀛╁瓙涓嶅睘浜庤嚜宸�",
+ "涓堝か绐佺劧鎷掔粷鎬х敓娲�",
+ "闂鸿湝鎻湶鎴戠殑绉樺瘑",
+ "濠嗗﹩鎸囪矗鎴戠殑鑲插効鏂瑰紡",
+ "涓堝か缁欐垜璁剧疆浜嗙洃鎺�",
+ "瀛╁瓙鎴愮哗鍗曡绡℃敼",
+ "闂鸿湝鑳屽悗浼犳垜鍧忚瘽",
+ "涓堝か甯﹂檶鐢熷コ浜哄洖瀹�",
+ "濠嗗﹩瀵规垜瑷�璇喎娣�",
+ "瀛╁瓙鍗峰叆鏍″洯椋庢尝",
+ "涓堝か绐佺劧杩滆荡澶栧湴",
+ "闂鸿湝閭�璇锋垜鍙傚姞娲惧",
+ "濠嗗﹩绐佺劧鎼繘鎴戝",
+ "鍙戠幇涓堝か璐︽埛寮傚父娑堣垂",
+ "瀛╁瓙鎮d笂閲嶇梾",
+ "闂鸿湝鍜屾垜浜夊ず鍚屼竴涓敺浜�",
+ "涓堝か涓庡墠浠诲湪澶栬闈�",
+ "濠嗗﹩闄愬埗鎴戜笌瀹朵汉鑱旂郴",
+ "瀛╁瓙鎰忓閬亣浜嬫晠",
+ "闂鸿湝鍜屼笀澶瀵嗛�氫俊",
+ "涓堝か閰掑悗澶辨�佷激瀹虫垜",
+ "濠嗗﹩鎸囨帶鎴戝搴毚鍔�",
+ "瀛╁瓙琚牎鏂瑰鍒�",
+ "闂鸿湝鍔濇垜绂诲",
+ "涓堝か绐佺劧闅愮瀿閲嶅ぇ绉樺瘑",
+ "濠嗗﹩瀹夋帓鎴戝弬鍔犵浉浜叉椿鍔�",
+ "瀛╁瓙瀛︿範鍘嬪姏杩囧ぇ",
+ "闂鸿湝鏇挎垜鍑烘皵涓庝笀澶簤鍚�",
+ "涓堝か涓哄彟涓�濂充汉涔版埧",
+ "濠嗗﹩骞叉秹鎴戝伐浣�",
+ "瀛╁瓙璇村嚭涓嶈璇寸殑璇�",
+ "闂鸿湝鎻愬嚭鎼潵鍚屼綇",
+ "涓堝か鎷掔粷鍥炲",
+ "濠嗗﹩鎸戞嫧绂婚棿",
+ "瀛╁瓙鍦ㄥ闈㈡墦鏋�",
+ "闂鸿湝鑳屽悗涓庢垜涓堝か鑱旀墜",
+ "涓堝か鎷掔粷涓庢垜娌熼��",
+ "濠嗗﹩鍚戜翰鎴氶�忛湶鎴戦殣绉�",
+ "瀛╁瓙琚璇�",
+ "闂鸿湝鍦ㄦ湅鍙嬪湀鎶归粦鎴�",
+ "涓堝か绉佽棌閾惰鍗�",
+ "濠嗗﹩鏆楃ず鎴戜笉閫傚悎鍋氭瘝浜�",
+ "瀛╁瓙鍙傚姞鍏磋叮鐝閫�瀛�",
+ "闂鸿湝鍙戝井淇$粰鍓嶄换",
+ "涓堝か鍙備笌闈炴硶浜ゆ槗",
+ "濠嗗﹩鍋峰伔淇敼閬楀槺",
+ "瀛╁瓙鏃╂亱琚彂鐜�",
+ "闂鸿湝甯﹂檶鐢熺敺浜哄洖瀹�",
+ "涓堝か杈炶亴杞涓嶅憡鐭�",
+ "濠嗗﹩璇嬫瘉鎴戠殑瀹跺涵鑳屾櫙",
+ "瀛╁瓙鎰忓涓㈠け鎵嬫満",
+ "闂鸿湝璇細鎴戣儗鍙涘ス",
+ "涓堝か闅愮瀿澶栭亣",
+ "濠嗗﹩濞佽儊瑕佹柇缁濆叧绯�",
+ "瀛╁瓙鎴愮哗鍗曡鍏紑",
+ "闂鸿湝绐佺劧鎻愬嚭鍒嗘墜",
+ "涓堝か甯︾梾涓婄彮",
+ "濠嗗﹩鏆椾腑鐩戣鎴�",
+ "瀛╁瓙琚悓瀛︽帓鎸�",
+ "闂鸿湝鍒堕�犲亣璇佹嵁闄峰鎴�",
+ "涓堝か绐佺劧鎼蛋",
+ "濠嗗﹩鍦ㄤ翰鎴氶潰鍓嶈船浣庢垜",
+ "瀛╁瓙鎮d笂蹇冪悊鐤剧梾",
+ "闂鸿湝鍜屼笀澶瀵嗙害浼�",
+ "涓堝か绐佺劧鎻愬嚭涔版埧",
+ "濠嗗﹩鎷掔粷鍜屾垜娌熼��",
+ "瀛╁瓙鍋峰伔鍚哥儫",
+ "闂鸿湝鍊熼挶涓嶈繕",
+ "涓堝か澶滈噷绁炵鍑洪棬",
+ "濠嗗﹩鏆楃ず鎴戠濠氭洿濂�",
+ "瀛╁瓙琚�佸笀鎶曡瘔娆哄噷",
+ "闂鸿湝鍛婅瘔涓堝か鎴戠殑绉樺瘑",
+ "涓堝か鍥犵梾浼戝亣",
+ "濠嗗﹩鎵惧�熷彛涓嶈鎴戝甫瀛╁瓙",
+ "瀛╁瓙鎷掔粷涓婂",
+ "闂鸿湝濞佽儊鎴戦��鍑烘湅鍙嬪湀",
+ "涓堝か鏈憡鐭ラ噸瑕佸喅瀹�",
+ "濠嗗﹩鍋峰伔鑱旂郴鍓嶄换",
+ "瀛╁瓙琚埗姣嶈矗楠�",
+ "闂鸿湝鍜屼笀澶墦鏋�",
+ "涓堝か涓㈠け閲嶈鏂囦欢",
+ "濠嗗﹩鍦ㄥ閲屽埗閫犵煕鐩�",
+ "瀛╁瓙浜や簡涓嶈壇鏈嬪弸",
+ "闂鸿湝鏁呮剰蹇借鎴�",
+ "涓堝か甯﹀コ鍚屼簨鍥炲",
+ "濠嗗﹩鍋峰伔鎷嗘暎鎴戝拰鏈嬪弸",
+ "瀛╁瓙琚�佸笀璇В",
+ "闂鸿湝鎶㈣蛋鎴戠殑宸ヤ綔鏈轰細",
+ "涓堝か澶滅彮鍔犵彮澶辫仈",
+ "濠嗗﹩鎸囪矗鎴戠殑鏁欒偛鏂规硶",
+ "瀛╁瓙鎴愮哗琚�佸笀鍏紑鎵硅瘎",
+ "闂鸿湝鍚戜笀澶妇鎶ユ垜",
+ "涓堝か鍋峰伔娆犲��",
+ "濠嗗﹩涓嶈瀛╁瓙鍜屾垜浜茶繎",
+ "瀛╁瓙璇磋皫琚彮绌�",
+ "闂鸿湝甯︿汉楠氭壈鎴�",
+ "涓堝か澶变笟鍦ㄥ",
+ "濠嗗﹩绐佺劧鏀瑰彉鎬佸害",
+ "瀛╁瓙鍦ㄥ鍒堕�犵煕鐩�",
+ "闂鸿湝琚垜鎻┛璋庤█",
+ "涓堝か鎵胯鍑鸿建",
+ "濠嗗﹩瑕佹眰鎴戞惉鍑哄闂�",
+ "瀛╁瓙鍦ㄥ闈㈠彈浼�",
+ "闂鸿湝鍛婅瘔鎴戜笀澶殑绉樺瘑",
+ "涓堝か涓存椂鏀瑰彉璁″垝",
+ "濠嗗﹩绐佺劧閫佹垜绀肩墿",
+ "瀛╁瓙鍙傚姞姣旇禌鑾峰",
+ "闂鸿湝瀵规垜鍐锋贰",
+ "涓堝か鍦ㄥ鐣欏鏈嬪弸瀹�",
+ "濠嗗﹩闄愬埗鎴戣瀛╁瓙",
+ "瀛╁瓙蹇界劧鐢熺梾",
+ "闂鸿湝甯︽垜鍙傚姞鑱氫細",
+ "涓堝か鎷掔粷鍙傚姞瀹跺涵鑱氫細",
+ "濠嗗﹩绉佷笅鑱旂郴鎴戠殑鐖舵瘝",
+ "瀛╁瓙涓庢垜闂瑰埆鎵�",
+ "闂鸿湝鍛婅瘔鎴戜笀澶殑澶栭亣",
+ "涓堝か鍥犳晠鎰忛殣鐬掕鎻┛",
+ "濠嗗﹩鍜屾垜鍐锋垬",
+ "瀛╁瓙鎯崇瀹跺嚭璧�",
+ "闂鸿湝缁欐垜鍑洪毦棰�",
+ "涓堝か宸ヤ綔璋冨姩涓存椂鎼",
+ "濠嗗﹩鍜岄偦灞呬紶闂茶瘽",
+ "瀛╁瓙鎴愮哗涓嬫粦瀹堕暱浼氬彈鎵�",
+ "闂鸿湝閭�璇锋垜鏃呰",
+ "涓堝か鏃犳晠鐢熸皵鍐锋垬",
+ "濠嗗﹩涓嶈瀛╁瓙璇存垜鍧忚瘽",
+ "瀛╁瓙蹇界劧杩蜂笂缃戠粶娓告垙",
+ "闂鸿湝鍔濇垜鏀惧純涓堝か",
+ "涓堝か鏀瑰彉鎵嬫満瀵嗙爜",
+ "濠嗗﹩閫兼垜鏀惧純宸ヤ綔",
+ "瀛╁瓙琚璇婂紩鍙戝闀夸細",
+ "闂鸿湝鏇濆厜鎴戦殣绉�",
+ "涓堝か琚瀵兼壒璇�",
+ "濠嗗﹩鍋风湅鎴戞墜鏈�",
+ "瀛╁瓙琚�佸笀鐐瑰悕鎵硅瘎",
+ "闂鸿湝褰撲紬缇炶颈鎴�",
+ "涓堝か鎷掔粷甯﹀瀛愬嚭闂�",
+ "濠嗗﹩鍜屾垜鍐锋贰鐩稿",
+ "瀛╁瓙鍦ㄥ闂规儏缁�",
+ "闂鸿湝鍜屾垜浜夊ず瀹跺涵璧勬簮",
+ "涓堝か蹇界劧娑堝け鏁版棩",
+ "濠嗗﹩甯﹀瀛愮瀹跺嚭璧�",
+ "瀛╁瓙瀛︿範鍘嬪姏澶�",
+ "闂鸿湝涓洪毦鎴�",
+ "涓堝か闅愮瀿瀹跺涵鍊哄姟",
+ "濠嗗﹩鐮村潖鎴戠殑璁″垝",
+ "瀛╁瓙琚悓瀛﹀绔�",
+ "闂鸿湝閫忛湶鎴戝搴瀵�",
+ "涓堝か澶滄櫄绁炵鑱氫細",
+ "濠嗗﹩璇存垜涓嶅瓭",
+ "瀛╁瓙鏈夋毚鍔涘�惧悜",
+ "闂鸿湝鍒堕�犵煕鐩�",
+ "涓堝か涓庢湅鍙嬪弽鐩�",
+ "濠嗗﹩鎷掔粷甯繖",
+ "瀛╁瓙鑰冭瘯浣滃紛琚姄",
+ "闂鸿湝鎶㈣蛋鎴戠殑鐢峰弸"
+ ],
+ "鍐茬獊鎻忚堪": [
+ "涓堝か鍙戠幇鎴戝拰鍓嶄换鑱旂郴锛屽ぇ鍙戦浄闇�",
+ "濠嗗﹩鍏紑鎸囪矗鎴戜笉瀛濋『锛屽搴皵姘涚揣寮�",
+ "闂鸿湝鑳屽悗鎹呭垁锛屾寫鎷ㄧ闂村鑷村か濡讳簤鍚�",
+ "瀛╁瓙琚牎鏂硅瑙o紝瀹堕暱浼氫笂鐖嗗彂婵�鐑堜簤鎵�",
+ "涓堝か鍋峰伔妫�鏌ユ垜鐨勬墜鏈猴紝寮曞彂淇′换鍗辨満",
+ "濠嗗﹩绉佷笅鏁f挱鎴戠殑闅愮锛岄偦閲岃璁虹悍绾�",
+ "鍓嶄换绐佺劧鍑虹幇锛屾寫璧锋棫鎯呯籂绾�",
+ "闂鸿湝鍜屼笀澶殑鏆ф槯琚垜鍙戠幇锛屽叧绯荤牬瑁�",
+ "瀛╁瓙涓庣埗浜蹭簤鍚靛悗韬茶繘鎴块棿鎷掔粷璇磋瘽",
+ "涓堝か鍥犲伐浣滃帇鍔涘ぇ锛屽鎴戞�佸害鍐锋贰",
+ "濠嗗﹩骞叉秹瀹跺涵鍐崇瓥锛屽鑷寸煕鐩惧崌绾�",
+ "闂鸿湝鏆椾腑鎶㈣蛋鎴戞湅鍙嬬殑濂芥劅锛屽叧绯荤揣寮�",
+ "涓堝か涓庡墠濡荤瀵嗕細闈紝娆洪獥鎴戝鏃�",
+ "瀛╁瓙瀛︿範鎴愮哗涓嬮檷锛岀埗姣嶄簤鍚垫縺鐑�",
+ "濠嗗﹩涓庢垜涓哄瀛愭暀鑲查棶棰樹簤鎵т笉鏂�",
+ "涓堝か閰掑悗澶辨�侊紝瑷�璇激瀹虫垜",
+ "闂鸿湝鍦ㄦ湅鍙嬪湀鍏紑鍢茬瑧鎴戯紝婵�璧峰啿绐�",
+ "瀛╁瓙鐘敊琚�佸笀缃氱珯锛屽闀夸細涓婂惖缈诲ぉ",
+ "涓堝か鍥犺浼氭��鐤戞垜鍑鸿建锛岄椆寰椾笉鍙紑浜�",
+ "濠嗗﹩閫艰揩鎴戞斁寮冨伐浣滐紝寮曞彂婵�鐑堜簤鎵�",
+ "鍓嶄换鍦ㄥ闂ㄥ彛鍚甸椆锛岄偦灞呭洿瑙傚満闈㈠按灏�",
+ "闂鸿湝瓒佹垜涓嶅湪瀹跺伔璧伴噸瑕佺墿鍝�",
+ "涓堝か涓庡悓浜嬪叧绯绘毀鏄э紝琚垜褰撳満鎾炶",
+ "瀛╁瓙涓嶅惉璇濓紝涓庣埗姣嶅ぇ澹颁簤鍚�",
+ "濠嗗﹩杈遍獋鎴戝嚭韬綆寰紝瀹跺涵姘旀皼鍐板喎",
+ "闂鸿湝鍚戜笀澶臣鑴忔按锛岃瘯鍥剧牬鍧忓濮�",
+ "涓堝か鎷掔粷鎵挎媴瀹跺姟锛屽閲岀煕鐩惧崌绾�",
+ "瀛╁瓙琚鏍″紑闄わ紝鐖舵瘝浜夎婵�鐑�",
+ "濠嗗﹩鏃犳晠鎸戞嫧鎴戝拰涓堝か鐨勫叧绯�",
+ "鍓嶄换鎵撶數璇濋獨鎵帮紝涓堝か澶ф��",
+ "闂鸿湝鑳屽彌鎴戯紝甯﹁蛋鎴戦噸瑕佸鎴�",
+ "涓堝か蹇界暐瀹跺涵璐d换锛屽紩鍙戝﹩濯充笉婊�",
+ "瀛╁瓙鍙涢�嗘湡鐖嗗彂锛屽搴櫡鍏ユ贩涔�",
+ "濠嗗﹩绉佽嚜甯﹀瀛愬嚭闂紝鏈憡鐭ユ垜",
+ "闂鸿湝褰撲紬鎻垜鐨勭煭锛屽紩鍙戝按灏�",
+ "涓堝か涓庢湅鍙嬭捣浜夋墽锛屾垜琚壍杩炲叾涓�",
+ "瀛╁瓙鎾掕皫琚彮绌匡紝澶璐e鍗囩骇",
+ "濠嗗﹩闃绘尃鎴戝甫瀛╁瓙鍙傚姞娲诲姩",
+ "鍓嶄换鍏紑缇炶颈鎴戯紝涓堝か鏃犲姩浜庤》",
+ "闂鸿湝鏁e竷鍋囨秷鎭紝鎹熷鎴戠殑鍚嶈獕",
+ "涓堝か蹇樿閲嶈绾康鏃ワ紝濠嗗﹩鍐峰槻鐑",
+ "瀛╁瓙鍦ㄥ鎵撴灦锛岃鏍℃柟閫氱煡瀹堕暱",
+ "濠嗗﹩绉佽嚜鍋氫富锛屾敼鍙樺瀛愭暀鑲茶鍒�",
+ "闂鸿湝鎶㈣蛋鎴戝績浠殑宸ヤ綔宀椾綅",
+ "涓堝か鎷掔粷鍜屾垜娌熼�氾紝鍏崇郴鎭跺寲",
+ "瀛╁瓙娌夎糠娓告垙锛岀埗姣嶆剰瑙佷笉鍚�",
+ "濠嗗﹩瀵规垜鍐风溂鐩稿緟锛屽搴皵姘涚揣寮�",
+ "鍓嶄换棰戦楠氭壈锛屾壈涔辨垜鐢熸椿",
+ "闂鸿湝涓庢垜浜夊惖锛屽叧绯荤牬瑁�",
+ "涓堝か鍑鸿建琚彂鐜帮紝婵�鐑堝啿绐佺垎鍙�",
+ "瀛╁瓙鎴愮哗琚�佸笀鐐瑰悕鎵硅瘎锛岀埗姣嶄簤鍚�",
+ "濠嗗﹩鍢茬瑧鎴戠殑绌跨潃鎵撴壆锛屾縺璧蜂笉婊�",
+ "闂鸿湝鑳屽悗鏁e竷鎴戠殑绉樺瘑",
+ "涓堝か鍥犲伐浣滃帇鍔涘ぇ鍙戣劸姘�",
+ "瀛╁瓙涓嶆弧瀹跺涵绠℃暀锛屼笌鐖舵瘝浜夊惖",
+ "濠嗗﹩鍧氭寔浼犵粺瑙傚康锛屽拰鎴戠悊蹇靛啿绐�",
+ "鍓嶄换鍦ㄧぞ浜ゅ獟浣撴寫琛咃紝涓堝か鎰ゆ��",
+ "闂鸿湝甯︽潵闄岀敓鐢蜂汉锛屽紩鍙戜簤鍚�",
+ "涓堝か蹇借瀹跺涵锛屽鑷村瀛愭儏缁穿婧�",
+ "瀛╁瓙閫冨琚�佸笀鎵句笂闂�",
+ "濠嗗﹩鎸戞嫧澶鎰熸儏锛屽埗閫犵煕鐩�",
+ "闂鸿湝鍦ㄨ仛浼氫笂缇炶颈鎴�",
+ "涓堝か鍐锋垬鏁版棩锛屽涓皵姘涘兊纭�",
+ "瀛╁瓙鍙涢�嗕笌鐖舵瘝椤跺槾",
+ "濠嗗﹩骞叉秹瀹跺姟鍒嗛厤锛岀煕鐩炬縺鍖�",
+ "鍓嶄换绉佷笅鑱旂粶锛屾挰鍔ㄦ劅鎯呰缂�",
+ "闂鸿湝鍢茬瑧鎴戠殑姊︽兂锛屾縺璧蜂簤鍚�",
+ "涓堝か瀵规垜鍐锋紶鐤忚繙",
+ "瀛╁瓙琚悓瀛︽璐燂紝鐖舵瘝鎰忚涓嶅悎",
+ "濠嗗﹩瀵规垜鐨勮偛鍎挎柟寮忔寚鎵嬬敾鑴�",
+ "闂鸿湝鐮村潖鎴戝拰涓堝か鐨勭害浼�",
+ "涓堝か瀵规垜鎾掕皫琚彮绌�",
+ "瀛╁瓙鑰冭瘯澶卞埄锛屽か濡讳簰鐩告寚璐�",
+ "濠嗗﹩闄愬埗鎴戜笌瀛╁瓙鎺ヨЕ",
+ "鍓嶄换鍐嶆鍑虹幇锛屾寫鎷ㄥか濡绘劅鎯�",
+ "闂鸿湝绉佷笅鍜屼笀澶仈绯�",
+ "涓堝か闅愮瀿閲嶅ぇ绉樺瘑锛岃鎴戝彂鐜�",
+ "瀛╁瓙涓嶆効鍥炲锛屽搴煕鐩惧姞鍓�",
+ "濠嗗﹩寮鸿揩鎴戝弬鍔犲鏃忚仛浼�",
+ "闂鸿湝鍏紑璁藉埡鎴戝け璐ョ殑濠氬Щ",
+ "涓堝か閰楅厭闂逛簨锛屽瀛愬繊鏃犲彲蹇�",
+ "瀛╁瓙琚�佸笀鎵硅瘎鍚庡弽鎶楃埗姣�",
+ "濠嗗﹩绉佽嚜瀹夋帓瀛╁瓙鐨勬湭鏉�",
+ "鍓嶄换濞佽儊鎻湶杩囧幓绉樺瘑",
+ "闂鸿湝鍦ㄦ湅鍙嬪湀鍏紑鎴戠殑闅愮",
+ "涓堝か鎷掔粷鍙傚姞瀹跺涵娲诲姩",
+ "瀛╁瓙娌夎糠鎵嬫満锛岀埗姣嶄簤鍚典笉鏂�",
+ "濠嗗﹩鍜屾垜鍦ㄥ涓簤澶烘潈鍔�",
+ "闂鸿湝鎻湶鎴戝拰涓堝か鐨勭煕鐩�",
+ "涓堝か鍐疯惤鎴戯紝鎰熸儏娓愯娓愯繙",
+ "瀛╁瓙鍦ㄥ琚悓瀛﹀绔�",
+ "濠嗗﹩瀵规垜鍐疯█鍐疯",
+ "鍓嶄换鍙傚姞瀹跺涵鑱氫細锛屾皵姘涘按灏�",
+ "闂鸿湝鎸戞嫧鎴戝拰涓堝か鐨勫叧绯�",
+ "涓堝か鍜屽墠浠绘湁绉樺瘑鑱旂郴",
+ "瀛╁瓙鍑虹幇琛屼负闂锛岀埗姣嶄簤鍚�",
+ "濠嗗﹩闃绘鎴戝甫瀛╁瓙澶栧嚭",
+ "闂鸿湝鎶㈣蛋鎴戠殑璧勬簮鍜屾満浼�",
+ "涓堝か鎷掔粷涓庢垜娌熼��",
+ "瀛╁瓙鎴愮哗涓嬫粦寮曞彂瀹跺涵浜夋墽",
+ "濠嗗﹩瀵规垜鏈夊亸瑙侊紝瀹朵腑姘旀皼绱у紶",
+ "鍓嶄换棰戠箒鑱旂郴锛屾寫鎷ㄥ搴煕鐩�",
+ "闂鸿湝鏁呮剰蹇借鎴�",
+ "涓堝か瀵规垜璇磋皫锛屼俊浠荤牬瑁�",
+ "瀛╁瓙鍙涢�嗘湡锛屽搴笉鍜�",
+ "濠嗗﹩瀵规垜涓嶆弧锛屽父鍒堕�犵煕鐩�",
+ "闂鸿湝鑳屽悗璇存垜鐨勫潖璇�",
+ "涓堝か闅愮瀿瀹朵腑璐㈠姟闂",
+ "瀛╁瓙琚�佸笀鐐瑰悕鎵硅瘎",
+ "濠嗗﹩涓嶈鍙垜鐨勬暀鑲叉柟寮�",
+ "鍓嶄换鍦ㄦ湅鍙嬪湀鐐��鏂扮敓娲�",
+ "闂鸿湝甯﹂檶鐢熶汉鏉ュ閲�",
+ "涓堝か澶滀笉褰掑锛岃鎴戣川闂�",
+ "瀛╁瓙瀵规垜鍐锋紶鐤忚繙",
+ "濠嗗﹩涓嶆柇鎸戝墧鎴戠殑缂虹偣",
+ "闂鸿湝鍜屼笀澶骇鐢熻浼�",
+ "涓堝か鍥犲伐浣滃帇鍔涘ぇ鍙戣劸姘�",
+ "瀛╁瓙閫冭琚牎鏂规儵缃�",
+ "濠嗗﹩绉佷笅瀵规垜杩涜鍢茶",
+ "鍓嶄换濞佽儊瑕佺牬鍧忔垜鐨勫搴�",
+ "闂鸿湝鎸戣捣瀹跺涵浜夊惖",
+ "涓堝か鎷掔粷鎵挎媴瀹跺姟",
+ "瀛╁瓙鍦ㄥ鏍¤娆鸿礋",
+ "濠嗗﹩鍜屾垜鎰忚鐩稿乏锛屼簤鍚典笉浼�",
+ "闂鸿湝鍜屼笀澶湁绉樺瘑鑱旂郴",
+ "涓堝か蹇界暐瀹跺涵锛屽喎钀藉瀛�",
+ "瀛╁瓙娌夎糠娓告垙锛岀埗姣嶄簤鎵�",
+ "濠嗗﹩缁忓父鏃犵悊鍙栭椆",
+ "鍓嶄换绐佺劧鍑虹幇锛屾寫璧峰搴煕鐩�",
+ "闂鸿湝鍢茬瑧鎴戠敓娲诲洶澧�",
+ "涓堝か宸ヤ綔蹇欑蹇界暐瀹跺涵",
+ "瀛╁瓙瀵规垜鍏呮弧鏁屾剰",
+ "濠嗗﹩瀵规垜鎸囪矗涓嶆柇",
+ "闂鸿湝鑳屽彌鎴戜俊浠�",
+ "涓堝か鍑鸿建琚彂鐜�",
+ "瀛╁瓙鑰冭瘯澶卞埄锛屽搴揣寮�",
+ "濠嗗﹩瀵规垜鍐锋紶鏃犳儏",
+ "鍓嶄换棰戠箒楠氭壈",
+ "闂鸿湝鍦ㄨ儗鍚庨櫡瀹虫垜",
+ "涓堝か瀵规垜鎾掕皫",
+ "瀛╁瓙閫冨瀹朵腑闂瑰墽",
+ "濠嗗﹩鍒堕�犲搴笉鍜�",
+ "闂鸿湝澶鸿蛋鎴戝績鐖辩殑浜�",
+ "涓堝か鎷掔粷娌熼��",
+ "瀛╁瓙琛ㄧ幇寮傚父",
+ "濠嗗﹩瀵规垜鎬佸害鎭跺姡",
+ "鍓嶄换甯︽潵楹荤儲",
+ "闂鸿湝鍢茶鎴戝け璐�",
+ "涓堝か蹇借瀹跺涵",
+ "瀛╁瓙鍙嶆姉鐖舵瘝",
+ "濠嗗﹩鍒堕�犵煕鐩�",
+ "闂鸿湝鎸戞嫧绂婚棿",
+ "涓堝か鍐锋垬鏃犺",
+ "瀛╁瓙鍘屽閫冨",
+ "濠嗗﹩璇嬫瘉鎴戝悕瑾�",
+ "鍓嶄换鎸戞嫧澶鎰熸儏",
+ "闂鸿湝鑳屽悗璇村潖璇�",
+ "涓堝か闅愮瀿浜嬪疄",
+ "瀛╁瓙閬亣鏍″洯娆哄噷",
+ "濠嗗﹩寮鸿揩鎴戣姝�",
+ "闂鸿湝澶鸿蛋璧勬簮",
+ "涓堝か蹇界暐濡诲瓙",
+ "瀛╁瓙鎯呯华澶辨帶",
+ "濠嗗﹩鎸戣捣浜夊惖",
+ "鍓嶄换璇曞浘澶嶅悎",
+ "闂鸿湝鍒堕�犺浼�",
+ "涓堝か鍑鸿建琚彮",
+ "瀛╁瓙鎴愮哗涓嬮檷",
+ "濠嗗﹩鎸囪矗鎴�",
+ "闂鸿湝鑳屽彌鍙嬫儏",
+ "涓堝か鍐锋紶鐩稿緟",
+ "瀛╁瓙閫冭",
+ "濠嗗﹩涓庢垜浜夋墽",
+ "鍓嶄换棰戠箒鍑虹幇",
+ "闂鸿湝鐮村潖濠氬Щ",
+ "涓堝か璇磋皫",
+ "瀛╁瓙琛屼负寮傚父",
+ "濠嗗﹩鎸戞嫧澶",
+ "闂鸿湝鍢茬瑧鎴�",
+ "涓堝か蹇借瀹跺涵",
+ "瀛╁瓙鍙涢��",
+ "濠嗗﹩鍐锋贰鎴�"
+ ],
+ "鐙楄瑕佺礌": [
+ "璇細寮曞彂鐨勫搴悍浜�",
+ "鍓嶄换绐佺劧鍑虹幇鎼呭眬",
+ "绉樺瘑鐨勫弻閲嶇敓娲绘洕鍏�",
+ "濠嗗闂寸殑鏃犱紤姝簤鍚�",
+ "闂鸿湝鑳屽彌寮曞彂淇′换鍗辨満",
+ "涓堝か鍑鸿建闅愯棌澶氬勾",
+ "瀛╁瓙琚璇婂紩鍙戝搴娉�",
+ "閬椾骇浜夊ず鎴樻殫娼秾鍔�",
+ "鎰忓鎬�瀛曞紩鍙戜笁瑙掑叧绯�",
+ "娣卞绁炵鐢佃瘽鐗靛嚭绉樺瘑",
+ "璇細瀵艰嚧浜蹭汉鍙嶇洰鎴愪粐",
+ "闅愯棌鐨勮繃鍘昏鎸栨帢鍑烘潵",
+ "绐佸鍏舵潵鐨勫搴彉鏁�",
+ "绉樺瘑瀛╁瓙韬唤鏇濆厜",
+ "鍋囩濠氱湡澶嶅悎鐨勬垙鐮�",
+ "闂鸿湝鎶㈣蛋蹇冪埍鐢蜂汉",
+ "涓堝か浜嬩笟澶辫触瀹跺涵鐭涚浘鐖嗗彂",
+ "濠嗗﹩鏆椾腑鎷嗘暎澶鎰熸儏",
+ "瀛╁瓙闄峰叆鏍″洯娆哄噷",
+ "琚浼氬伔鎯呭紩鍙戦娉�",
+ "鍓嶄换鎴愰偦灞呭紩鍙戞懇鎿�",
+ "闅愯棌鐨勮储浜х瀵嗚鎻紑",
+ "璇細瀵艰嚧濂藉弸鍙嶇洰",
+ "绉樺瘑鎭嬫儏琚浜哄彂鐜�",
+ "绂诲鍗忚鑳屽悗鐨勬殫鎴�",
+ "瀹跺涵鎴愬憳闅愯棌鐨勯粦鍘嗗彶",
+ "濠嗗﹩璁捐瀚佺ジ鍎垮",
+ "闂鸿湝鎴愪负鎯呮晫",
+ "涓堝か绉佽棌鐨勭瀵嗚处鎴�",
+ "瀛╁瓙璇叆姝ч�旂殑璀︾ず",
+ "鎯呮晫绐佺劧鍑虹幇鎸戞垬濠氬Щ",
+ "璇細瀵艰嚧瀹跺涵鑱氫細鍙樻垬鍦�",
+ "鍋囪鍜岃皭瀹炲垯鏆楁祦娑屽姩",
+ "绉樺瘑璇佹嵁琚汉鍋疯蛋",
+ "涓堝か琚粦鏆楀娍鍔涙帶鍒�",
+ "瀹跺涵淇′换鐨勫穿濉�",
+ "璇細瀵艰嚧瀹舵棌鏂",
+ "闅愯棌鐨勯仐鍢卞紩鍙戠悍浜�",
+ "闂鸿湝鍜屼笀澶殑绉樺瘑寰�鏉�",
+ "瀛╁瓙琚嵎鍏ユ硶寰嬬籂绾�",
+ "涓堝か琚揩閫夋嫨瀹跺涵鎴栦簨涓�",
+ "濠嗗﹩鏆椾腑鐮村潖濠氬Щ",
+ "璇細瀵艰嚧澶鍒嗗眳",
+ "瀹跺涵璐㈠瘜琚姠澶�",
+ "绉樺瘑鎵嬫満璁板綍鏇濆厜",
+ "鍋囪鍜屽ソ瀹炲垯绠楄",
+ "闂鸿湝鑳屽悗鍋氫氦鏄�",
+ "瀛╁瓙绐佺劧澶辫釜寮曞彂鎭愭厡",
+ "涓堝か闅愯棌鐨勭梾鎯�",
+ "濠嗗﹩涓庢儏鏁岃仈鎵�",
+ "璇細瀵艰嚧瀹舵棌鎾曡",
+ "绉樺瘑淇′欢鎴愪负璇佹嵁",
+ "瀹跺涵鎴愬憳浜掔浉鐚滃繉",
+ "鍋囩濠氱湡鍒嗘墜",
+ "闂鸿湝鎶㈠ず瀹跺涵璧勬簮",
+ "涓堝か鐨勯殣绉樿韩浠芥洕鍏�",
+ "瀛╁瓙琚瀵艰蛋涓婃閫�",
+ "濠嗗﹩閫艰揩鍎垮瓙绂诲",
+ "璇細瀵艰嚧鍏勫紵鍙嶇洰",
+ "闅愯棌鐨勬棫璐﹁缈诲嚭",
+ "闂鸿湝璁捐闄峰",
+ "涓堝か鍜屽墠浠荤涓嬭仈绯�",
+ "瀹跺涵鎴愬憳鑳屽彌鐨勭湡鐩�",
+ "绉樺瘑鐩戞帶褰曞儚鏇濆厜",
+ "璇細寮曞彂鐨勮澶翠簤鍚�",
+ "濠嗗鎴樹簤鍗囩骇",
+ "鍋囪鍜岃В鑳屽悗鐨勯槾璋�",
+ "闂鸿湝娉勯湶瀹跺涵绉樺瘑",
+ "瀛╁瓙琚�佽繘鐗规畩瀛︽牎",
+ "涓堝か琚▉鑳佺寮�瀹跺涵",
+ "濠嗗﹩鏁呮剰鍒堕�犵煕鐩�",
+ "璇細瀵艰嚧濂藉弸鍐宠",
+ "绉樺瘑鎯呬功鏇濆厜",
+ "瀹跺涵鎴愬憳浜夊ず璐骇",
+ "鍋囩濠氭崲鍙栧埄鐩�",
+ "闂鸿湝褰撲紬鎻彂绉樺瘑",
+ "涓堝か闅愯棌鐨勮繃鍘�",
+ "瀛╁瓙璇俊璋庤█",
+ "濠嗗﹩绉佷笅鎿嶄綔瀹跺涵鍐崇瓥",
+ "璇細瀵艰嚧瀹跺涵鑱氫細鐖嗗彂鍐茬獊",
+ "绉樺瘑閫氳瘽褰曢煶琚硠闇�",
+ "瀹跺涵鎴愬憳浜掔浉绠楄",
+ "鍋囪骞哥瀹炲垯鐮寸",
+ "闂鸿湝鎸戞嫧绂婚棿",
+ "涓堝か鑳屽彌鐨勮瘉鎹�",
+ "瀛╁瓙琚璇婂紩鍙戝搴嵄鏈�",
+ "濠嗗﹩閫艰揩鍎垮瓙澶嶅",
+ "璇細瀵艰嚧瀹跺涵鎴愬憳鍒嗚",
+ "闅愯棌鐨勮储浜х瀵嗕簤澶�",
+ "闂鸿湝鏆楀湴閲屽拰鎯呮晫鍚堜綔",
+ "涓堝か绉樺瘑璐︽埛琚彂鐜�",
+ "瀛╁瓙璇叆涓嶈壇鍦堝瓙",
+ "濠嗗﹩璁捐鎷嗘暎澶",
+ "璇細寮曞彂琛楀ご浜夋墽",
+ "绉樺瘑褰曢煶鎴愬搴偢寮�",
+ "瀹跺涵鎴愬憳浜掔浉鑳屽彌",
+ "鍋囩濠氱殑鐪熺浉鏇濆厜",
+ "闂鸿湝浜夊ず瀹跺涵鍦颁綅",
+ "涓堝か闅愯棌鐨勭瀵嗙敓娲�",
+ "瀛╁瓙璇俊鍋囨秷鎭�",
+ "濠嗗﹩鏆椾腑鎺у埗瀹跺涵",
+ "璇細瀵艰嚧浜蹭汉鍙嶇洰",
+ "绉樺瘑浜ゆ槗琚洕鍏�",
+ "瀹跺涵鎴愬憳鏆椾腑杈冨姴",
+ "鍋囪鍜屽ソ瀹炲垯绠楄",
+ "闂鸿湝娉勯湶閲嶈淇℃伅",
+ "涓堝か鑳屽彌濠氬Щ",
+ "瀛╁瓙闄峰叆鏍″洯椋庢尝",
+ "濠嗗﹩閫艰揩瀹跺涵鎴愬憳鍋氶�夋嫨",
+ "璇細瀵艰嚧瀹跺涵鐮磋",
+ "闅愯棌鐨勯仐鍢卞紩鍙戜簤绔�",
+ "闂鸿湝鏆椾腑鎼炵牬鍧�",
+ "涓堝か鍜屽墠浠荤閫�",
+ "瀛╁瓙琚瀵艰涓哄紓甯�",
+ "濠嗗﹩璁捐闄峰鍎垮",
+ "璇細寮曞彂婵�鐑堜簤鍚�",
+ "绉樺瘑璇佹嵁琚汉鍋疯蛋",
+ "瀹跺涵鎴愬憳鐚滅枒鍗囩骇",
+ "鍋囩濠氱湡澶嶅悎",
+ "闂鸿湝鎶㈠ず閲嶈璧勬簮",
+ "涓堝か闅愯棌鐨勭柧鐥�",
+ "瀛╁瓙璇叆姝ч��",
+ "濠嗗﹩鐮村潖瀹跺涵鍜岃皭",
+ "璇細瀵艰嚧澶鍒嗗眳",
+ "绉樺瘑淇′欢鏇濆厜",
+ "瀹跺涵鎴愬憳浜掔浉绠楄",
+ "鍋囪鍜岃皭鑳屽悗鐨勭瀵�",
+ "闂鸿湝褰撲紬缇炶颈",
+ "涓堝か琚彮绌胯皫瑷�",
+ "瀛╁瓙鑰冭瘯浣滃紛琚彂鐜�",
+ "濠嗗﹩闄愬埗鍎垮鑷敱",
+ "璇細瀵艰嚧瀹跺涵鎾曡",
+ "闅愯棌鐨勬棫璐︽洕鍏�",
+ "闂鸿湝鑳屽悗鎹呭垁",
+ "涓堝か绉樺瘑鍑鸿建",
+ "瀛╁瓙琛屼负寮傚父",
+ "濠嗗﹩鎸戞嫧澶鍏崇郴",
+ "璇細瀵艰嚧浜蹭汉鍙嶇洰鎴愪粐",
+ "绉樺瘑閫氳瘽褰曢煶鏇濆厜",
+ "瀹跺涵鎴愬憳浜掔浉绠楄",
+ "鍋囪鍜屽ソ瀹炲垯鐮磋",
+ "闂鸿湝鎶㈣蛋閲嶈鐢蜂汉",
+ "涓堝か闅愯棌鐨勭瀵嗚韩浠�",
+ "瀛╁瓙琚璇婂紩鍙戦娉�",
+ "濠嗗﹩閫艰揩鍎垮瓙绂诲",
+ "璇細瀵艰嚧瀹跺涵绾蜂簤",
+ "闅愯棌鐨勯仐浜х瀵�",
+ "闂鸿湝璁捐闄峰",
+ "涓堝か鍜屽墠浠昏闈㈣鎾炶",
+ "瀛╁瓙璇俊璋庤█璧颁笂姝ч��",
+ "濠嗗﹩绉佷笅鎼為",
+ "璇細寮曞彂婵�鐑堜簤鍚�",
+ "绉樺瘑褰曢煶鎴愪负瀹跺涵鐐稿脊",
+ "瀹跺涵鎴愬憳浜掔浉鐚滅枒",
+ "鍋囩濠氱湡鍒嗘墜",
+ "闂鸿湝浜夊ず瀹跺涵鍦颁綅",
+ "涓堝か闅愯棌绉樺瘑鐢熸椿",
+ "瀛╁瓙娌夎糠娓告垙",
+ "濠嗗﹩鎸戞嫧绂婚棿",
+ "璇細瀵艰嚧瀹跺涵鐮磋",
+ "闅愯棌鐨勮储浜х瀵嗘洕鍏�",
+ "闂鸿湝鑳屽悗鎼炵牬鍧�",
+ "涓堝か鍑鸿建琚彂鐜�",
+ "瀛╁瓙琚悓瀛︽璐�",
+ "濠嗗﹩瀵瑰効濯冲喎鐪肩浉寰�",
+ "璇細寮曞彂浜蹭汉鍐宠",
+ "绉樺瘑鎯呬功鏇濆厜",
+ "瀹跺涵鎴愬憳浜掔浉鑳屽彌",
+ "鍋囪骞哥瀹炲垯鐮寸",
+ "闂鸿湝娉勯湶瀹跺涵绉樺瘑",
+ "涓堝か鍐疯惤濡诲瓙",
+ "瀛╁瓙鍙涢�嗘湡鐖嗗彂",
+ "濠嗗﹩鍒堕�犵煕鐩�",
+ "璇細瀵艰嚧澶浜夊惖",
+ "闅愯棌鐨勬棫璐︽洕鍏�",
+ "闂鸿湝鎶㈠ず閲嶈瀹㈡埛",
+ "涓堝か鎷掔粷娌熼��",
+ "瀛╁瓙鎴愮哗涓嬫粦",
+ "濠嗗﹩闄愬埗鍎垮瑙佸瀛�",
+ "璇細寮曞彂婵�鐑堝啿绐�",
+ "绉樺瘑璇佹嵁鏇濆厜",
+ "瀹跺涵鎴愬憳浜掔浉绠楄",
+ "鍋囪鍜屽ソ鑳屽悗绠楄",
+ "闂鸿湝褰撲紬缇炶颈",
+ "涓堝か闅愮瀿鐪熺浉",
+ "瀛╁瓙琛屼负寮傚父",
+ "濠嗗﹩骞叉秹瀹跺涵鍐崇瓥",
+ "璇細瀵艰嚧瀹跺涵鎾曡"
+ ],
+ "瀹跺涵缁撴瀯": [
+ "涓変唬鍚屽爞锛岀瀛欎笁浠f尋涓�灞�",
+ "鍗曚翰濡堝甯︾潃涓や釜瀛╁瓙鐢熸椿",
+ "澶浜屼汉锛岀嫭鐢熷瓙濂�",
+ "鍥涘彛涔嬪锛屾湁涓彌閫嗙殑闈掑皯骞�",
+ "涓夊彛涔嬪锛屽﹩濠嗗悓浣�",
+ "涓夊彛涔嬪锛屽叕濠嗚繙灞�",
+ "閲嶇粍瀹跺涵锛屽甫鐫�鍓嶅か鐨勫瀛�",
+ "澶淇╀笌鐖舵瘝鍚屼綇锛岀煕鐩鹃鍙�",
+ "涓ゅ澶浣忓湪涓�璧凤紝浜掔浉鎺h倶",
+ "鍗曡韩鐖朵翰鎶氬吇涓や釜瀛╁瓙",
+ "涓変唬鍚屽爞锛屽﹩濠嗕富瀵间竴鍒�",
+ "澶淇╁甫鐫�瀹犵墿锛屽疇鐗╂垚瀹跺涵涓績",
+ "绂诲紓鍚庡叡鍚屾姎鍏诲瀛愮殑瀹跺涵",
+ "澶浜屼汉鏃犲瓙濂筹紝濠嗗﹩澶╁ぉ鍞犲彣",
+ "瀹跺涵涓湁绮剧鐤剧梾鎮h��",
+ "澶甯︾潃鐖舵瘝鍜屽瀛愮殑澶у搴�",
+ "涓変唬鍚屽爞锛屽瓩瀛愯婧虹埍",
+ "澶淇╀笌澶у灏忓浣忎竴璧�",
+ "鍗曡韩濂虫�у甫鐫�骞磋繄鐖舵瘝",
+ "閲嶇粍瀹跺涵锛岀户瀛愮户濂崇浉浜掓晫瑙�",
+ "濠嗗鍏崇郴绱у紶鐨勪笁鍙d箣瀹�",
+ "澶浜屼汉锛屽叕濠嗕綇闅斿",
+ "涓変唬鍚屽爞锛屽鍔″垎閰嶄笉鍧�",
+ "澶甯︾潃鍙岃優鑳庡瀛�",
+ "鍗曚翰鐖朵翰甯︾潃涓�濂充竴鐢�",
+ "瀹跺涵涓湁娈嬮殰鎴愬憳",
+ "涓や唬鍚屼綇锛岀埗姣嶄緷璧栧効濂�",
+ "涓変唬鍚屽爞锛屽搴煕鐩句笉鏂崌绾�",
+ "鍗曚翰濡堝涓庣埗姣嶅悓浣�",
+ "澶甯︾潃澶栧﹩鍚屼綇",
+ "閲嶇粍瀹跺涵锛屽墠濡诲伓灏旀潵璁�",
+ "澶浜屼汉甯︾潃渚勫瓙渚勫コ",
+ "濠嗗﹩涓庡濡囦簤澶哄搴瘽璇潈",
+ "涓変唬鍚屽爞锛屽瀛愯婧虹埍鎯潖",
+ "澶淇╂棤瀛╁瓙锛屼翰鎴氶�煎",
+ "鍗曡韩鐖朵翰甯︾潃鐥呭急姣嶄翰",
+ "瀹跺涵鎴愬憳涓湁璧屽緬",
+ "澶甯︾潃鐖舵瘝鍜屽叕濠嗕袱杈逛綇",
+ "涓変唬鍚屽爞锛岄殧闃傚姞娣�",
+ "鍗曚翰濡堝鐙珛鏀拺瀹跺涵",
+ "澶淇╁甫鐫�缁у瓙",
+ "濠嗗鍏崇郴鍐锋贰鐨勪笁鍙d箣瀹�",
+ "澶浜屼汉锛岀杈堜綇杩滄柟",
+ "瀹跺涵鎴愬憳涓湁閰楅厭鑰�",
+ "涓変唬鍚屽爞锛屽鏃忛暱杈堟潈濞佹樉钁�",
+ "澶甯︾潃濂冲効鍜屽瀛�",
+ "鍗曚翰鐖朵翰甯︾潃骞煎効",
+ "閲嶇粍瀹跺涵锛岀户姣嶄笌瀛╁瓙鐭涚浘",
+ "澶涓庣埗姣嶅悓浣忎絾浜掍笉骞叉秹",
+ "涓変唬鍚屽爞锛屽瓩杈堝彈绁栬緢瀹犵埍",
+ "澶浜屼汉锛岄偦灞呭共娑夊搴敓娲�",
+ "鍗曡韩濂虫�у甫鐫�寮熷紵濡瑰",
+ "瀹跺涵涓湁鍒涗笟澶辫触鎴愬憳",
+ "澶甯︾潃绁栫埗姣�",
+ "涓変唬鍚屽爞锛岀埗姣嶅亸蹇冪幇璞℃槑鏄�",
+ "鍗曚翰濡堝甯︾潃涓や釜濂冲効",
+ "澶淇╀笌濮戝鍚屼綇",
+ "濠嗗浜夋墽涓嶆柇鐨勫洓鍙d箣瀹�",
+ "澶浜屼汉甯︾潃渚勫瓙",
+ "涓変唬鍚屽爞锛屽搴唴閮ㄧ煕鐩鹃鍙�",
+ "鍗曚翰鐖朵翰甯︾潃鍎垮瓙",
+ "瀹跺涵鎴愬憳涓湁澶变笟鑰�",
+ "澶甯︾潃鍏﹩",
+ "閲嶇粍瀹跺涵锛屼翰鐢熷瓙濂充笌缁у瓙濂冲啿绐�",
+ "澶浜屼汉锛岀嫭灞呮棤瀛愬コ",
+ "涓変唬鍚屽爞锛岀埛鐖峰ザ濂舵帉鎺у鍔�",
+ "鍗曡韩姣嶄翰鎶氬吇鍎垮瓙",
+ "澶淇╀笌浜叉垰鍚堜綇",
+ "濠嗗鍏崇郴澶嶆潅鐨勫洓鍙d箣瀹�",
+ "澶浜屼汉甯︾潃瀛欒緢",
+ "瀹跺涵鎴愬憳涓湁闀挎湡鐥呮偅",
+ "涓変唬鍚屽爞锛屽鏃忎紶缁熷奖鍝嶆繁鍒�",
+ "澶甯︾潃鐙敓濂�",
+ "鍗曚翰鐖朵翰甯︾潃濂冲効",
+ "閲嶇粍瀹跺涵锛屽弻鏂瑰瓙濂充簰涓嶈鍚�",
+ "澶浜屼汉锛屼笌鐖舵瘝闅旇鐩告湜",
+ "涓変唬鍚屽爞锛岀杈堜弗鏍肩鏁欏瓩杈�",
+ "鍗曚翰濡堝甯︾潃鍎垮瓙鍜屽コ鍎�",
+ "澶淇╁甫鐫�鐖舵瘝",
+ "濠嗗浜夋枟婵�鐑堢殑澶у搴�",
+ "澶浜屼汉锛屾棤瀛╁瓙瀹犵墿褰撳",
+ "涓変唬鍚屽爞锛屽瓩瀛愬瓩濂虫姠澶哄疇鐖�",
+ "鍗曡韩鐖朵翰鐙嚜鎶氬吇瀹跺涵",
+ "瀹跺涵鎴愬憳鏈夎祵鍗氭垚鐦捐��",
+ "澶甯︾潃绁栫埗姣嶅悓浣�",
+ "閲嶇粍瀹跺涵锛岀户姣嶄笌缁у瓙鎰熸儏娣¤杽",
+ "澶浜屼汉锛屽﹩濠嗚繙鍦ㄥ鍦�",
+ "涓変唬鍚屽爞锛屽鍔″垎宸ヤ笉鍧�",
+ "鍗曚翰濡堝涓庣埛鐖峰ザ濂跺悓浣�",
+ "澶淇╁甫鐫�骞煎効",
+ "濠嗗鐭涚浘绐佸嚭锛屽搴皼鍥寸揣寮�",
+ "澶浜屼汉甯︾潃渚勫コ",
+ "涓変唬鍚屽爞锛屽瓩杈堝彈绁栬緢婧虹埍",
+ "鍗曚翰鐖朵翰鎶氬吇濂冲効",
+ "瀹跺涵鎴愬憳鏈夐厳閰掗棶棰�",
+ "澶甯︾潃鍏﹩涓よ竟",
+ "閲嶇粍瀹跺涵锛屽瓙濂充笉鎺ュ彈缁х埗姣�",
+ "澶浜屼汉锛屾棤浜插睘鍚屼綇",
+ "涓変唬鍚屽爞锛屽鏃忔潈鍔涙枟浜夋縺鐑�",
+ "鍗曡韩濂虫�ф姎鍏诲紵寮�",
+ "澶淇╀笌鐖舵瘝鍒嗗紑灞呬綇",
+ "濠嗗浜夊惖涓嶆柇锛屽奖鍝嶅搴拰璋�",
+ "澶浜屼汉甯︾潃澶栧瓩",
+ "涓変唬鍚屽爞锛屽瓩杈堣绁栬緢涓ユ牸绠℃暀",
+ "鍗曚翰濡堝甯︾潃涓や釜瀛╁瓙",
+ "澶甯︾潃骞磋繄鐖舵瘝",
+ "瀹跺涵鎴愬憳涓湁绮剧鐥呮偅鑰�",
+ "澶浜屼汉锛屼笌浜叉垰鍏卞悓鐢熸椿",
+ "涓変唬鍚屽爞锛屽鏃忎紶缁熶範淇楁祿鍘�",
+ "鍗曚翰鐖朵翰鎶氬吇涓や釜瀛╁瓙",
+ "澶淇╀笌濮戝鍚屼綇",
+ "濠嗗鐭涚浘涓嶆柇鍗囩骇",
+ "澶浜屼汉甯︾潃渚勫瓙渚勫コ",
+ "涓変唬鍚屽爞锛屽搴煕鐩惧鍙�",
+ "鍗曡韩姣嶄翰鎶氬吇濂冲効",
+ "瀹跺涵鎴愬憳鏈夊け涓氳��",
+ "澶甯︾潃绁栫埗姣嶅悓浣�",
+ "閲嶇粍瀹跺涵锛岀户瀛愮户濂冲叧绯荤揣寮�",
+ "澶浜屼汉锛岀嫭鑷敓娲绘棤瀛愬コ",
+ "涓変唬鍚屽爞锛岀杈堟潈濞佸己鍔�",
+ "鍗曚翰濡堝甯︾潃鍎垮コ",
+ "澶淇╀笌鐖舵瘝鍚屼綇浣嗕笉浜茶繎",
+ "濠嗗鍏崇郴澶嶆潅锛屽鍔′簤鎵ч绻�",
+ "澶浜屼汉甯︾潃瀛欒緢",
+ "涓変唬鍚屽爞锛屽鏃忓啿绐佷笉鏂�",
+ "鍗曚翰鐖朵翰甯︾潃鍎垮瓙",
+ "瀹跺涵鎴愬憳鏈夎祵鍗氶棶棰�",
+ "澶甯︾潃鍏﹩鍙屾柟",
+ "閲嶇粍瀹跺涵锛屼翰鐢熷瓙濂充笌缁у瓙濂充笉鍜�",
+ "澶浜屼汉锛屾棤浜插睘骞叉壈",
+ "涓変唬鍚屽爞锛屽搴潈鍔涙枟浜夋縺鐑�",
+ "鍗曡韩濂虫�у甫鐫�寮熷紵濡瑰",
+ "澶淇╀笌鐖舵瘝闅旇鐩告湜",
+ "濠嗗浜夋墽棰戠箒褰卞搷瀹跺涵姘旀皼"
+ ],
+ "绗笁浜鸿瀹�": [
+ "涓堝か鐨勯椇铚�",
+ "閭诲眳澶у",
+ "鍗曚綅鍚屼簨",
+ "楂樹腑鍚屽",
+ "鍓嶄换鎯呬汉",
+ "绉佸渚︽帰",
+ "瀹跺涵鍖荤敓",
+ "濠氬Щ鍜ㄨ甯�",
+ "鍎垮瓙鐨勮�佸笀",
+ "濂冲効鐨勫ソ鍙�",
+ "鍓嶅",
+ "鍓嶅か",
+ "灏忓瀛�",
+ "澶у濮�",
+ "鍏叕鐨勬湅鍙�",
+ "濠嗗﹩鐨勫悓浜�",
+ "浜叉垰涓殑鑸呰垍",
+ "闅斿瀹剁殑灏忓",
+ "杩滄埧浜叉垰",
+ "琛楀潑閭诲眳",
+ "鍏徃棰嗗",
+ "鑰佹澘鍔╃悊",
+ "閰掑惂鑰佹澘",
+ "KTV缁忕悊",
+ "楗簵鍘ㄥ笀",
+ "鍋ヨ韩鏁欑粌",
+ "缇庡彂甯�",
+ "鍙告満",
+ "蹇�掑憳",
+ "淇濆",
+ "瀹舵斂鏈嶅姟鍛�",
+ "鏈嬪弸鐨勬湅鍙�",
+ "杩滄埧鍫傚厔",
+ "瀛︽牎蹇冪悊杈呭鑰佸笀",
+ "瀛╁瓙鐨勮ˉ涔犺�佸笀",
+ "瀹堕暱浼氫唬琛�",
+ "绀惧尯蹇楁効鑰�",
+ "鏁欎細鐗у笀",
+ "鍜屽皻",
+ "琛楀ご鍗栬壓鑰�",
+ "鐞嗗彂搴楄�佹澘",
+ "澶滃簵DJ",
+ "鍑虹杞﹀徃鏈�",
+ "鍏氦杞﹀徃鏈�",
+ "蹇搴楀簵鍛�",
+ "瓒呭競鏀堕摱鍛�",
+ "鍜栧暋搴楄�佹澘",
+ "澶栧崠灏忓摜",
+ "缃戝惂鑰佹澘",
+ "鍓у洟婕斿憳",
+ "鐢诲",
+ "闊充箰鑰佸笀",
+ "浣撴搷鏁欑粌",
+ "鎽勫奖甯�",
+ "缃戠粶绾汉",
+ "鐩存挱涓绘挱",
+ "寰俊鏈嬪弸鍦堥噷鐨勫尶鍚嶇垎鏂欒��",
+ "灏忓尯淇濆畨",
+ "鐗╀笟缁忕悊",
+ "鎴垮湴浜т腑浠�",
+ "閾惰鑱屽憳",
+ "绋庡姟瀹樺憳",
+ "淇濋櫓鎺ㄩ攢鍛�",
+ "濠氬簡绛栧垝甯�",
+ "鑺卞簵鑰佹澘",
+ "鎽勫奖妫氬伐浣滀汉鍛�",
+ "鏂囨绛栧垝",
+ "鏂伴椈璁拌��",
+ "鍏紬鍙风紪杈�",
+ "寰崥澶",
+ "璁哄潧鐗堜富",
+ "缃戝弸",
+ "绮変笣鍥㈠洟闀�",
+ "濞变箰鍦堟槑鏄�",
+ "妯$壒",
+ "浣滃",
+ "缂栧墽",
+ "瀵兼紨鍔╃悊",
+ "濠氱ぜ涓绘寔浜�",
+ "蹇冪悊鍖荤敓",
+ "鐟滀冀鏁欑粌",
+ "鎸夋懇甯�",
+ "瓒崇枟甯�",
+ "鐞嗙枟甯�",
+ "鏃呮父瀵兼父",
+ "鍙告満鍏间繚闀�",
+ "鍋ヨ韩鎴夸細鍛�",
+ "娓告吵鏁欑粌",
+ "姝︽湳鏁欑粌",
+ "璺嗘嫵閬撴暀缁�",
+ "淇濆畨闃熼暱",
+ "绀惧尯涔﹁",
+ "琛楅亾鍔炰簨澶勫伐浣滀汉鍛�",
+ "鏂囧寲灞�鑱屽憳",
+ "鏂囪壓鍥綋璐熻矗浜�",
+ "蹇楁効鑰呯粍缁囪礋璐d汉",
+ "鍏艰亴瀹舵暀",
+ "閫侀鍛�",
+ "瀹犵墿缇庡甯�",
+ "骞煎効鍥�佸笀",
+ "灏忓鑰佸笀",
+ "涓鐝富浠�",
+ "澶у鏁欐巿",
+ "鐮旂┒鐢熷甯�",
+ "鏍¢暱",
+ "瀛︾敓浼氫富甯�",
+ "姣曚笟鍏哥ぜ涓绘寔浜�",
+ "鏂囧寲娲诲姩涓绘寔浜�"
+ ],
+ "蹇冪悊鍔ㄦ満": [
+ "娓存湜琚鍙拰灏婇噸",
+ "鎯宠澶嶄粐鍜屾姤澶�",
+ "杩芥眰缁忔祹鍒╃泭",
+ "娓存湜鐖辨儏鍜岃鐖�",
+ "瀹虫�曞け鍘讳翰浜�",
+ "瀚夊鍒汉鐨勫垢绂�",
+ "娓存湜鎺屾帶鍜屾潈鍔�",
+ "鎯宠淇濇姢瀹朵汉",
+ "閫冮伩鐜板疄鍘嬪姏",
+ "杩芥眰鑷敱鍜岀嫭绔�",
+ "鎯宠璇佹槑鑷繁浠峰��",
+ "琚繃鍘荤殑浼ょ棝椹变娇",
+ "娓存湜瀹夊叏鎰�",
+ "杩芥眰鍚嶈獕鍜屽湴浣�",
+ "瀹虫�曞鐙拰琚仐寮�",
+ "鎯宠瀵绘眰鍏钩姝d箟",
+ "娓存湜琚叧娉ㄥ拰瀹犵埍",
+ "瀹虫�曞け璐ュ拰琚槻绗�",
+ "杩芥眰鍒烘縺鍜屽啋闄�",
+ "鎯宠寮ヨˉ杩囧幓鐨勯敊璇�",
+ "娓存湜琚悊瑙e拰鎺ョ撼",
+ "鎯宠鎺屾帶灞�闈�",
+ "瀹虫�曡鑳屽彌",
+ "鎯宠閲嶅缓鑷俊",
+ "杩芥眰骞哥鐢熸椿",
+ "瀹虫�曢潰瀵圭湡鐩�",
+ "娓存湜鍜屽钩涓庡畨瀹�",
+ "鎯宠鎽嗚劚鍥板",
+ "杩芥眰鏉冨埄鍜屽湴浣�",
+ "鎯宠鑾峰緱瀹芥仌",
+ "瀹虫�曞け鍘绘帶鍒�",
+ "娓存湜瀹炵幇姊︽兂",
+ "鎯宠缁存姢瀹跺涵鑽h獕",
+ "杩芥眰涓汉鎴愰暱",
+ "瀹虫�曡鎺掓枼",
+ "娓存湜鑾峰緱鏈轰細",
+ "鎯宠鎶ョ瓟鎭╂儏",
+ "瀹虫�曢潰瀵硅矗浠�",
+ "杩芥眰鐗╄川浜彈",
+ "鎯宠閫冮伩璐d换",
+ "娓存湜鑷垜瀹炵幇",
+ "瀹虫�曞け璐�",
+ "鎯宠鏀瑰彉鍛借繍",
+ "杩芥眰绮剧婊¤冻",
+ "娓存湜瀹夊叏淇濋殰",
+ "鎯宠鑾峰緱鏀寔",
+ "瀹虫�曞绔嬫棤鎻�",
+ "杩芥眰鏉冨姏骞宠 ",
+ "鎯宠鎶ュ浼ゅ",
+ "娓存湜鑾峰緱璁ゅ彲",
+ "瀹虫�曞け鍘诲湴浣�",
+ "鎯宠閲嶆柊寮�濮�",
+ "杩芥眰鐞嗘兂鐢熸椿",
+ "娓存湜骞哥瀹跺涵",
+ "鎯宠璇佹槑娓呯櫧",
+ "瀹虫�曡璇В",
+ "杩芥眰鍏钩绔炰簤",
+ "鎯宠鑾峰緱灏婇噸",
+ "娓存湜鍐呭績骞抽潤",
+ "瀹虫�曡鎺у埗",
+ "鎯宠鑾峰緱鑷敱",
+ "杩芥眰蹇冪伒鎱拌棄",
+ "娓存湜琚叧娉�",
+ "鎯宠鑾峰緱鍒╃泭",
+ "瀹虫�曞鐙粓鑰�",
+ "杩芥眰绀句細璁ゅ彲",
+ "鎯宠瀹炵幇鑷垜浠峰��",
+ "娓存湜鍜岃皭鍏崇郴",
+ "瀹虫�曞け鍘讳翰鎯�",
+ "鎯宠淇濆叏闈㈠瓙",
+ "杩芥眰绮剧鐙珛",
+ "娓存湜琚埍鎶�",
+ "鎯宠鎸戞垬鏉冨▉",
+ "瀹虫�曡娆洪獥",
+ "杩芥眰璐㈠瘜绉疮",
+ "鎯宠鎽嗚劚鏉熺細",
+ "娓存湜鑾峰緱骞哥",
+ "瀹虫�曡蹇借",
+ "杩芥眰瀹跺涵鍜岀潶",
+ "鎯宠寤虹珛褰卞搷鍔�",
+ "娓存湜鑷垜璁ゅ悓",
+ "瀹虫�曞け璐ユ墦鍑�",
+ "鎯宠杩芥眰姊︽兂",
+ "杩芥眰瀹夌ǔ鐢熸椿",
+ "娓存湜鑾峰緱淇′换",
+ "瀹虫�曡閬楀繕",
+ "鎯宠淇濇寔绉樺瘑",
+ "杩芥眰蹇冪悊骞宠 ",
+ "娓存湜琚噸瑙�",
+ "鎯宠淇鍏崇郴",
+ "瀹虫�曞鐙劅",
+ "杩芥眰鑷垜瀹屽杽",
+ "鎯宠瀹炵幇鐩爣",
+ "娓存湜蹇冪伒鑷敱",
+ "瀹虫�曞け鎺�",
+ "鎯宠鑾峰緱骞哥鎰�",
+ "杩芥眰瀹夊叏鎰�",
+ "娓存湜寰楀埌甯姪",
+ "瀹虫�曡浼ゅ",
+ "鎯宠鑾峰緱鏉冨姏",
+ "杩芥眰鐢熸椿鍝佽川",
+ "娓存湜瀹跺涵娓╂殩",
+ "瀹虫�曡瀛ょ珛",
+ "鎯宠鍒涢�犲杩�",
+ "杩芥眰鎴愬姛璁ゅ彲",
+ "娓存湜鏀瑰彉鐜扮姸",
+ "瀹虫�曡鎶涘純",
+ "鎯宠鑾峰緱鑷敱鏀厤",
+ "杩芥眰鑷垜鎴愰暱",
+ "娓存湜琚悊瑙f敮鎸�",
+ "瀹虫�曞け璐ュ悗鏋�",
+ "鎯宠鑾峰緱骞哥鐢熸椿",
+ "杩芥眰蹇冪悊瀹夋叞",
+ "娓存湜瀹跺涵鍥㈠渾",
+ "瀹虫�曡鑳屽彌",
+ "鎯宠鑾峰緱璐㈠瘜",
+ "杩芥眰鍐呭績骞抽潤"
+ ],
+ "寮犲姏璁惧畾": [
+ "绐佸鍏舵潵鐨勭瀵嗘洕鍏�",
+ "鑳屽彌琚綋浜嬩汉鍙戠幇",
+ "浜插瘑鍏崇郴涓殑璋庤█鎻┛",
+ "闅愮璐骇琚剰澶栧彂鐜�",
+ "浜蹭汉涔嬮棿鐨勮浼氬崌绾�",
+ "鍏抽敭璇佹嵁琚鏀�",
+ "鎰忓鎬�瀛曞鑷村搴姩鑽�",
+ "鍋囩濠氱湡澶嶅悎鐨勭湡鐩�",
+ "闅愯棌鐨勮繃鍘昏鎻湶",
+ "绔炰簤涓殑鏆椾腑鐮村潖",
+ "鎯呮晫绐佺劧鍑虹幇鎸戣",
+ "浜插弸鐨勮儗鍚庢崊鍒�",
+ "鎰忓杞︾ジ寮曞彂椋庢尝",
+ "璇細瀵艰嚧鏈嬪弸鍙嶇洰",
+ "瀛愬コ鍙涢�嗗姞鍓у搴煕鐩�",
+ "绉樺瘑褰曢煶琚叕寮�",
+ "璐骇浜夊ず鎴樼櫧鐑寲",
+ "璋庤█杩炵幆琚媶绌�",
+ "绉樺瘑鎯呬功鏇濆厜",
+ "閲嶈浜虹墿绐佺劧澶辫釜",
+ "瀹跺涵鑱氫細鍙樻垚鎴樺満",
+ "浜蹭汉绐佺劧鎻湶涓戦椈",
+ "澶辨帶鐨勬儏缁垎鍙�",
+ "濠氬鎯呰鎾炶",
+ "浜插瓙鍏崇郴鐨勯噸澶ц鐥�",
+ "娉曞緥绾犵悍灏嗗搴挄瑁�",
+ "绉樺瘑浜ゆ槗琚洕鍏�",
+ "瀹跺涵鎴愬憳鐨勫績鐞嗗穿婧�",
+ "琚瑙g殑琛屼负寮曞彂杩為攣鍙嶅簲",
+ "閲嶈鍐冲畾寮曞彂鍏ㄥ浜夎",
+ "琚仐蹇樼殑鏃ц处琚彮闇�",
+ "鍙岄噸韬唤鏇濆厜",
+ "浜蹭汉鎰忓鎻湶闅愮",
+ "绐佸彂鐤剧梾瀵艰嚧瀹跺涵鐭涚浘",
+ "绉樺瘑鎵嬫満淇℃伅琚彂鐜�",
+ "绮剧鍘嬪姏寮曞彂鐤媯琛屼负",
+ "瀹跺涵鎴愬憳鎰忓鐩搁亣灏村艾鍦洪潰",
+ "涓嶅彲鍛婁汉鐨勪氦鏄撴洕鍏�",
+ "濂藉弸鐨勮皫瑷�鏆撮湶",
+ "鎰忓鍙戠幇浜蹭汉绉樺瘑鎭嬫儏",
+ "鎯呮劅绾犺憶寮曞彂杩為攣鍙嶅簲",
+ "浜蹭汉鑳屽彌瀵艰嚧淇′换宕╁",
+ "浜叉儏涓庡埄鐩婄殑婵�鐑堝啿绐�",
+ "绉樺瘑鎷嶆憚鐨勮棰戞祦鍑�",
+ "铏氬亣璇佹嵁闄峰",
+ "瀹跺涵鎴愬憳涔嬮棿鐨勫績鐞嗘垬浜�",
+ "鍏抽敭鏃跺埢鐨勮儗鍙�",
+ "鎰熸儏鐨勬瀬闄愯�冮獙",
+ "娣辫棌鐨勪粐鎭ㄧ垎鍙�"
+ ],
+ "缁撳眬鏂瑰悜": [
+ "鐮撮暅閲嶅渾锛屾惡鎵嬮潰瀵规湭鏉�",
+ "褰诲簳鍒嗙锛屽悇鑷畨濂�",
+ "鎰忓鎬�瀛曪紝杩庢潵鏂扮敓鍛�",
+ "瀹跺涵鎴愬憳鍜岃В锛岄噸寤轰俊浠�",
+ "浜嬩笟鎴愬姛锛屽搴彉杩�",
+ "濠嗗鍙嶇洰鎴愪粐锛屽鏃忓垎瑁�",
+ "绉樺瘑鏇濆厜锛屽鑷村搴牬瑁�",
+ "鎰忓浜嬫晠寮曞彂鍙嶆�濅笌鏀瑰彉",
+ "鏃ф儏澶嶇噧锛屽嵈娉ㄥ畾鏃犳灉",
+ "鎰熸儏鍗囨俯锛屽濮诲緱鍒颁慨澶�",
+ "瀛愬コ鎴愬绔嬩笟锛屽搴拰璋�",
+ "瀹跺涵璐㈠瘜閲嶇粍锛屽垎閰嶇籂绾�",
+ "浜叉儏琚埄鐩婂啿娣★紝鐤忚繙鍔犳繁",
+ "绉樺瘑鍙岄噸韬唤鎻湶锛岄渿鎯婂叏瀹�",
+ "鏂版垚鍛樺姞鍏ワ紝甯︽潵甯屾湜涓庢寫鎴�",
+ "璇細瑙e紑锛岄噸鏂板缓绔嬫劅鎯�",
+ "绐佸彂鐤剧梾锛屽搴洟缁撲竴鑷�",
+ "鎰熸儏鐮磋锛岃蛋鍚戠濠氳竟缂�",
+ "鍜岃В鍚庣殑鏂板紑濮�",
+ "涓嶅彲璋冨拰鐨勭煕鐩撅紝褰诲簳鍒嗛亾鎵暢",
+ "鐗虹壊鑷垜锛屾垚鍏ㄤ粬浜哄垢绂�",
+ "瀛愬コ鍙嶅彌锛屽搴叧绯荤揣寮�",
+ "鎰忓閬椾骇寮曞彂浜夊ず鎴�",
+ "鏃ц处閲嶆彁锛屾仼鎬ㄦ湭浜�",
+ "绉樺瘑琚彮闇诧紝瀹跺涵娲楃墝",
+ "鍘嗙粡椋庨洦锛屾渶缁堝垢绂忕編婊�",
+ "鎰熸儏娣″寲锛岄�夋嫨鍜屽钩鍒嗘墜",
+ "瀹跺涵鑱氫細閲嶆嬀娓╂儏",
+ "绂诲鍚庝粛淇濇寔鏈嬪弸鍏崇郴",
+ "绐佸鍏舵潵鐨勬浜′簨浠�",
+ "浜嬩笟鎸姌瀵艰嚧瀹跺涵鍗辨満",
+ "鎯呮晫璐ラ湶锛屽か濡诲叧绯诲珐鍥�",
+ "瀹跺涵鎴愬憳绉诲眳娴峰锛岄噸鏂板紑濮�",
+ "鎰熸儏娓愯娓愯繙锛屾贰鍑哄郊姝ょ敓娲�",
+ "濠嗗鐭涚浘瑙e喅锛屽拰鐫︾浉澶�",
+ "绉樺瘑瀛╁瓙韬唤鏇濆厜锛屽紩鍙戞尝婢�",
+ "澶卞幓浜蹭汉鍚庨噸鎷剧敓娲诲媷姘�",
+ "濠氬Щ璧板悜鐮磋锛屽崟浜茬敓娲诲紑濮�",
+ "鍏卞悓闈㈠鍥伴毦锛屾劅鎯呮洿鍧氬浐",
+ "绉樺瘑琚師璋咃紝杩庢潵鏂扮敓娲�",
+ "浜嬩笟鎴愬姛锛屽搴ǔ瀹�",
+ "璇細瀵艰嚧鍐宠锛岄毦浠ヤ慨澶�",
+ "鏃х埍鍥炲綊锛屽紩鍙戞柊绾蜂簤",
+ "鎰熸儏娓愭贰锛岄�夋嫨鏀炬墜",
+ "浜叉儏涓庣埍鎯呯殑鎶夋嫨",
+ "瀹跺涵鎴愬憳鍒嗗眳寮傚湴",
+ "鍜屽ソ濡傚垵锛屾棫鎯呭鐕�",
+ "鎰忓浜嬩欢鏀瑰彉鍛借繍杞ㄨ抗",
+ "绉樺瘑瀛╁瓙琚帴绾�",
+ "瀹跺涵璐㈠瘜琚噸鏂板垎閰�",
+ "娣卞埢鍙嶇渷锛岄噸寤哄搴З搴�",
+ "鎰熸儏鐮磋锛岄�夋嫨鐙嚜鐢熸椿",
+ "瀹跺涵鎴愬憳鎰忓鍜岃В",
+ "浜蹭汉閲嶈仛锛屾俯鎯呮弧婊�",
+ "浜嬩笟杞瀷锛屽甫鏉ユ柊甯屾湜",
+ "鎰熸儏绾犺憶鏈В锛岀户缁籂缂�",
+ "閫夋嫨绂诲紑锛屽紑濮嬫柊鐢熸椿",
+ "瀹跺涵鎴愬憳鎰忓鍘讳笘",
+ "鏃ф仺闅捐В锛屽搴叧绯荤揣寮�",
+ "绉樺瘑琚帺鐩栵紝缁х画闅愯棌",
+ "瀹跺涵鍏崇郴鏀瑰杽锛屾皼鍥村拰璋�",
+ "鎰熸儏娓愭祿锛屾鍏ュ濮绘鍫�",
+ "浜嬩笟澶辫触锛屽搴櫡鍏ュ洶澧�",
+ "鎯呮晫璐ラ��锛屽か濡绘儏娣�",
+ "浜叉儏鐤忚繙锛屽叧绯绘笎杩�",
+ "閲嶇粍瀹跺涵鎴愬憳鍜岃В",
+ "绉樺瘑瀛╁瓙韬唤闅愯棌",
+ "瀹跺涵鎴愬憳鍑鸿蛋锛屽甫鏉ュ彉鏁�",
+ "濠嗗鐭涚浘鍔犲墽",
+ "鎰熸儏鍗囨俯锛岃繋鎺ユ柊鐢熷懡",
+ "浜嬩笟鎴愬姛锛屽搴瘜瑁�",
+ "绉樺瘑琚彮鍙戯紝瀹跺涵鐡﹁В",
+ "閫夋嫨瀹芥仌锛岄噸鏂板紑濮�",
+ "瀹跺涵鎴愬憳绉诲眳鍥藉",
+ "鎰熸儏娓愭贰锛岄�夋嫨鍒嗗紑",
+ "浜叉儏鐮磋锛岄毦浠ヤ慨澶�",
+ "鎰熸儏澶嶅悎锛岃繋鏉ユ柊甯屾湜",
+ "浜嬩笟杞瀷锛屽搴敮鎸�",
+ "鎰忓鎬�瀛曪紝瀹跺涵鏂版垚鍛�",
+ "绉樺瘑鏇濆厜锛屾劅鎯呯牬瑁�",
+ "瀹跺涵鎴愬憳鍥㈢粨涓�鑷�",
+ "閫夋嫨绂诲锛岄噸鏂板鎵惧垢绂�",
+ "鏃ф儏澶嶇噧锛岀煕鐩惧姞鍓�",
+ "浜蹭汉鎰忓鍘讳笘锛屽搴弽鎬�",
+ "鎰熸儏娓愯娓愯繙",
+ "浜嬩笟鎴愬姛锛屽搴編婊�",
+ "绉樺瘑琚帺鐩栵紝缁х画鐢熸椿",
+ "閫夋嫨鍘熻皡锛岄噸寤轰俊浠�",
+ "瀹跺涵鎴愬憳鍜岃В锛岃繋鎺ユ湭鏉�",
+ "鎰熸儏鐮磋锛岀嫭鑷潥寮�",
+ "浜嬩笟闄峰叆浣庤胺锛屽搴敮鎸�",
+ "鎰忓浜嬩欢鏀瑰彉浜虹敓",
+ "閫夋嫨瀹藉锛屽搴垢绂�",
+ "绉樺瘑鎻湶锛屾劅鎯呰�冮獙",
+ "瀹跺涵鎴愬憳鍒嗚",
+ "鎰熸儏鍗囨俯锛屽濮荤ǔ鍥�",
+ "浜嬩笟鎴愬姛锛岀敓娲荤編濂�",
+ "绉樺瘑瀛╁瓙琚帴绾�",
+ "瀹跺涵閲嶇粍锛岃繋鎺ユ寫鎴�",
+ "鎰熸儏娣″寲锛岄�夋嫨鏀炬墜",
+ "浜叉儏鐮磋锛岄毦浠ヤ慨澶�"
+ ],
+ "鍙嶈浆绫诲瀷": [
+ "鎰忔兂涓嶅埌鐨勮韩浠芥彮闇�",
+ "鍏抽敭璇佹嵁琚吉閫�",
+ "鏈�浜插瘑鐨勪汉鑳屽彌",
+ "鏄旀棩浠囨晫鍙樻垚鐩熷弸",
+ "璇細鍖栬В鎴愪负鐪熺浉",
+ "鍋囨鐪熺敓鐨勬儕浜哄弽杞�",
+ "璐㈠瘜绉樺瘑琚殣钘�",
+ "鐪熺浉琚瀵兼垚璋庤█",
+ "绉樺瘑鎭嬫儏鍏紑",
+ "鍙岄噸韬唤鏇濆厜",
+ "浠囨仺鍙樻垚浜嗘繁鎯�",
+ "鏁屼汉绐佺劧鍙樻垚鏁戞槦",
+ "杩囧幓鐨勬仼鎬ㄥ弽琚晳璧�",
+ "浜蹭汉绔熸槸骞曞悗榛戞墜",
+ "鎰忓鎬�瀛曞甫鏉ユ柊甯屾湜",
+ "瀹舵棌绉樺瘑褰卞搷鏁翠釜瀹跺涵",
+ "琛ㄩ潰鍜屽钩涓嬫殫娼秾鍔�",
+ "鍏抽敭浜虹墿澶辫釜鐪熺浉",
+ "閬椾骇鍒嗛厤寮曞彂鎯ㄧ儓鍙嶈浆",
+ "鐪熺浉闅愯棌鍦ㄦ渶涓嶅彲鑳界殑浜鸿韩涓�",
+ "绂诲浜嬫晠鎻紑绉樺瘑",
+ "璇細鍗囩骇鎴愬拰瑙�",
+ "鏃堕棿鍊掓祦寮忕殑璁板繂鍙嶈浆",
+ "浼鑰呰韩浠借鎻┛",
+ "琛ㄩ潰骞哥瀹炲垯鏆楄棌鍗辨満",
+ "澶卞繂瀵艰嚧韬唤閿欎贡",
+ "绉樺瘑鏃ヨ鎻湶鐪熺浉",
+ "濠氬Щ涓殑闅愮鑱旂洘",
+ "鏁屼汉鍙樻垚鏈嬪弸鐨勫弽杞�",
+ "鍏抽敭璇佹嵁绐佺劧娑堝け",
+ "璋庤█琚彮绌垮悗鐨勫ぇ閫嗚浆",
+ "鎰忓鐨勯仐鍢卞唴瀹规敼鍙樺眬鍔�",
+ "鏄旀棩鎭嬩汉鐜拌韩鎺�娉㈡緶",
+ "鑳屽彌鑰呰嚜鎴戞晳璧�",
+ "琚瑙g殑浜鸿瘉鏄庢竻鐧�",
+ "鍏抽敭绾跨储鎰忓鍑虹幇",
+ "绉樺瘑褰曢煶鏇濆厜",
+ "琚殣钘忕殑浜叉儏鐖嗗彂",
+ "涓嶅彲鑳界殑鍚堜綔",
+ "闄峰鑰呴伃閬囧弽鍑�",
+ "鎰忓鎬�瀛曟垚涓哄搴航甯�",
+ "琚仐蹇樼殑鎵胯閲嶆柊鍏戠幇",
+ "璇細瀵艰嚧鐨勬偛鍓ц浆鏈�",
+ "鏆楄棌鐨勭户鎵挎潈涔嬩簤",
+ "鐪熺浉澶х櫧锛岃浼氬啺閲�",
+ "闅愯棌韬唤鐨勬儕浜哄弽杞�",
+ "琚仐寮冭�呴�嗚鎴愬姛",
+ "璇垽寮曞彂鐨勬儏鎰熸尝鍔�",
+ "瀹舵棌绉樺瘑鏀瑰彉鍛借繍",
+ "闄烽槺鍙嶈浆鎴愭晳璧�",
+ "澶辫釜浜哄憳鐨勬儕浜鸿韩浠�",
+ "璋庤█鑳屽悗鐨勭湡鎯呮祦闇�",
+ "鍘熸湰瀵圭珛鑰呮惡鎵嬪叡杩�",
+ "鐖辨儏涓庝粐鎭ㄧ殑鎴忓墽杞崲",
+ "绉樺瘑瀛╁瓙韬唤鏇濆厜",
+ "浠囦汉鍙樻垚淇濇姢鑰�",
+ "琚瑙g殑鑻遍泟褰㈣薄",
+ "鏃堕棿閿欎贡寮曞彂鐨勭湡鐩稿弽杞�",
+ "韬唤浜掓崲寮曞彂娣蜂贡",
+ "鎰忓鍙戠幇鐨勪翰鎯呯航甯�",
+ "琚儗鍙涜�呯殑澶嶄粐璁″垝",
+ "鏁屼汉涔嬮棿鐨勫拰瑙�",
+ "璇細瑙i櫎鍚庣殑骞哥鐢熸椿",
+ "闅愯棌鐨勮储瀵岀嚎绱㈠嚭鐜�",
+ "琚仐蹇樼殑浜叉儏鍐嶇幇",
+ "鍏抽敭鏃跺埢鐨勮嫳闆勬晳缇�",
+ "绉樺瘑鏃ヨ甯︽潵鐨勭湡鐩�",
+ "澶卞繂鑰呮仮澶嶈蹇嗗悗鐨勫弽杞�",
+ "瀹舵棌鎴愬憳鐨勮韩浠戒簰鎹�",
+ "绉樺瘑浼氳鏆撮湶鐪熺浉",
+ "璇鎬х殑璇佹嵁鎻湶",
+ "浜蹭汉涔嬮棿鐨勬剰澶栧拰瑙�",
+ "绉樺瘑淇′欢甯︽潵鐨勫弽杞�",
+ "韬唤鏆撮湶寮曞彂鐨勫啿绐�",
+ "琚櫡瀹宠�呮垚鍔熸礂娓呭啢灞�",
+ "琚仐寮冭�呯殑褰掓潵",
+ "璇細杞寲涓烘劅鎯呭崌娓�",
+ "绉樺瘑褰曞儚鏇濆厜",
+ "瀵圭珛瀹舵棌鐨勮仈濮�",
+ "鍏抽敭浜虹墿鐨勫弻閲嶇敓娲�",
+ "鎰忓鎬�瀛曟垚鏁戣祹濂戞満",
+ "韬唤閿欎贡寮曞彂鐨勭埍鎯呮偛鍓�",
+ "绉樺瘑浜ゆ槗鐨勬洕鍏�",
+ "鏁屼汉鍙嶈鍒╃敤",
+ "瀹跺涵鎴愬憳韬唤閲嶅彔",
+ "閬椾骇绾蜂簤鐨勬儕浜虹粨灞�",
+ "琚瑙g殑浜叉儏鐖嗗彂",
+ "璇細鎴愪负瀹跺涵绾藉甫",
+ "鏄旀棩鎭╂�ㄥ彉鎴愬悎浣�",
+ "闅愯棌鐨勭湡鐩搁�愭笎娴嚭姘撮潰",
+ "鍏抽敭璇佹嵁鎰忓娑堝け",
+ "璋庤█鑳屽悗鐨勭湡鐩告彮绉�",
+ "韬唤鎻湶鍚庣殑鎯呮劅杞姌",
+ "绉樺瘑璁″垝琚瘑鐮�",
+ "鎰忓鐨勮嫳闆勫嚭鐜�",
+ "浜蹭汉涔嬮棿鐨勮浼氭秷闄�",
+ "澶辫釜鑰呭綊鏉ュ甫鏉ラ渿鎯�",
+ "绉樺瘑鎭嬫儏鐨勫叕寮�",
+ "璇垽瀵艰嚧鐨勬儏鎰熷拰瑙�"
+ ],
+ "椋庢牸": [
+ "鍍忓皬绾功鐑笘涓�鏍凤紝鐙楄鍙堟缃笉鑳�",
+ "鍍忚眴鐡f棩璁颁竴鏍风粏鑵昏鍒猴紝灞傚眰閫掕繘",
+ "鍍忔儏鎰熶富鎾彛鎾墽鏈紝3鍒嗛挓涓�涓弽杞�",
+ "鍍忕患鑹哄悙妲藉ぇ浼氾紝璇�熷揩銆佺垎鐐瑰",
+ "鍍忕煭瑙嗛绗竴浜虹О纰庣蹇碉紝浠e叆鎰熷己",
+ "鍍忓井鍗氳秴璇濈垎鏂欒创锛屽甫鐐圭湡瀹炲拰鐙楀甫鎰�",
+ "鍍忓叕浼楀彿鐖嗘鎯呮劅鏂囷紝娓╂煍涓棌鍒╁垉",
+ "鍍忕煡涔庣儹甯栤�滄垜瀚佽繘浜嗕竴涓钁╁搴�濓紝鍐呭鐪熷疄鍙堟瀬闄愭媺鎵�",
+ "鍋囪鏄�滃綋浜嬩汉鍖垮悕鎶曠鈥濓紝寮曞彂璇勮鐙傛疆",
+ "鍐欏緱鍍忓墽鏈垎闀滃ご锛岀洿鎺ュ彲鎷嶇煭鍓�",
+ "鍍忚�佸寳浜儭鍚屽ぇ濡堥棽鑱婏紝骞介粯鎺ュ湴姘�",
+ "鍍�90骞翠唬閮藉競鐖辨儏灏忚锛岀粏鑵绘俯鎯�",
+ "鍍忔柊娴井鍗氱儹鐐硅瘎璁猴紝灏栭攼鐘�鍒�",
+ "鍍忔姈闊冲墽鎯呯煭瑙嗛锛岃妭濂忔槑蹇�",
+ "鍍忓コ鎬ф潅蹇楄璋堝綍锛屾劅鎬т赴瀵�",
+ "鍍忚劚鍙g鍗曞彛鐩稿0锛屽菇榛樺じ寮�",
+ "鍍忕數褰辫В璇达紝鍓ф儏绱у噾",
+ "鍍忔偓鐤戝皬璇达紝灞傚眰璁句紡绗�",
+ "鍍忔硶搴京璁猴紝閫昏緫涓ュ瘑",
+ "鍍忎埂鏉戞晠浜嬶紝鏈村疄鐪熷垏",
+ "鍍忔椂灏氳揪浜烘棩璁帮紝涓�ч矞鏄�",
+ "鍍忓績鐞嗗挩璇㈠笀璁茶堪锛屾繁鍏ュ墫鏋�",
+ "鍍忔极鐢诲鐧斤紝绠�娲佺敓鍔�",
+ "鍍忔氮婕█鎯呭皬璇达紝缁嗚吇鎰熶汉",
+ "鍍忕綉绾㈢洿鎾棿鍚愭Ы锛岀洿鎺ョ妧鍒�",
+ "鍍忚亴鍦哄皬璇达紝鍐茬獊婵�鐑�",
+ "鍍忓巻鍙插皬璇达紝鎯呰妭璺屽畷",
+ "鍍忔牎鍥皬璇达紝闈掓槬娲嬫孩",
+ "鍍忔梾琛屾父璁帮紝椋庢櫙鎻忓啓涓板瘜",
+ "鍍忕敓娲绘劅鎮熼殢绗旓紝鍝茬悊娣卞埢",
+ "鍍忕鎶�璇勮锛岀悊鎬у垎鏋�",
+ "鍍忓搴鸡鐞嗗墽鏈紝鎴忓墽寮犲姏寮�",
+ "鍍忓姩婕В璇达紝杞绘澗骞介粯",
+ "鍍忛兘甯備睛鎺㈠皬璇达紝绱у紶鍒烘縺",
+ "鍍忔儏缁寲鏃ヨ锛岀湡鎯呮祦闇�",
+ "鍍忚瘲姝屾暎鏂囷紝璇█浼樼編",
+ "鍍忕患鑹虹湡浜虹鏃佺櫧锛屾椿娉肩敓鍔�",
+ "鍍忓効绔ユ晠浜嬶紝绠�鍗曟槑蹇�",
+ "鍍忕邯褰曠墖鏃佺櫧锛岀湡瀹炲瑙�",
+ "鍍忔湅鍙嬪湀闀挎枃锛屾儏鎰熸祿鐑�",
+ "鍍忔柊闂绘姤閬擄紝浜嬪疄鍑嗙‘",
+ "鍍忓績鐞嗗璁烘枃锛岀悊璁轰赴瀵�",
+ "鍍忕編椋熻瘎璁猴紝缁嗚妭涓板瘜",
+ "鍍忔憞婊氭瓕璇嶏紝婵�鎯呭洓婧�",
+ "鍍忔父鎴忓墽鎯咃紝鐜幆鐩告墸",
+ "鍍忓箍鍛婃枃妗堬紝鍚稿紩鐪肩悆",
+ "鍍忔儏缁寲鑴卞彛绉�锛岀洿鍑讳汉蹇�",
+ "鍍忔暎鏂囬殢绗旓紝鎰熸�ц嚜鐒�",
+ "鍍忓井鍗氭瀛愭墜锛屽菇榛樿瘷璋�",
+ "鍍忓揩鑺傚缃戝墽锛屽墽鎯呯揣鍑�",
+ "鍍忕埍鎯呭皬璇达紝鐢滀腑甯﹁檺",
+ "鍍忛兘甯備紶璇达紝绁炵璇″紓",
+ "鍍忔帹鐞嗗皬璇达紝鎮康杩捣",
+ "鍍忔氮婕枩鍓э紝杞绘澗鎼炵瑧",
+ "鍍忓績鐞嗘偓鐤戯紝绱у紶鍘嬫姂",
+ "鍍忕幇瀹炰富涔夊皬璇达紝鐪熷疄鍙嶆槧",
+ "鍍忓够鎯冲皬璇达紝鎯宠薄涓板瘜",
+ "鍍忓姳蹇楁晠浜嬶紝绉瀬鍚戜笂",
+ "鍍忓菇榛樼煭鏂囷紝绗戠偣棰戝嚭",
+ "鍍忓崥瀹㈡棩璁帮紝涓汉瑙嗚椴滄槑",
+ "鍍忕綉缁滃皬璇达紝鍓ф儏涓板瘜",
+ "鍍忔儏鎰熻鍧涘彂甯栵紝鐪熸儏鍚愰湶",
+ "鍍忔梾閫旀棩蹇楋紝鐢熷姩缁嗚吇",
+ "鍍忓摬瀛︽暎鏂囷紝鍙戜汉娣辩渷",
+ "鍍忕ぞ浜ゅ獟浣撶煭鏂囷紝瑷�绠�鎰忚祬",
+ "鍍忚澶撮噰璁垮綍锛岀湡瀹炴帴鍦版皵",
+ "鍍忕粡鍏告枃瀛︼紝璇█浼橀泤",
+ "鍍忔紨璁茬锛屾縺鍔变汉蹇�",
+ "鍍忚亴鍦哄叓鍗︼紝鐑荆鍒烘縺",
+ "鍍忓巻鍙茬邯瀹烇紝璧勬枡璇﹀疄",
+ "鍍忔偓鐤戞帹鐞嗗墽鏈紝鐜幆鐩告墸",
+ "鍍忕骞诲皬璇达紝濂囧够鑹插僵",
+ "鍍忚嚜浼狅紝鎯呮劅鐪熸寶",
+ "鍍忚璋堝綍锛屼汉鐗╅矞娲�",
+ "鍍忔皯闂存晠浜嬶紝閫氫織鏄撴噦",
+ "鍍忓績鐞嗗墽锛屾儏缁赴瀵�",
+ "鍍忓弽涔屾墭閭﹀皬璇达紝榛戞殫鏈潵",
+ "鍍忔柊闂荤壒鍐欙紝缁嗚妭鐢熷姩",
+ "鍍忕邯瀹炴枃瀛︼紝鐪熷疄鎰熶汉",
+ "鍍忕敓娲诲皬鍝侊紝骞介粯椋庤叮",
+ "鍍忕綉缁滃悙妲藉笘锛岀洿鐧借緵杈�",
+ "鍍忓摬鐞嗘晠浜嬶紝寮曚汉娣辨��",
+ "鍍忕ぞ浼氳皟鏌ユ姤鍛婏紝鏁版嵁璇﹀疄",
+ "鍍忚嚜鎴戝墫鏋愭枃锛屾儏鎰熺粏鑵�",
+ "鍍忓奖瑙嗗墽瑙h锛岃妭濂忔劅寮�",
+ "鍍忕綉缁滃皬璇寸珷鑺傦紝楂樻疆杩捣",
+ "鍍忚亴鍦虹闂伙紝鍐呭箷鏇濆厜",
+ "鍍忓弽杞偓蹇靛皬璇达紝鎵d汉蹇冨鸡",
+ "鍍忓巻鍙蹭紶濂囷紝娉㈡緶澹様",
+ "鍍忔儏鎰熺垎鏂欏笘锛屽姴鐖嗗惛鐫�",
+ "鍍忎紶缁熸垙鏇诧紝鍞卞康鍋氭墦",
+ "鍍忕綉缁滅患鑹猴紝浜掑姩鎰熷己",
+ "鍍忕洿鎾簰鍔紝鐜板満鎰熷崄瓒�",
+ "鍍忔暎鏂囪瘲锛屾姃鎯呭敮缇�",
+ "鍍忚澶村皬璇达紝鎺ュ湴姘�",
+ "鍍忕骞荤煭绡囷紝鎬濈淮璺宠穬",
+ "鍍忓績鐞嗗垎鏋愭姤鍛婏紝涓撲笟娣卞叆",
+ "鍍忓弽鎬濇棩蹇楋紝鑷渷鐪熻瘹",
+ "鍍忔牎鍥棩璁帮紝绾湡鑷劧",
+ "鍍忓晢鎴樺皬璇达紝璁¤皨绾峰憟",
+ "鍍忔儏鎰熺煭瑙嗛鏂囨锛岀畝娲佹湁鍔�",
+ "鍍忓井鍗氱儹璇勶紝鐘�鍒╃偣璇�",
+ "鍍忎釜浜烘垚闀挎晠浜嬶紝鍔卞織鎰熶汉",
+ "鍍忕鎶�蹇锛屼俊鎭赴瀵�"
+ ],
+ "瀛楁暟": [
+ 2000,
+ 2500,
+ 3000
+ ]
+}
\ No newline at end of file
diff --git a/auto_media_publisher/config/conf_llm.py b/auto_media_publisher/config/conf_llm.py
index 1d169a2..40767be 100644
--- a/auto_media_publisher/config/conf_llm.py
+++ b/auto_media_publisher/config/conf_llm.py
@@ -1,8 +1,12 @@
GOOGLE_API_KEY='AIzaSyAfJkDNUSZrGbJ6AmpQ1_RHX-0IjUegJOU'
GOOGLE_MODEL= "gemini-2.5-flash" #gemini-1.5-flash-latest
GOOGLE_CHAT_MIN_INTERVAL = 3.5
-GOOGLE_GEMINI_TEMPERATURE_MIN = 0.9
-GOOGLE_GEMINI_TEMPERATURE_MAX = 1.2
+GOOGLE_GEMINI_TEMPERATURE_MIN = 0.8
+GOOGLE_GEMINI_TEMPERATURE_MAX = 1.4
+
+GOOGLE_GEMINI_TOPN_MIN = 0.7
+GOOGLE_GEMINI_TOPN_MAX = 0.9
+
TRANSLATE_API_TEMPLATE = (
"https://api.mymemory.translated.net/get?q={prompt}&langpair=zh-CN|en"
@@ -29,15 +33,19 @@
GEMINI_PROMPT_TAG = '''
璇锋牴鎹互涓婂璇濆唴瀹癸紝鐢熸垚 3 鍒� 5 涓浉鍏� TAG锛屾�诲瓧鏁颁笉瓒呰繃 30 涓�俆AG 闇�绠�鐭�佺簿鍑嗕笖鏈夊惛寮曞姏锛岃兘澧炲己浼犳挱鎬у苟鍚稿紩鐢ㄦ埛鍏虫敞銆傚彲缁撳悎鐑棬璇濋銆佹祦琛岃秼鍔挎垨鍐呭鏍稿績鍏抽敭璇嶏紝浣垮叾鏇村叿浜掑姩鎬у拰鐐瑰嚮娆叉湜锛屾渶缁堜互椤垮彿锛堛�侊級闅斿紑銆�
'''
+
#1銆佺湡瀹炶嚜鐒躲�佸瘜鏈夋劅鏌撳姏銆佹墿鍐欏瀷鐨勬敼鍐欓鏍�
GEMINI_PROMPT_INIT_DEFAULT = '''
璇峰皢鎺ヤ笅鏉ユ彁渚涚殑鏂囩珷鍐呭杩涜鍏ㄩ潰鑷劧鐨勬敼鍐欙紝瑕佹眰濡備笅锛�
-璇█椋庢牸鐪熷疄鑷劧锛氶伩鍏嶇敓纭�佹満姊版垨濂楄瘽寮忚〃杈撅紝鏀瑰啓搴斿儚鐪熷疄鐨勪汉鍦ㄥ啓浣滐紝鍏锋湁鍙h鍖栥�佽妭濂忔劅寮虹殑璇█椋庢牸銆�
-琛ㄨ揪瀵屾湁鎰熸煋鍔涳細閫氳繃璁叉晠浜嬨�佽闂�佹瘮鍠汇�佹儏缁寲璇█绛夋柟寮忓寮哄惛寮曞姏锛岃璇昏�呬骇鐢熷叡楦o紝閬垮厤淇℃伅鍫嗙爩鎴栧喎鍐板啺鐨勯檲杩般��
-鍐呭瀹屾暣銆佽〃杈惧鏍凤細鍦ㄤ笉鏀瑰彉鍘熸枃鏍稿績淇℃伅鐨勫墠鎻愪笅锛屽敖鍙兘鑴辩鍘熷鍙ュ紡缁撴瀯锛岄�傚綋鍔犲叆琛ュ厖瑙嗚銆佹渚嬨�佹暟鎹�佸姣斿垎鏋愮瓑锛屼赴瀵屽唴瀹规繁搴︺��
--鎵╁睍鍒�3000瀛椾互涓婏紙濡傚師鏂囪緝鐭級锛氭墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
+-濡傚師鏂囪緝鐭紝鎵╁睍鍒�3000瀛椾互涓娿�傛墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
-淇濇寔鍘熷鏃堕棿銆佹暟瀛楀噯纭笉鍙樸��
-缁撴瀯娓呮櫚銆佹钀借鎺ヨ嚜鐒讹細鏁翠綋鏂囩珷搴斿叿澶囪壇濂界殑闃呰鑺傚鍜岄�昏緫娴佺晠搴︼紝閫傚悎骞磋交璇昏�呬笌鏅�氬ぇ浼楅槄璇汇��
+-杈撳嚭鍐呭璇锋寜閫昏緫鎷嗗垎涓哄娈电煭灏忔钀斤紙姣忔 2锝�4 鍙ワ級锛屼笉瑕佸悎骞朵负涓�鏁存锛�
+-濡傞亣闀垮彞锛岃閫傚綋鏂彞锛屾彁楂樺彲璇绘�э紱
+-姣忔鍐呭搴旈�傚悎鎵嬫満绔槄璇伙紝渚夸簬瑙嗚鍋滈】鍜屾粦鍔ㄦ祻瑙堬紱
杈撳嚭瑕佹眰锛�
- 閫愭杈撳嚭鏀瑰啓鍚庣殑鍐呭锛堟垜灏嗛�愭鍙戦�佸師鏂囷級
@@ -54,6 +62,11 @@
- 閬垮厤浣跨敤鎰熸�с�佺吔鎯呯殑璇█锛屽己璋冨瑙傝〃杈撅紱
- 缁撴瀯娓呮櫚銆侀噸鐐圭獊鍑猴紝鍦ㄤ笉鏀瑰彉鍘熸枃鏍稿績淇℃伅鐨勫墠鎻愪笅锛屽敖鍙兘鑴辩鍘熷鍙ュ紡缁撴瀯锛�
- 淇濇寔鍘熸枃鐨勪簨瀹炪�佹椂闂淬�佹暟鎹噯纭笉鍙橈紱
+- 濡傚師鏂囪緝鐭紝鎵╁睍鍒�3000瀛椾互涓娿�傛墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
+- 缁撴瀯娓呮櫚銆佹钀借鎺ヨ嚜鐒讹細鏁翠綋鏂囩珷搴斿叿澶囪壇濂界殑闃呰鑺傚鍜岄�昏緫娴佺晠搴︼紝閫傚悎骞磋交璇昏�呬笌鏅�氬ぇ浼楅槄璇汇��
+- 杈撳嚭鍐呭璇锋寜閫昏緫鎷嗗垎涓哄娈电煭灏忔钀斤紙姣忔 2锝�4 鍙ワ級锛屼笉瑕佸悎骞朵负涓�鏁存锛�
+- 濡傞亣闀垮彞锛岃閫傚綋鏂彞锛屾彁楂樺彲璇绘�э紱
+- 姣忔鍐呭搴旈�傚悎鎵嬫満绔槄璇伙紝渚夸簬瑙嗚鍋滈】鍜屾粦鍔ㄦ祻瑙堬紱
杈撳嚭瑕佹眰锛�
- 閫愭杈撳嚭鏀瑰啓鍚庣殑鍐呭锛堟垜灏嗛�愭鍙戦�佸師鏂囷級
- 鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勨�濄�佲�滆繖鏄鍑犳鏀瑰啓鈥濄�佲�滆缁х画鍙戦�佷笅涓�娈碘�濈瓑鍐呭銆�
@@ -69,6 +82,11 @@
- 鍙�傚害鍔犲叆閲戝彞銆佸姣斻�佸じ寮犺姘斻�佺儹闂ㄨ瘽棰樸�佺綉缁滄祦琛岃锛�
- 寮曞璇昏�呯偣璧炪�佽浆鍙戙�佽瘎璁猴紝浣嗕笉褰卞搷鍘熸枃涓绘棬锛�
- 淇濇寔鍘熷鏃堕棿銆佹暟瀛楀噯纭笉鍙橈紱
+- 濡傚師鏂囪緝鐭紝鎵╁睍鍒�3000瀛椾互涓娿�傛墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
+- 缁撴瀯娓呮櫚銆佹钀借鎺ヨ嚜鐒讹細鏁翠綋鏂囩珷搴斿叿澶囪壇濂界殑闃呰鑺傚鍜岄�昏緫娴佺晠搴︼紝閫傚悎骞磋交璇昏�呬笌鏅�氬ぇ浼楅槄璇汇��
+- 杈撳嚭鍐呭璇锋寜閫昏緫鎷嗗垎涓哄娈电煭灏忔钀斤紙姣忔 2锝�4 鍙ワ級锛屼笉瑕佸悎骞朵负涓�鏁存锛�
+- 濡傞亣闀垮彞锛岃閫傚綋鏂彞锛屾彁楂樺彲璇绘�э紱
+- 姣忔鍐呭搴旈�傚悎鎵嬫満绔槄璇伙紝渚夸簬瑙嗚鍋滈】鍜屾粦鍔ㄦ祻瑙堬紱
杈撳嚭鏍煎紡锛�
- 閫愭杈撳嚭鏀瑰啓鍚庣殑鍐呭锛堟垜灏嗛�愭鍙戦�佸師鏂囷級
- 鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勨�濄�佲�滆繖鏄鍑犳鏀瑰啓鈥濄�佲�滆缁х画鍙戦�佷笅涓�娈碘�濈瓑鍐呭銆�
@@ -84,6 +102,11 @@
- 娉ㄩ噸鐭ヨ瘑浼犻�掋�侀�昏緫閫氶『锛岄�傚悎鐢ㄤ綔绉戞櫘鍏紬鍙锋垨鐭ヤ箮鏂囩珷锛�
- 閫傚綋澧炲姞鑳屾櫙鐭ヨ瘑銆佸巻鍙茶剦缁滄垨鐢熸椿鍏宠仈锛�
- 淇濇寔浜嬪疄鍜屾暟鎹噯纭笉鍙橈紱
+- 濡傚師鏂囪緝鐭紝鎵╁睍鍒�3000瀛椾互涓娿�傛墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
+- 缁撴瀯娓呮櫚銆佹钀借鎺ヨ嚜鐒讹細鏁翠綋鏂囩珷搴斿叿澶囪壇濂界殑闃呰鑺傚鍜岄�昏緫娴佺晠搴︼紝閫傚悎骞磋交璇昏�呬笌鏅�氬ぇ浼楅槄璇汇��
+- 杈撳嚭鍐呭璇锋寜閫昏緫鎷嗗垎涓哄娈电煭灏忔钀斤紙姣忔 2锝�4 鍙ワ級锛屼笉瑕佸悎骞朵负涓�鏁存锛�
+- 濡傞亣闀垮彞锛岃閫傚綋鏂彞锛屾彁楂樺彲璇绘�э紱
+- 姣忔鍐呭搴旈�傚悎鎵嬫満绔槄璇伙紝渚夸簬瑙嗚鍋滈】鍜屾粦鍔ㄦ祻瑙堬紱
杈撳嚭鏂瑰紡锛�
- 閫愭杈撳嚭鏀瑰啓鍚庣殑鍐呭锛堟垜灏嗛�愭鍙戦�佸師鏂囷級
- 鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勨�濄�佲�滆繖鏄鍑犳鏀瑰啓鈥濄�佲�滆缁х画鍙戦�佷笅涓�娈碘�濈瓑鍐呭銆�
@@ -99,6 +122,11 @@
- 鍙互鍔犲叆鍦烘櫙鎻忚堪銆佸績鐞嗘弿鍐欍�佸璇濈瓑鏂瑰紡澧炲己浠e叆鎰燂紱
- 閫昏緫鍚堢悊銆佸唴瀹瑰畬鏁达紝閫傚綋鏀瑰啓鍘熸枃缁撴瀯锛�
- 淇濈暀鍘熸湁鏃堕棿銆佹暟瀛楃瓑鍑嗙‘鍐呭锛�
+- 濡傚師鏂囪緝鐭紝鎵╁睍鍒�3000瀛椾互涓娿�傛墿鍐欐椂闇�鑷劧澧炲姞鍐呭灞傛锛屾嫆缁濋噸澶嶅爢瀛楁垨鏃犳晥鎵╁睍銆�
+- 缁撴瀯娓呮櫚銆佹钀借鎺ヨ嚜鐒讹細鏁翠綋鏂囩珷搴斿叿澶囪壇濂界殑闃呰鑺傚鍜岄�昏緫娴佺晠搴︼紝閫傚悎骞磋交璇昏�呬笌鏅�氬ぇ浼楅槄璇汇��
+- 杈撳嚭鍐呭璇锋寜閫昏緫鎷嗗垎涓哄娈电煭灏忔钀斤紙姣忔 2锝�4 鍙ワ級锛屼笉瑕佸悎骞朵负涓�鏁存锛�
+- 濡傞亣闀垮彞锛岃閫傚綋鏂彞锛屾彁楂樺彲璇绘�э紱
+- 姣忔鍐呭搴旈�傚悎鎵嬫満绔槄璇伙紝渚夸簬瑙嗚鍋滈】鍜屾粦鍔ㄦ祻瑙堬紱
杈撳嚭鏂瑰紡锛�
- 閫愭杈撳嚭鏀瑰啓鍚庣殑鍐呭锛堟垜灏嗛�愭鍙戦�佸師鏂囷級
- 鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勨�濄�佲�滆繖鏄鍑犳鏀瑰啓鈥濄�佲�滆缁х画鍙戦�佷笅涓�娈碘�濈瓑鍐呭銆�
@@ -116,109 +144,80 @@
"storytelling": GEMINI_PROMPT_INIT_STORYTELLING
}
+DEFAULT_PREFIX_MAP = [
+ "鍦ㄨ繖鐗囨俯鏌旂殑鏂囧瓧涓栫晫閲岋紝鎴戞効涓庝綘涓�鍚屾劅鍙楄鑰呬滑鐨勫枩鎬掑搥涔愩�佹偛娆㈢鍚堬紝璁╂瘡涓�浠芥儏缁兘琚鐪熷�惧惉銆�",
+ "杩欎竴椤碉紝璁板綍鐨勪笉鍙槸鏁呬簨锛屾洿鏄垚鍗冧笂涓囪鑰呯殑蹇冧簨锛屾垜鎰挎妸杩欎唤鐪熸寶涓庢劅鍔ㄤ笌浣犲垎浜��",
+ "姣忎竴娆″姩绗旓紝閮芥槸鎯虫妸璇昏�呭績涓渶鏌旇蒋鐨勯偅閮ㄥ垎浼犻�掔粰浣犮�傛効浣犲湪杩欓噷璇绘噦浠栦滑锛屼篃璇绘噦鑷繁銆�",
+ "鎯呮劅浠庝笉瀛ゅ崟锛屽湪杩欓噷锛屾垜浠叡鍚岃蛋杩戣鑰呯殑鍐呭績涓栫晫锛屼篃璁稿叾涓竴娈佃瘽锛屽氨钘忕潃浣犵殑褰卞瓙銆�",
+ "涓庝綘鍒嗕韩鐨勪笉鍙槸鏂囧瓧锛岃�屾槸鍗冪櫨涓鑰呯粡鍘嗚繃鐨勭埍涓庡け钀姐�佹垚闀夸笌閲嶉�紝杩欎竴鍒囷紝閮藉�煎緱琚惉瑙併��",
+ "鎴戜滑鏀堕泦姣忎竴涓俯鏌旂湡瀹炵殑鎯呮劅鐗囨锛屾嫾鍑戞垚涓�骞呭箙鏈夎鏈夎倝鐨勫浘鏅紝閭�浣犱竴鍚岃亞鍚笌鎰熷彈銆�",
+ "杩欎笉鍙槸涓�绡囨枃绔狅紝鏇村儚鏄竴灏佸啓缁欐瘡涓効鎰忛┗瓒冲�惧惉鐨勪綘浠殑蹇冪伒淇$銆�",
+ "甯屾湜浣犺兘鍦ㄨ繖閲岋紝鐪嬪埌璇昏�呯殑鎯呯华锛屼篃鎵惧埌鑷繁鐨勪竴涓濆叡楦o紝璁╄繖浠借繛缁撲笉姝簬鏂囧瓧銆�",
+ "杩欐鏂囧瓧鎵胯浇浜嗗お澶氱湡鎯呭疄鎰燂紝瀹冧滑鏉ヨ嚜涓�鍙屽弻鐪熷疄鐨勭溂鐫涖�佷竴棰楅璺冲姩鐨勫績锛屼笌浣犲叡浜��",
+ "鎰夸綘鍦ㄦ帴涓嬫潵鐨勬枃瀛椾腑锛屼笉鍙槸璇绘晠浜嬶紝鏇磋兘鎰熷彈鍒伴偅浜涜璁ょ湡瀵瑰緟鐨勬儏缁拰娣卞埢鐨勪汉鎬с��"
+]
+
+DEFAULT_SURFIX_MAP = [
+ "鎰熻阿浣犳効鎰忚姳鏃堕棿璇诲畬杩欎簺鏂囧瓧锛岃繖涓栦笂鏈�娓╂煍鐨勫洖棣堬紝鑾繃浜庝綘鐨勪竴涓偣璧炪�佸叧娉ㄦ垨鐣欒█锛屾垜浠湪杩欓噷绛変綘銆�",
+ "濡傛灉浣犱篃鏇炬湁绫讳技鐨勫績鎯咃紝甯屾湜浠婂ぉ鐨勫唴瀹硅兘甯︾粰浣犱竴鐐规俯鏆栧拰鍔涢噺銆傛杩庣偣璧炪�佸垎浜紝璁╂洿澶氫汉鍚杩欎唤鎯呯华銆�",
+ "姣忎竴娆″啓浣滐紝閮芥槸涓庢湭鐭ョ殑浣犱滑鐨勪竴娆″績鐏靛璇濄�傝嫢浣犺鍒颁簡杩欓噷锛岀湡璇氬湴鎰熻阿浣狅紝涔熼個璇蜂綘涓�璧蜂紶鎾繖浠藉叡楦c��",
+ "鎰熻阿浣犵殑闃呰锛岃繖浜涙枃瀛楃殑鎰忎箟锛屽洜涓烘湁浣犲湪璇伙紝鎵嶅彉寰楁洿瀹屾暣銆傚鏋滃枩娆紝鍒繕浜嗙偣璧炲拰鍏虫敞锛屾効鎴戜滑甯哥浉瑙併��",
+ "鎰夸綘鍦ㄨ繖绡囨枃绔犻噷鎵惧埌涓�涓濇叞钘夛紝鍝�曞彧鏄墖鍒荤殑鍏遍福銆傝阿璋綘璇诲埌鏈�鍚庯紝浣犵殑鐐硅禐涓庡叧娉ㄦ槸鎴戠户缁垎浜殑鍔ㄥ姏銆�",
+ "璇昏�呯殑姣忎竴浠芥儏缁兘鏄嫭涓�鏃犱簩鐨勶紝鎰熻阿浣犳効鎰忛櫔鎴戜竴璧锋劅鍙椾笌璁板綍銆傚鏋滃枩娆紝璇风偣璧炪�佸叧娉ㄣ�佸垎浜繖浠藉績鎰忋��",
+ "鑳戒笌浣犲湪鏂囧瓧涓浉閬囷紝鏄竴浠跺垢杩愮殑浜嬨�傝嫢浣犺寰椾粖澶╃殑鍐呭瑙﹀姩浜嗕綘锛屽氨璇风敤涓�涓偣璧炪�佷竴鏉¤瘎璁轰笌鎴戝璇濄��",
+ "鏂囧瓧鍐欏畬浜嗭紝浣嗗叡楦d笉浼氱粨鏉熴�傛劅璋綘璁ょ湡璇诲埌鏈�鍚庯紝浣犵殑姣忎竴娆′簰鍔紝閮芥槸鎴戠户缁啓涓嬪幓鐨勫媷姘斻��",
+ "濡傛灉浣犲湪杩欎簺鏂囧瓧涓湅鍒拌嚜宸辩殑褰卞瓙锛屾垨鎰熷彈鍒颁粬浜虹殑蹇冭烦锛岄偅鎴戝氨涓嶆浘瀛ょ嫭銆傝阿璋綘锛屾効浣犲父鏉ャ��",
+ "鐪熷績鎰熻阿浣犻櫔鎴戣瀹岃繖娈垫晠浜嬶紝濡傛灉杩欑瘒鏂囩珷璁╀綘鏈夋墍瑙﹀姩锛岄偅璇风粰瀹冧竴鐐瑰皬灏忓洖搴斿惂銆傜偣璧炪�佸叧娉ㄣ�佸垎浜紝閮芥槸鏈�濂界殑鏀寔銆�"
+]
-
-'''
-鏈�缁堜紭鍖栧悗鐨勬彁绀鸿瘝锛�
-璇烽噸鍐欒繖绡囨枃绔狅紝浣垮叾鏇村姞鑷劧銆佹祦鐣咃紝骞跺叿鏈夌湡瀹炵殑浜哄伐鍐欎綔椋庢牸銆傞伩鍏嶄换浣曠敓纭�佸埢鏉裤�佹満姊板寲鐨勮〃杈撅紝灏ゅ叾鏄偅绉嶄竴鐪嬪氨鍍� AI 鐢熸垚鐨勭敓纭彞寮忋�傝浣跨敤鏇村姞鍙h鍖栥�佸瘜鏈夎〃鐜板姏鐨勮瑷�锛屽儚鐪熸鐨勪汉鍦ㄤ氦娴侊紝鑰屼笉鏄敓纭湴鍫嗙爩淇℃伅銆傚彞瀛愮粨鏋勮澶氭牱鍖栵紝閬垮厤杩囧害閲嶅鍥哄畾妯″紡锛屼娇鍐呭鏇村叿鑺傚鎰熷拰灞傛鎰熴�傛枃绔犲簲鍏锋湁浜插拰鍔涳紝骞惰兘寮曞彂璇昏�呯殑鎯呮劅鍏遍福銆�
-璇峰敖鍙兘鍘婚噸鍘熸枃鐨勮〃杩帮紝浣嗙‘淇濇牳蹇冧俊鎭笉鍙橈紝閫傚綋娣诲姞鏂扮殑瑙嗚鍜屼俊鎭紝浣挎枃绔犵殑鍐呭鏇村姞瀹屾暣鍜屽紩浜哄叆鑳溿�傛枃绔犻渶瑕佽瀺鍚堝菇榛樻劅銆佹晠浜嬪寲鐨勫彊杩版柟寮忋�佷笓涓氭�ц〃杈句互鍙婄敓娲诲寲鐨勮姘旓紝浣垮叾鏃㈢敓鍔ㄦ湁瓒o紝鍙堝瘜鏈夋潈濞佹�у拰浜插拰鍔涖�傚彲浠ラ�傚綋鍔犲叆闅愬柣銆佹瘮鍠汇�佷簰鍔ㄥ紡鎻愰棶鎴栧皬鏁呬簨锛岃璇昏�呮洿瀹规槗浠e叆锛岃�屼笉鏄儚鍦ㄨ涓�绡囧喎鍐板啺鐨勬姤鍛娿��
-鏂囩珷涓殑鎵�鏈夋椂闂村拰鏁板瓧蹇呴』淇濇寔涓嶅彉锛屼笉鑳戒慨鏀广�傚浜庣瘒骞呰緝鐭殑鏂囩珷锛岃鎵╁啓鍐呭锛屼娇鏈�缁堟枃绔犲瓧鏁颁笉灏戜簬 3000 瀛椼�傛墿鍐欐椂瑕侀�氳繃涓板瘜鐨勪俊鎭�佸叿浣撶殑鍦烘櫙鎻忚堪銆佹渚嬪垎鏋愩�佺敤鎴锋晠浜嬨�佸姣旇鐐广�佹暟鎹垎鏋愮瓑鏂瑰紡鑷劧鍦板鍔犳枃绔犳繁搴︼紝鑰屼笉鏄畝鍗曢噸澶嶆垨鍫嗙爩璇嶆眹銆傞伩鍏嶁�滃埢鎰忓噾瀛椻�濈殑鎰熻锛岀‘淇濇枃绔犲唴瀹瑰厖瀹炰笖娴佺晠銆�
-姝ゅ锛岃纭繚鏂囩珷缁撴瀯娓呮櫚锛屾钀戒箣闂磋繃娓¤嚜鐒讹紝璇昏�呴槄璇绘椂鎰熷埌杞绘澗涓旇繛璐�傜洰鏍囪鑰呮槸[鏅�氬ぇ浼椻�濓紝鈥滃勾杞讳汉鈥漖锛屾枃绔犻渶绗﹀悎鍙戝竷鏍囧噯锛屾縺鍙戣鑰呯偣鍑汇�佹�濊�冩垨琛屽姩銆傛渶缁堢殑鏂囩珷搴斿睍鐜扮湡瀹炴劅銆佸彲淇″害鍜屾儏鎰熸繁搴︼紝鑰岄潪鐪嬭捣鏉ュ儚鏈烘鍖栫敓鎴愮殑鍐呭銆�
-
-
-鎻愮ず璇� 1锛氱敓鎴愬惛寮曚汉鐨� Post 鏍囬
-瑕佹眰锛�
-
-绠�鐭湁鍔涳紝鎬诲瓧鏁板皯浜� 64 涓��
-寮曞彂濂藉锛岃浜烘兂鐐硅繘鍘讳簡瑙f洿澶氥��
-鍙互浣跨敤鎮康銆佸姣斻�佹暟瀛椼�侀棶棰樼瓑鎶�宸э紝渚嬪锛氣�滀綘缁濆鎯充笉鍒帮紝杩欎欢浜嬪眳鐒舵槸鐪熺殑锛佲��
-濡傛灉閫傜敤锛屽彲缁撳悎鎯呮劅銆佷簤璁�佺儹闂ㄨ瘽棰樼瓑鍏冪礌锛屽寮哄惛寮曞姏銆�
-涓嶅繀瀹屽叏鐓ф惉鍐呭锛屽彲閫傚綋鍒涢�犳�ф鎷紝鍙鑳藉惛寮曠偣鍑诲嵆鍙��
-鎻愮ず璇嶏細
-"璇锋牴鎹互涓嬫枃瀛楋紝鎬荤粨涓�涓紩浜哄叆鑳滅殑 Post 鏍囬锛岀‘淇濇�诲瓧鏁颁笉瓒呰繃 64 涓�傛爣棰橀渶瑕佺畝鐭湁鍔涳紝寮曞彂濂藉蹇冿紝璁╀汉蹇嶄笉浣忔兂鐐硅繘鍘婚槄璇汇�傚彲浠ヤ娇鐢ㄦ偓蹇点�佸姣斻�佹暟瀛椼�侀棶棰樼瓑鎶�宸э紝浣垮叾鏇村叿鍚稿紩鍔涖�傛棤闇�涓ユ牸澶嶈堪鍘熸枃锛屽彧瑕佽浜烘劅鍏磋叮鍗冲彲銆傛棤闇�瑙i噴鎴栧垎鏋愶紝鐩存帴杈撳嚭鏍囬鍗冲彲銆備互涓嬫槸鍘熸枃锛�"
-
-
-鎻愮ず璇� 2锛氱敓鎴愬惛寮曚汉鐨勬弿杩版枃鏈紙涓嶈秴杩� 100 瀛楋級
-瑕佹眰锛�
-
-鐭皬绮炬倣锛堚墹100 瀛楋級锛屼絾鑳藉揩閫熷惛寮曠敤鎴锋敞鎰忓姏銆�
-鍙互涓嶅畬鍏ㄥ熀浜庡唴瀹癸紝鍙鑳借浜烘劅鍏磋叮灏辫銆�
-鍙娇鐢ㄢ�滃埗閫犳偓蹇碘�濃�滃紩鍙戞儏缁�濃�滄彁鍑洪棶棰樷�濃�滃己璋冩儕鍠�/鍐茬獊鈥濈瓑鎶�宸с��
-璇皵鍙伒娲伙紝骞介粯銆侀渿鎯娿�佺绉樸�佷笓涓氱瓑鍧囧彲銆�
-閬垮厤鏅�氭棤鑱婄殑鎻忚堪锛屽姏姹傜嫭鐗广�佹柊棰栥�佸嬀浜恒��
-鎻愮ず璇嶏細
-"璇锋牴鎹互涓嬫枃瀛楋紝鐢熸垚涓�娈靛惛寮曚汉鐨勬弿杩帮紙涓嶈秴杩� 100 瀛楋級銆傝繖娈垫弿杩颁笉闇�瑕佷弗鏍煎杩板師鏂囷紝浣嗗繀椤昏兘璁╄鑰呬骇鐢熷ソ濂囧績锛屾兂瑕佺偣杩涘幓闃呰銆傚彲浠ュ埗閫犳偓蹇点�佸紩鍙戞儏缁�佹彁鍑洪棶棰樸�佸己璋冩儕鍠滄垨鍐茬獊锛屼娇鍏舵洿鍏峰惛寮曞姏銆傝姘斿彲浠ュ菇榛樸�侀渿鎯娿�佺绉樻垨涓撲笟鍖栥�備互涓嬫槸鍘熸枃锛�"
-
-**鎻愮ず璇� 3锛氱敓鎴愬惛寮曚汉鐨� TAG**
-
-**瑕佹眰锛�**
-1. **鐢熸垚 3 鍒� 5 涓浉鍏� TAG**锛屾�诲瓧鏁颁笉瓒呰繃 30 涓��
-2. **TAG 瑕佺畝鐭�佺簿鍑嗐�佸叿鏈夊惛寮曞姏**锛岄伩鍏嶈繃闀挎垨杩囦簬鏅�氱殑璇嶆眹銆�
-3. **鍙互缁撳悎鐑棬璇濋銆佹祦琛岃秼鍔挎垨鍐呭鏍稿績鍏抽敭璇�**锛屽寮轰紶鎾�с��
-4. **閫傚綋浣跨敤鎯呯华鍖栥�佹偓蹇靛寲銆佷簰鍔ㄦ�у己鐨勮瘝姹�**锛屼緥濡� #闇囨儕鍙戠幇銆�#杩欎篃澶叿浜嗐��#蹇呯湅骞茶揣銆�
-
-**鎻愮ず璇嶏細**
-*"璇锋牴鎹互涓嬫枃瀛楋紝鐢熸垚 3 鍒� 5 涓浉鍏� TAG锛屾�诲瓧鏁颁笉瓒呰繃 30 涓�俆AG 闇�绠�鐭�佺簿鍑嗕笖鏈夊惛寮曞姏锛岃兘澧炲己浼犳挱鎬у苟鍚稿紩鐢ㄦ埛鍏虫敞銆傚彲缁撳悎鐑棬璇濋銆佹祦琛岃秼鍔挎垨鍐呭鏍稿績鍏抽敭璇嶏紝浣垮叾鏇村叿浜掑姩鎬у拰鐐瑰嚮娆叉湜銆備互涓嬫槸鍘熸枃锛�"*
-
-
-**鎻愮ず璇� 4锛氱敓鎴愰珮绮惧害鍥剧墖鐨� Stable Diffusion Prompt**
-
-**瑕佹眰锛�**
-1. **鍩轰簬鏂囩鏍稿績鍐呭鐢熸垚涓�寮犻珮璐ㄩ噺鍥剧墖**锛岀‘淇濅富棰樺尮閰嶃��
-2. **浣跨敤璇︾粏鐨勮瑙夋弿杩�**锛屽寘鎷幆澧冦�佸厜鐓с�佹皼鍥淬�佷汉鐗�/鐗╀綋缁嗚妭绛夛紝澧炲己鐢婚潰鎰熴��
-3. **纭繚鐢婚潰椋庢牸绗﹀悎鍐呭闇�姹�**锛屽鍐欏疄銆佽禌鍗氭湅鍏嬨�佹补鐢婚銆佸姩婕绛夈��
-4. **鍙互缁撳悎鑹烘湳鏋勫浘鍘熷垯**锛屽榛勯噾姣斾緥銆佸姩鎬佹瀯鍥撅紝浣跨敾闈㈡洿鍏疯瑙夊啿鍑诲姏銆�
-5. **閫傚綋鍔犲叆鎯呮劅鍏冪礌**锛岃鍥剧墖鏇村叿鏁呬簨鎬ф垨鎯呯华鎰熸煋鍔涖��
-6. **濡傛灉娑夊強鐗瑰畾鍘嗗彶/鏂囧寲/绉戞妧鑳屾櫙锛岄渶瑕佸噯纭綋鐜�**锛岄伩鍏嶉�氱敤鎬ц繃寮哄鑷寸殑妯$硦琛ㄨ揪銆�
-
-**鎻愮ず璇嶏細**
-*"璇峰熀浜庝互涓嬫枃绋垮唴瀹癸紝鐢熸垚涓�娈甸珮绮惧害鐨� Stable Diffusion 鍥剧墖鎻忚堪銆傛弿杩板簲鍖呮嫭鐜銆佷汉鐗�/鐗╀綋銆佸厜鐓с�佹皼鍥寸瓑缁嗚妭锛屼娇鐢婚潰鐢熷姩涓旂鍚堜富棰樸�傝浣跨敤鍏蜂綋鐨勮瑙夎瘝姹囷紝濡傗�樻煍鍜岀殑鏅ㄥ厜娲掑湪鍙よ�佺殑鏈ㄦ涓娾�欐垨鈥橀湏铏圭伅鏄犵収鐫�娼箍鐨勮禌鍗氭湅鍏嬭閬撯�欍�傜‘淇濋鏍兼槑纭紙濡傚啓瀹炪�佸够鎯炽�佹湭鏉ヤ富涔夛級锛屽苟浼樺寲鏋勫浘锛屼娇鍥剧墖鍏锋湁寮虹儓鐨勮瑙夊啿鍑诲姏銆備互涓嬫槸鏂囩锛�"*
-
-
-鍙傛暟 鎺ㄨ崘鍊� 璇存槑
-妯″瀷锛圕heckpoint锛� 鏍规嵁闇�姹傞�夋嫨锛屽SDXL, RealisticVision, DreamShaper 褰卞搷鐢婚锛屽啓瀹炲彲閫� RealisticVision锛屼簩娆″厓鍙�� Anything V5/V6
-閲囨牱鏂规硶锛圫ampler锛� DPM++ 2M Karras 鎺ㄨ崘 DPM++ 绯诲垪锛屽钩琛¢�熷害鍜岃川閲�
-閲囨牱姝ユ暟锛圫teps锛� 30~50 浣庢鏁扮敓鎴愰�熷害蹇紝楂樻鏁扮粏鑺傛洿涓板瘜
-鍒嗚鲸鐜囷紙Resolution锛� 768x768 鎴� 1024x1024 鏂瑰舰閫傚悎閫氱敤锛屽骞� 1024x576 閫傚悎鐢靛奖鎰�
-鎻愮ず璇嶅紩瀵肩郴鏁帮紙CFG Scale锛� 7~10 鎺у埗 Prompt 褰卞搷鍔涳紝杩囬珮浼氫娇鐢婚潰杩囧害閿愬寲
-绉嶅瓙锛圫eed锛� -1锛堥殢鏈猴級鎴栧浐瀹氱瀛� 闅忔満鐢熸垚涓嶅悓鍥撅紝鍥哄畾绉嶅瓙澶嶇幇鐩稿悓鍥�
-鎵归噺鐢熸垚 1~4 涓�娆$敓鎴愬寮狅紝鏂逛究瀵规瘮閫夋嫨
-Hires. Fix锛堥珮娓呬慨澶嶏級 寮�鍚紙Upscale 1.5x~2x锛� 鐢ㄤ簬鎻愬崌缁嗚妭锛岄伩鍏嶆ā绯�
-鉁� 2. 閫氱敤璐熼潰鎻愮ず璇嶏紙Negative Prompt锛�
-璐熼潰鎻愮ず璇嶅彲浠ュ浐瀹氫娇鐢紝閬垮厤甯歌闂锛屽鐣稿舰銆佷綆璐ㄩ噺銆佸鎬殑濮垮娍绛夈��
-
-鍥哄畾璐熼潰鎻愮ず璇嶏紙鎺ㄨ崘锛夛細
-
-arduino
-澶嶅埗
-缂栬緫
-(worst quality, low quality, blurry, bad anatomy, deformed, extra limbs, missing fingers, disfigured, lowres, overexposed, watermark, nsfw, text, cropped, distorted face, jpeg artifacts, poorly drawn hands, malformed fingers, unnatural body, bad proportions)
-濡傛灉浣犵殑鍥剧墖瑕佹眰瓒呭啓瀹烇紙濡備汉鐗╃収鐗囷級锛屽彲浠ュ啀鍔犱笂锛�
-
-scss
-澶嶅埗
-缂栬緫
-(cartoon, anime, 3d render, cgi, sketch, painting)
-鉁� 3. 鍏朵粬浼樺寲閫夐」锛堝彲閫夛級
-Refiner锛堢簿缁嗗寲妯″瀷锛孲DXL 鎺ㄨ崘锛夛細浣跨敤 SDXL 鏃讹紝鍙紑鍚� Refiner 浠ヤ紭鍖栫粏鑺傘��
-ControlNet锛堝彲閫夛級锛氬鏋滀綘鎯宠鏇寸簿鍑嗘帶鍒剁敾闈紙濡傛墜鍔裤�佸Э鍔匡級锛屽彲浠ヤ娇鐢� ControlNet + OpenPose / Depth銆�
-Lora/Embeddings锛堝彲閫夛級锛氬彲浠ユ坊鍔犵壒瀹氶鏍肩殑 Lora 妯″瀷锛屽浜虹墿銆佹潗璐ㄥ寮虹瓑銆�
-鉁� 4. 鏈�缁堝浐瀹氱殑閫氱敤鍙傛暟鏍煎紡锛堟瘡娆″彧鏇挎崲 Prompt锛�
-浣犳渶缁堝彲浠ヨ繖鏍疯皟鐢� Stable Diffusion锛屾瘡娆″彧淇敼 Prompt锛屽叾浠栧弬鏁颁繚鎸佸浐瀹氾細
-
-yaml
-澶嶅埗
-缂栬緫
-Prompt: "锛堣繖閲屽~鍏� LLM 鐢熸垚鐨勬弿杩帮級"
-Negative Prompt: "(worst quality, low quality, blurry, bad anatomy, extra limbs, missing fingers, disfigured, lowres, overexposed, watermark, nsfw, text, cropped, distorted face, jpeg artifacts, poorly drawn hands, malformed fingers, unnatural body, bad proportions)"
-Sampler: "DPM++ 2M Karras"
-Steps: 40
-CFG Scale: 8
-Resolution: 1024x1024
-Seed: -1
-Hires Fix: True
-Upscale: 1.5
-Batch Size: 2
+GOOGLE_STORY_GENERATE_PROMPT = '''
+甯垜鍐欎竴绡囩殑鐙楄鏁呬簨锛岃姹傦細
+-浠who}鐨勮鑹茶瑙掞紝璁茶堪涓�娈靛洿缁晎what}灞曞紑鐨勭嫍琛�瀹跺涵鏁呬簨锛�
+-鍐欎綔椋庢牸鍙傝�儃style},鐙楄绋嬪害{level};
+-閲囩敤鈥滅涓�浜虹О鈥濊杩帮紝鍍忔槸涓�涓湡瀹炵殑浜哄湪鍚愭Ы鑷繁鐨勭粡鍘嗭紱
+-浠ユ晠浜嬫儏鑺傚畬鏁达紝鎯呮劅鎶撲汉锛�
+-鏈夊弽杞紝鏈夊啿绐侊紝鍙互鏄悶绗戠殑銆佽檺鐨勩�佽崚璋殑锛屼篃鍙互鏄湡鎯呮祦闇诧紱
+-椋庢牸鍙互鑷敱鍙樺寲锛屾瘮濡傚菇榛樺悙妲姐�佺嫍琛�澶稿紶銆佺粏鑵绘劅浜恒�佸喎闈㈣鍒猴紱
+-涓嶅繀鍗冪瘒涓�寰嬶紝涓嶅繀閮芥槸鈥滃﹩濯冲ぇ鎴樷�濓紝鍙绮惧僵銆佹湁鐪嬪ご锛�
+-鍐呭涓嶈閲嶅涔嬪墠鍐欒繃鐨勬晠浜嬪璺紝灏介噺鏂伴銆佽剳娲炲ぇ寮�锛屽儚涓嶅悓浜轰翰韬杩扮殑鐪熷疄缁忓巻銆�
+-瑕佽浜鸿寰椻�滆繖涔熻兘鍙戠敓锛侊紵鈥�
+-璁╀汉鐪嬩簡灏卞繊涓嶄綇鍒嗕韩鎴栬瘎璁恒��
+-鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勶紝鎴戠煡閬撲簡鈥濄�佲�滀互涓嬫槸鍐欑殑鍐呭鈥濈瓑鍐呭锛岀洿鎺ュ氨杈撳嚭缂栧啓鐨勬晠浜嬫湰韬��
+-鍥炲涓笉闇�瑕佹晠浜嬬殑鎬荤粨鎴栦笅涓�姝ョ殑浠诲姟鎺ㄨ崘绛夛紝涓嶉渶瑕佷换浣曞紩瀵笺�佽В閲婃垨瀵掓殑銆�
'''
+
+GOOGLE_STORY_GENERATE_PROMPT_COMPLEX = '''
+璇峰熀浜庝互涓嬫晠浜嬭瀹氬垱浣滄晠浜�:
+[鏁呬簨璁惧畾]
+浠涓昏鑱屼笟}鐨剓涓昏鎬у埆}涓昏瑙嗚锛岃杩颁竴娈靛彂鐢熷湪{鍦扮偣}鐨勭嫍琛�瀹跺涵鏁呬簨锛�
+- 涓昏涓庤繃鍘荤殑{鍓嶄换韬唤}鎰忓閲嶉�紝瀵规柟鐜颁负{鐜扮姸鎻忚堪}锛�
+- 璧峰洜浜嬩欢涓猴細{鍒濆浜嬩欢}锛�
+- 鎯呰妭鍐茬獊鏍稿績锛歿鍐茬獊鎻忚堪}锛�
+- 鏁呬簨涓铻嶅悎浠ヤ笅鐙楄瑕佺礌锛歿鐙楄瑕佺礌}锛�
+- 瀹跺涵缁撴瀯璁惧畾锛歿瀹跺涵缁撴瀯}锛�
+- 绗笁浜鸿瀹氾紙鑻ユ湁锛夛細{绗笁浜鸿瀹殅锛�
+- 瑙掕壊蹇冪悊鍔ㄦ満锛歿蹇冪悊鍔ㄦ満}锛�
+- 鎯呮劅寮犲姏鍦鸿瀹氾細{寮犲姏璁惧畾}锛�
+- 缁撳眬寤鸿涓簕缁撳眬鏂瑰悜}锛屽彲鍖呭惈{鍙嶈浆绫诲瀷}锛�
+
+[鎯呰妭瑕佹眰]
+濡傛儏鑺傝瀹氬啿绐佹垨涓嶅悎鐞嗭紝璇风伒娲昏皟鏁存垨鑸嶅純閮ㄥ垎鍐呭锛岀‘淇濇晠浜嬭嚜鐒舵祦鐣呬笖閫昏緫鑷唇銆�
+1. 浼樺厛淇濊瘉鏁呬簨鎯呰妭閫昏緫娓呮櫚锛岃鑹茶涓哄悎鐞嗐��
+2. 鏁呬簨闇�鍖呭惈鍥犳灉鍏崇郴锛屾儏鎰熺湡鍒囷紝鍐茬獊鏈夊姩鏈轰笖閾哄灚鍚堢悊銆�
+3. 閲嶇偣绐佸嚭涓昏鍐茬獊鍜屼富棰橈紝杈呭姪鎯呰妭浣滀负鐐圭紑锛屼笉鍋氱‖濉炪��
+4. 鏁呬簨搴斿叿澶囩湡瀹炴劅鍜屼汉鎬у寲锛岄伩鍏嶆棤鍘樺ご鍙嶈浆鎴栫‖鍑戝墽鎯呫��
+
+[鍐欎綔瑕佹眰]
+- 鍐欎綔椋庢牸瑕佹眰涓猴細{椋庢牸}锛屽瓧鏁板缓璁负{瀛楁暟}瀛楀乏鍙炽��
+- 閲囩敤鈥滅涓�浜虹О鈥濊杩帮紝鍍忔槸涓�涓湡瀹炵殑浜哄湪鍚愭Ы鑷繁鐨勭粡鍘嗭紱
+- 浠ユ晠浜嬫儏鑺傚畬鏁淬�佹儏鎰熸姄浜轰负鐩爣锛屾湁鍐茬獊鍜屽弽杞紝椋庢牸澶氭牱锛屽彲骞介粯鍚愭Ы銆佺嫍琛�澶稿紶銆佺粏鑵绘劅浜烘垨鍐烽潰璁藉埡绛夈��
+- 鏁呬簨鍐呭搴旀柊棰栧鏍凤紝閬垮厤甯歌濂楄矾锛屽睍鐜颁赴瀵屽褰╃殑浜虹墿瑙嗚鍜屾儏鎰熷啿绐併��
+- 璇风洿鎺ヨ緭鍑烘晠浜嬫鏂囷紝閬垮厤浠讳綍寮�鍦虹櫧銆佹�荤粨鎴栭澶栬В閲娿��
+- 鏈夊弽杞紝鏈夊啿绐侊紝鍙互鏄悶绗戠殑銆佽檺鐨勩�佽崚璋殑锛屼篃鍙互鏄湡鎯呮祦闇诧紱
+- 椋庢牸鍙互鑷敱鍙樺寲锛屾瘮濡傚菇榛樺悙妲姐�佺嫍琛�澶稿紶銆佺粏鑵绘劅浜恒�佸喎闈㈣鍒猴紱
+- 鍐呭涓嶈閲嶅涔嬪墠鍐欒繃鐨勬晠浜嬪璺紝灏介噺鏂伴銆佽剳娲炲ぇ寮�锛屽儚涓嶅悓浜轰翰韬杩扮殑鐪熷疄缁忓巻銆�
+- 鍥炲涓笉瑕佸嚭鐜扳�滃ソ鐨勶紝鎴戠煡閬撲簡鈥濄�佲�滀互涓嬫槸鍐欑殑鍐呭鈥濈瓑鍐呭锛岀洿鎺ュ氨杈撳嚭缂栧啓鐨勬晠浜嬫湰韬��
+- 鍥炲涓笉闇�瑕佹晠浜嬬殑鎬荤粨鎴栦笅涓�姝ョ殑浠诲姟鎺ㄨ崘绛夛紝涓嶉渶瑕佷换浣曞紩瀵笺�佽В閲婃垨瀵掓殑銆�
+'''
diff --git a/auto_media_publisher/config/conf_platform_login_url.py b/auto_media_publisher/config/conf_platform_login_url.py
index 3351604..5ac64ea 100644
--- a/auto_media_publisher/config/conf_platform_login_url.py
+++ b/auto_media_publisher/config/conf_platform_login_url.py
@@ -29,6 +29,10 @@
DEFAULT_CDP_ENDPOINT = "http://localhost:9222"
+GONGZHONGHAO_CHECK_URL = "https://mp.weixin.qq.com/"
+GONGZHONGHAO_LOGIN_ELEMENT = "div.weui-desktop_name"
+
+
PLATFORM_LOGIN_MAP= {
"bilibili":{
"login_url":BILIBILI_CHECK_URL,
@@ -81,5 +85,9 @@
"login_url":XCOM_CHECK_URL,
"login_element":XCOM_LOGIN_ELEMENT,
"cdp_endpoint":DEFAULT_CDP_ENDPOINT
+ },
+ "gongzhonghao":{
+ "login_url":GONGZHONGHAO_CHECK_URL,
+ "login_element":GONGZHONGHAO_LOGIN_ELEMENT
}
}
\ No newline at end of file
diff --git a/auto_media_publisher/config/conf_video_mashup.py b/auto_media_publisher/config/conf_video_mashup.py
index c50c770..c866c87 100644
--- a/auto_media_publisher/config/conf_video_mashup.py
+++ b/auto_media_publisher/config/conf_video_mashup.py
@@ -1,15 +1,15 @@
PROJECT_ROOT = "./" # 鏈�缁� 绋嬪簭鏄�氳繃 cmd 鍚姩鐨勶紝 涔熷氨鏄渶缁堟槸鍦� python main.py 鎴栬�� python app_flask.py 鍥犳璺緞閮芥槸浠� 閭d釜璺緞寮�濮�
-VIDEO_DIR_DRAFT = PROJECT_ROOT + "data/video_draft"
+VIDEO_DIR_DRAFT = PROJECT_ROOT + "data/media_draft"
-VIDEO_DIR = PROJECT_ROOT + "data/video_draft"
+VIDEO_DIR = PROJECT_ROOT + "data/media_draft"
-FINAL_VIDEO_DIR = PROJECT_ROOT +"data/video_final"
+FINAL_MEDIA_DIR = PROJECT_ROOT +"data/media_final"
-VIDEO_LOGO_PATH = PROJECT_ROOT +"data/video_draft/logo.png"
+VIDEO_LOGO_PATH = PROJECT_ROOT +"data/media_draft/logo.png"
VIDEO_FONT_PATH = PROJECT_ROOT + "data/fonts/HelloFont_ID_JiangHuTi.ttf"
diff --git a/auto_media_publisher/config/conf_video_taijiniao.py b/auto_media_publisher/config/conf_video_taijiniao.py
index 2f09e1b..0a3e1a7 100644
--- a/auto_media_publisher/config/conf_video_taijiniao.py
+++ b/auto_media_publisher/config/conf_video_taijiniao.py
@@ -3,7 +3,7 @@
TAIJINIAO_DIR_TEXT = PROJECT_ROOT + "data/taijiniao/texts"
TAIJINIAO_DIR_VIDEO_SRC = PROJECT_ROOT +"data/taijiniao/videos/绔栧睆"
-TAIJINIAO_DIR_VIDEO_DST = PROJECT_ROOT +"data/video_final"
+TAIJINIAO_DIR_VIDEO_DST = PROJECT_ROOT +"data/media_final"
TAIJINIAO_DIR_AUDIO = PROJECT_ROOT + "data/taijiniao/musics/children_happy_split"
TAIJINIAO_VIDEO_LOGO_PATH = PROJECT_ROOT + "data/taijiniao/logo.png"
TAIJINIAO_VIDEO_FONT_PATH = PROJECT_ROOT + "data/fonts/HelloFont_ID_JiangHuTi.ttf"
diff --git a/auto_media_publisher/downloaders/dajiala_downloader.py b/auto_media_publisher/downloaders/dajiala_downloader.py
index 329c63f..cb5e2f0 100644
--- a/auto_media_publisher/downloaders/dajiala_downloader.py
+++ b/auto_media_publisher/downloaders/dajiala_downloader.py
@@ -48,7 +48,7 @@
try:
proxy = {"server": f"http://{proxy_raw}"}
browser = await playwright.chromium.launch(headless=False, channel= "chrome",args=["--blink-settings=imagesEnabled=false"])
- context = await browser.new_context(proxy=proxy,user_agent=DEFAULT_USER_AGENT)
+ context = await browser.new_context(proxy=proxy,user_agent=DEFAULT_USER_AGENT,viewport={"width": 1920, "height": 1080})
if os.path.exists(PLAYWRIGHT_STEALTH_JS_PATH):
await context.add_init_script(path=Path(PLAYWRIGHT_STEALTH_JS_PATH))
page = await context.new_page()
diff --git a/auto_media_publisher/generators/docx_generator_creator.py b/auto_media_publisher/generators/docx_generator_creator.py
new file mode 100644
index 0000000..e74e42f
--- /dev/null
+++ b/auto_media_publisher/generators/docx_generator_creator.py
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+import os
+import random
+import subprocess
+from pathlib import Path
+from typing import List, Tuple
+from concurrent.futures import ThreadPoolExecutor
+from pydub import AudioSegment
+import tempfile
+import time
+from datetime import datetime
+import re
+import json
+import re
+from glob import glob
+
+from auto_media_publisher.utils.logger import get_logger
+from auto_media_publisher.config.conf_video_mashup import FINAL_MEDIA_DIR
+
+from auto_media_publisher.generators.media_generator_base import MediaGenerator
+from auto_media_publisher.generators.docx_generator_gemini import DocxGeneratorGemini
+
+
+class DocxGeneratorCreator(MediaGenerator):
+ """
+ docx鐢熸垚鍣ㄧ被锛岀敤浜嶢I鐢熸垚docx锛屽彂甯冨井淇″叕浼楀彿銆�
+ Attributes:
+ **kwargs : 鍏朵腑鍖呮嫭 user_id,platform,proxy_full 鍜屽叾浠栫敤寰楃潃addon 鍙傛暟銆�
+ 鏈被涓�,addon 鍙傛暟鏄� docx_type 鍏蜂綋鍙傝�� conf_docx_random.py
+ """
+ required_keys = ['user_id', 'scheduled_time','proxy_full']
+ def __init__(self, *args, **kwargs):
+ if args:
+ raise TypeError("涓嶆敮鎸佷綅缃弬鏁帮紝璇峰叏閮ㄤ娇鐢ㄥ叧閿瓧鍙傛暟")
+
+ for key in self.required_keys:
+ if key not in kwargs:
+ raise ValueError(f"缂哄皯蹇呰鍙傛暟锛歿key}")
+ setattr(self, key, kwargs[key])
+
+ # 鍏佽璁剧疆棰濆瀛楁
+ for key, value in kwargs.items():
+ if key not in self.required_keys:
+ setattr(self, key, value)
+
+ self.logger = get_logger(self.__class__.__name__,"admin")
+
+
+ def generate(self):
+ """
+ 琚閮ㄨ皟鐢ㄣ��
+ 鐢熸垚涓�涓猟ocx ;
+ 鐢熸垚涓�涓猵ng灏侀潰;
+ 鐢熸垚涓�涓猟ocx鐨勯厤缃甹son鏂囦欢;
+ 涓変釜鏂囦欢閮� 淇濆瓨鍒� media_final / user_id / 涓嬮潰
+
+ """
+ try:
+ tmp_datetime = datetime.strptime(self.scheduled_time, "%Y-%m-%d %H:%M:%S")
+ scheduled_time_str = tmp_datetime.strftime("%Y%m%d%H%M%S")
+ self.logger.info(f"DocxGeneratorCreator 姝e湪鐢熸垚 media锛歿self.user_id},{self.scheduled_time} .docx")
+
+ os.makedirs(os.path.join(FINAL_MEDIA_DIR,self.user_id),exist_ok=True)
+ output_docx_path =f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.docx"
+ output_json_path = f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.json"
+
+ # 閽堝涓嶅悓鐨勫钩鍙帮紝濡傛灉閰嶇疆浜嗙浉鍚岀殑鍙戝竷鏃堕棿锛岄粯璁ゆ槸浣跨敤鍚屼竴涓棰戙��
+ # 濡傛灉鏌愪釜鐢ㄦ埛鍦ㄤ笉鍚岀殑骞冲彴涓婏紝闇�瑕佸睍绀轰笉鍚岀殑鍐呭锛岃 浜轰负 鍦� 璁剧疆鏈�缁堝彂甯冩椂闂存槸涓嶅悓鐨勬椂闂淬��
+
+ if os.path.exists(output_json_path):
+ self.logger.info(f"DocxGeneratorCreator 鏂囦欢宸插瓨鍦紝涓嶅啀鎵ц鐢熸垚浠诲姟 media锛歿output_json_path}")
+ return True
+
+ generater = DocxGeneratorGemini(self.docx_author,complex=True)
+ generater.generate(output_docx_path)
+
+ summary_json = generater.summary_info
+ summary_json["user"] = self.user_id
+ summary_json["scheduled_time"] = self.scheduled_time
+ summary_json["proxy_full"] = self.proxy_full
+ summary_json["path_media"] = output_docx_path
+ summary_json["author"] = self.docx_author
+
+
+ # 3. 鍐欏叆纾佺洏
+ with open(output_json_path.replace(".docx",".json"), "w", encoding="utf-8") as f:
+ json.dump(summary_json, f, ensure_ascii=False, indent=4)
+
+ time.sleep(5)
+ return True
+ except Exception as e:
+ self.logger.error(f"DocxGeneratorCreator error: {e}")
+ return False
+
\ No newline at end of file
diff --git a/auto_media_publisher/generators/docx_generator_gemini.py b/auto_media_publisher/generators/docx_generator_gemini.py
new file mode 100644
index 0000000..2c7a994
--- /dev/null
+++ b/auto_media_publisher/generators/docx_generator_gemini.py
@@ -0,0 +1,183 @@
+from docx import Document
+from docx.shared import Pt, Inches
+from docx.oxml.ns import qn
+from io import BytesIO
+from docx.enum.text import WD_ALIGN_PARAGRAPH
+import random
+import threading
+import re
+import time
+from io import BytesIO
+import google.generativeai as genai
+from auto_media_publisher.config.conf_base import GOOGLE_API_KEY,GOOGLE_MODEL,GOOGLE_CHAT_MIN_INTERVAL,DEFAULT_PREFIX_MAP,DEFAULT_SURFIX_MAP
+from auto_media_publisher.config.conf_base import GOOGLE_GEMINI_TEMPERATURE_MIN,GOOGLE_GEMINI_TEMPERATURE_MAX,GOOGLE_GEMINI_TOPN_MIN,GOOGLE_GEMINI_TOPN_MAX
+from auto_media_publisher.config.conf_base import GEMINI_PROMPT_TITLE,GEMINI_PROMPT_DESCRIPTION,GEMINI_PROMPT_TAG,GOOGLE_STORY_GENERATE_PROMPT,GOOGLE_STORY_GENERATE_PROMPT_COMPLEX
+from auto_media_publisher.config.conf_docx_generate import STORY_PROMPT_PARAMETERS
+from auto_media_publisher.config.conf_docx_generate_complex import STORY_PROMPT_PARAMETERS_COMPLEX
+
+from auto_media_publisher.utils.logger import get_logger
+from auto_media_publisher.utils.utils_text2image_pollinations import Text2ImageGenerator
+
+
+class DocxGeneratorGemini:
+ def __init__(self,docx_author="鎴�",complex=False):
+ genai.configure(api_key=GOOGLE_API_KEY)
+ self.temperature = round(random.uniform(GOOGLE_GEMINI_TEMPERATURE_MIN, GOOGLE_GEMINI_TEMPERATURE_MAX), 2)
+ self.top_n = round(random.uniform(GOOGLE_GEMINI_TOPN_MIN, GOOGLE_GEMINI_TOPN_MAX), 2)
+ self.model = genai.GenerativeModel(GOOGLE_MODEL,
+ generation_config=genai.types.GenerationConfig(
+ temperature=self.temperature,
+ top_p=self.top_n,
+ top_k=random.choice([40, 50, 80, 100])
+ )
+ )
+ self.prefix_text = f"鎴戞槸{docx_author}锛寋random.choice(DEFAULT_PREFIX_MAP)}"
+ self.surfix_text = random.choice(DEFAULT_SURFIX_MAP)
+
+
+ self.last_call_time = 0
+ self.min_interval = GOOGLE_CHAT_MIN_INTERVAL # 闄愬埗鏈�鐭姹傞棿闅旓紙绉掞級
+ self.lock = threading.Lock() # 澶氱嚎绋嬪苟鍙戞椂涔熷畨鍏�
+ self.logger = get_logger(self.__class__.__name__,"admin")
+ self.text2imager = Text2ImageGenerator(width=900,height=383)
+
+ self.summary_info = {}
+
+ if complex :
+ self.prompt = self.get_story_prompt_complex()
+ else:
+ self.prompt = self.get_story_prompt()
+
+ def safe_send_message(self, content: str):
+ with self.lock:
+ now = time.time()
+ wait_time = self.min_interval - (now - self.last_call_time)
+ if wait_time > 0:
+ time.sleep(wait_time)
+ self.last_call_time = time.time()
+
+ return self.chat.send_message(content)
+
+ def get_story_prompt(self) -> str:
+ who = random.choice(STORY_PROMPT_PARAMETERS["who"])
+ what = random.choice(STORY_PROMPT_PARAMETERS["what"])
+ style = "锛�".join(random.sample(STORY_PROMPT_PARAMETERS["style"], 2))
+ level = random.choice(STORY_PROMPT_PARAMETERS["level"])
+
+ return GOOGLE_STORY_GENERATE_PROMPT.format(who=who,what=what,style=style,level=level)
+
+ def get_story_prompt_complex(self) -> str:
+
+ params = {key: random.choice(values) for key, values in STORY_PROMPT_PARAMETERS_COMPLEX.items()}
+
+ return GOOGLE_STORY_GENERATE_PROMPT_COMPLEX.format(**params)
+
+
+ def generate(self, output_path: str):
+ self.logger.info(f"start to rewriting docx using gemini,using temperature:{self.temperature}. with prompt {self.prompt}.")
+ self.chat = self.model.start_chat(history=[])
+ response = self.safe_send_message(self.prompt)
+ story_text = response.text.strip()
+ self.logger.info(f"google gemini story end...")
+ paragraphs = [p.strip() for p in story_text.split('\n') if p.strip()]
+
+ doc = Document()
+ # 璁剧疆榛樿鏍峰紡
+ style = doc.styles['Normal']
+ font = style.font
+ font.name = '妤蜂綋' # 瑗挎枃瀛椾綋璁剧疆涓烘シ浣�
+ font.size = Pt(10.5) # 灏忓洓瀛椾綋
+ style._element.rPr.rFonts.set(qn('w:eastAsia'), '妤蜂綋') # 涓枃瀛椾綋璁惧畾
+
+ self._add_content_to_doc(doc,"text",f"{self.prefix_text}\n")
+
+ for para in paragraphs :
+ self._add_content_to_doc(doc,"text",para)
+ if random.random() > 0.5:
+ try:
+ img_stream = self.text2imager.generate_image_to_stream(para)
+ self._add_content_to_doc(doc,"image",img_stream)
+ except:
+ pass
+
+ self._add_content_to_doc(doc,"text",f"\n\n{self.surfix_text}")
+
+ doc.save(output_path)
+
+ self.summary_info = self._summarize_title_intro_keywords()
+ print(self.summary_info)
+ self.text2imager.generate_image(self.summary_info["description"],output_path.replace(".docx",".png"))
+ self.summary_info["path_cover"] = output_path.replace(".docx",".png")
+
+
+ def _add_content_to_doc(self,doc,type,block_content):
+ if type =="text":
+ for line in block_content.split("\n"):
+ para = doc.add_paragraph(line.strip())
+ para.paragraph_format.line_spacing = 1.5 # 琛岃窛1.5鍊�
+ para.paragraph_format.space_before = Pt(5) # 娈靛墠0纾�
+ para.paragraph_format.space_after = Pt(5) # 娈靛悗0纾�
+ elif type == "image":
+ paragraph = doc.add_paragraph()
+ run = paragraph.add_run()
+ run.add_picture(block_content, width=Inches(5.5))
+ paragraph.paragraph_format.space_before = Pt(12) # 娈靛墠 12pt
+ paragraph.paragraph_format.space_after = Pt(12) # 娈靛悗 12pt
+ paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
+
+ return doc
+
+
+
+ def _save_to_new_docx(self, blocks, output_path):
+ doc = Document()
+ # 璁剧疆榛樿鏍峰紡
+ style = doc.styles['Normal']
+ font = style.font
+ font.name = '妤蜂綋' # 瑗挎枃瀛椾綋璁剧疆涓烘シ浣�
+ font.size = Pt(10.5) # 灏忓洓瀛椾綋
+ style._element.rPr.rFonts.set(qn('w:eastAsia'), '妤蜂綋') # 涓枃瀛椾綋璁惧畾
+
+ # 鍓嶈█
+ para = doc.add_paragraph(self.prefix_text)
+ para.paragraph_format.line_spacing = 1.5
+ para.paragraph_format.space_before = Pt(0)
+ para.paragraph_format.space_after = Pt(0)
+
+
+ for block in blocks:
+ if block["type"] == "text":
+ for line in block["content"].split("\n"):
+ para = doc.add_paragraph(line.strip())
+ para.paragraph_format.line_spacing = 1.5 # 琛岃窛1.5鍊�
+ para.paragraph_format.space_before = Pt(0) # 娈靛墠0纾�
+ para.paragraph_format.space_after = Pt(0) # 娈靛悗0纾�
+ elif block["type"] == "image":
+ image_data = block["content"]
+ image_stream = BytesIO(image_data)
+ paragraph = doc.add_paragraph()
+ run = paragraph.add_run()
+ run.add_picture(image_stream, width=Inches(5.5))
+ paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
+
+
+ # 缁撹
+ para2 = doc.add_paragraph(self.surfix_text)
+ para2.paragraph_format.line_spacing = 1.5
+ para2.paragraph_format.space_before = Pt(12)
+ para2.paragraph_format.space_after = Pt(0)
+
+ doc.save(output_path)
+
+
+ def _summarize_title_intro_keywords(self) -> dict:
+ title = self.safe_send_message(GEMINI_PROMPT_TITLE).text.strip()
+ description = self.safe_send_message(GEMINI_PROMPT_DESCRIPTION).text.strip()
+ keywords = self.safe_send_message(GEMINI_PROMPT_TAG).text.strip()
+
+ return {
+ "title": title.splitlines()[0].strip()[:64],
+ "description": description[:120],
+ "tags": re.split(r'[銆�,\s]+', keywords.strip("銆�"))
+ }
+
diff --git a/auto_media_publisher/generators/docx_generator_rewriter.py b/auto_media_publisher/generators/docx_generator_rewriter.py
new file mode 100644
index 0000000..33df22c
--- /dev/null
+++ b/auto_media_publisher/generators/docx_generator_rewriter.py
@@ -0,0 +1,105 @@
+# -*- coding: utf-8 -*-
+import os
+import random
+import subprocess
+from pathlib import Path
+from typing import List, Tuple
+from concurrent.futures import ThreadPoolExecutor
+from pydub import AudioSegment
+import tempfile
+import time
+from datetime import datetime
+import re
+import json
+import re
+from glob import glob
+
+from auto_media_publisher.utils.logger import get_logger
+from auto_media_publisher.config.conf_video_mashup import FINAL_MEDIA_DIR
+
+from auto_media_publisher.generators.media_generator_base import MediaGenerator
+from auto_media_publisher.modifiers.rewriter.docx_rewriter_gemini import DocxRewriterGemini
+
+
+class DocxGeneratorRewriter(MediaGenerator):
+ """
+ docx鐢熸垚鍣ㄧ被锛岀敤浜庢牴鎹弬鏁版敼鍐欏苟鍒涘缓docx锛屽彂甯冨井淇″叕浼楀彿銆�
+ Attributes:
+ **kwargs : 鍏朵腑鍖呮嫭 user_id,platform,proxy_full 鍜屽叾浠栫敤寰楃潃addon 鍙傛暟銆�
+ 鏈被涓�,addon 鍙傛暟鏄� docx_type 鍏蜂綋鍙傝�� conf_docx_random.py
+ """
+ required_keys = ['user_id', 'scheduled_time','proxy_full']
+ def __init__(self, *args, **kwargs):
+ if args:
+ raise TypeError("涓嶆敮鎸佷綅缃弬鏁帮紝璇峰叏閮ㄤ娇鐢ㄥ叧閿瓧鍙傛暟")
+
+ for key in self.required_keys:
+ if key not in kwargs:
+ raise ValueError(f"缂哄皯蹇呰鍙傛暟锛歿key}")
+ setattr(self, key, kwargs[key])
+
+ # 鍏佽璁剧疆棰濆瀛楁
+ for key, value in kwargs.items():
+ if key not in self.required_keys:
+ setattr(self, key, value)
+
+ self.logger = get_logger(self.__class__.__name__,"admin")
+
+
+ def get_random_docx_file(self) -> str:
+ """
+ 閫掑綊 鑾峰彇鐩綍涓嬫墍鏈夌殑*.docx 鏂囦欢, 闅忔満閫夊彇涓�涓�
+ Attributes:
+ docx_dir : 椤剁骇鐩綍
+ """
+ all_docx = glob(f"{self.docx_dir}/**/*.docx", recursive=True)
+ return random.choice(all_docx)
+
+
+ def generate(self):
+ """
+ 琚閮ㄨ皟鐢ㄣ��
+ 鐢熸垚涓�涓猟ocx ;
+ 鐢熸垚涓�涓猵ng灏侀潰;
+ 鐢熸垚涓�涓猟ocx鐨勯厤缃甹son鏂囦欢;
+ 涓変釜鏂囦欢閮� 淇濆瓨鍒� media_final / user_id / 涓嬮潰
+
+ """ # from 2025-07-19 08:00:00 to 2025-07-19 08:00
+ try:
+ tmp_datetime = datetime.strptime(self.scheduled_time, "%Y-%m-%d %H:%M:%S")
+ scheduled_time_str = tmp_datetime.strftime("%Y%m%d%H%M%S")
+ self.logger.info(f"DocxGeneratorRewriter 姝e湪鏀瑰啓 media锛歿self.user_id},{self.scheduled_time} .docx")
+
+ os.makedirs(os.path.join(FINAL_MEDIA_DIR,self.user_id),exist_ok=True)
+ output_docx_path =f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.docx"
+ output_json_path = f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.json"
+
+ # 閽堝涓嶅悓鐨勫钩鍙帮紝濡傛灉閰嶇疆浜嗙浉鍚岀殑鍙戝竷鏃堕棿锛岄粯璁ゆ槸浣跨敤鍚屼竴涓棰戙��
+ # 濡傛灉鏌愪釜鐢ㄦ埛鍦ㄤ笉鍚岀殑骞冲彴涓婏紝闇�瑕佸睍绀轰笉鍚岀殑鍐呭锛岃 浜轰负 鍦� 璁剧疆鏈�缁堝彂甯冩椂闂存槸涓嶅悓鐨勬椂闂淬��
+
+ if os.path.exists(output_json_path):
+ return True
+
+ input_docx = self.get_random_docx_file()
+
+ rewritor = DocxRewriterGemini("random",self.docx_author)
+ rewritor.rewrite(input_docx,output_docx_path)
+
+ summary_json = rewritor.summary_info
+ summary_json["user"] = self.user_id
+ summary_json["scheduled_time"] = self.scheduled_time
+ summary_json["proxy_full"] = self.proxy_full
+ summary_json["path_media"] = output_docx_path
+ summary_json["author"] = self.docx_author
+
+
+ # 3. 鍐欏叆纾佺洏
+ with open(output_json_path.replace(".docx",".json"), "w", encoding="utf-8") as f:
+ json.dump(summary_json, f, ensure_ascii=False, indent=4)
+
+ time.sleep(5)
+ return True
+ except Exception as e:
+ self.logger.error(f"DocxGeneratorRewriter error: {e}")
+ return False
+
\ No newline at end of file
diff --git a/auto_media_publisher/generators/video_generator_concat.py b/auto_media_publisher/generators/video_generator_concat.py
index 6158064..a2b0bdd 100644
--- a/auto_media_publisher/generators/video_generator_concat.py
+++ b/auto_media_publisher/generators/video_generator_concat.py
@@ -342,7 +342,7 @@
鐢熸垚涓�涓煭瑙嗛mp4;
鐢熸垚涓�涓猵ng灏侀潰;
鐢熸垚涓�涓棰戠殑閰嶇疆json鏂囦欢;
- 涓変釜鏂囦欢閮� 淇濆瓨鍒� video_final / user_id / 涓嬮潰
+ 涓変釜鏂囦欢閮� 淇濆瓨鍒� media_final / user_id / 涓嬮潰
""" # from 2025-07-19 08:00:00 to 2025-07-19 08:00
try:
@@ -379,9 +379,9 @@
"user": self.user_id,
"title": "",
"description": text_line,
- "path_video": output_mp4_path,
+ "path_media": output_mp4_path,
"tags": ["鎰熸仼鐩搁亣","鍐嶆潵涓�涓�","澶ソ鐪嬩簡"],
- "publish_datetime": scheduled_time_pub,
+ "scheduled_time": scheduled_time_pub,
"location": "",
"category": "",
"path_cover": output_png_path,
diff --git a/auto_media_publisher/generators/video_generator_manual.py b/auto_media_publisher/generators/video_generator_manual.py
index 11189ec..cb710b1 100644
--- a/auto_media_publisher/generators/video_generator_manual.py
+++ b/auto_media_publisher/generators/video_generator_manual.py
@@ -11,7 +11,7 @@
class VideoGeneratorManual(MediaGenerator):
"""
- 鎵嬪姩鍦扮敓鎴愮煭瑙嗛锛屾嫹璐濆埌 video_final / user_id / 鐩綍涓� 涔嬪悗銆�
+ 鎵嬪姩鍦扮敓鎴愮煭瑙嗛锛屾嫹璐濆埌 media_final / user_id / 鐩綍涓� 涔嬪悗銆�
瑕佹眰锛�
1銆佹瘡涓棰戣鏈変笁涓枃浠讹細
mp4 鏂囦欢銆� png灏侀潰鏂囦欢鍜宩son閰嶇疆鏂囦欢(鍙弬鑰冨叾浠杍son)銆�
diff --git a/auto_media_publisher/generators/video_generator_mashup.py b/auto_media_publisher/generators/video_generator_mashup.py
index 5a571a2..b807f8d 100644
--- a/auto_media_publisher/generators/video_generator_mashup.py
+++ b/auto_media_publisher/generators/video_generator_mashup.py
@@ -14,7 +14,7 @@
import re
from auto_media_publisher.utils.logger import get_logger
-from auto_media_publisher.config.conf_video_mashup import VIDEO_DIR,FINAL_VIDEO_DIR,VIDEO_LOGO_PATH,VIDEO_SEGMENT_COUNT,VIDEO_SEGMENT_DURATION,VIDEO_RESOLUTION_DEFAULT_WIDTH,VIDEO_RESOLUTION_DEFAULT_HEIGHT,VIDEO_FONT_PATH,VIDEO_FONT_SIZE,VIDEO_FONT_COLOR
+from auto_media_publisher.config.conf_video_mashup import VIDEO_DIR,FINAL_MEDIA_DIR,VIDEO_LOGO_PATH,VIDEO_SEGMENT_COUNT,VIDEO_SEGMENT_DURATION,VIDEO_RESOLUTION_DEFAULT_WIDTH,VIDEO_RESOLUTION_DEFAULT_HEIGHT,VIDEO_FONT_PATH,VIDEO_FONT_SIZE,VIDEO_FONT_COLOR
from auto_media_publisher.generators.media_generator_base import MediaGenerator
@@ -362,7 +362,7 @@
鐢熸垚涓�涓煭瑙嗛mp4;
鐢熸垚涓�涓猵ng灏侀潰;
鐢熸垚涓�涓棰戠殑閰嶇疆json鏂囦欢;
- 涓変釜鏂囦欢閮� 淇濆瓨鍒� video_final / user_id / 涓嬮潰
+ 涓変釜鏂囦欢閮� 淇濆瓨鍒� media_final / user_id / 涓嬮潰
""" # from 2025-07-19 08:00:00 to 2025-07-19 08:00
try:
@@ -371,10 +371,10 @@
scheduled_time_pub = tmp_datetime.strftime("%Y-%m-%d %H:%M")
self.logger.info(f"VideoGeneratorMashup 姝e湪鐢熸垚 media锛歿self.user_id},{self.scheduled_time} .mp4")
- os.makedirs(os.path.join(FINAL_VIDEO_DIR,self.user_id),exist_ok=True)
- output_mp4_path =f"{FINAL_VIDEO_DIR}/{self.user_id}/{scheduled_time_str}.mp4"
- output_png_path =f"{FINAL_VIDEO_DIR}/{self.user_id}/{scheduled_time_str}.png"
- output_json_path = f"{FINAL_VIDEO_DIR}/{self.user_id}/{scheduled_time_str}.json"
+ os.makedirs(os.path.join(FINAL_MEDIA_DIR,self.user_id),exist_ok=True)
+ output_mp4_path =f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.mp4"
+ output_png_path =f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.png"
+ output_json_path = f"{FINAL_MEDIA_DIR}/{self.user_id}/{scheduled_time_str}.json"
# 閽堝涓嶅悓鐨勫钩鍙帮紝濡傛灉閰嶇疆浜嗙浉鍚岀殑鍙戝竷鏃堕棿锛岄粯璁ゆ槸浣跨敤鍚屼竴涓棰戙��
# 濡傛灉鏌愪釜鐢ㄦ埛鍦ㄤ笉鍚岀殑骞冲彴涓婏紝闇�瑕佸睍绀轰笉鍚岀殑鍐呭锛岃 浜轰负 鍦� 璁剧疆鏈�缁堝彂甯冩椂闂存槸涓嶅悓鐨勬椂闂淬��
@@ -407,9 +407,9 @@
"user": self.user_id,
"title": "",
"description": text_line,
- "path_video": output_mp4_path,
+ "path_media": output_mp4_path,
"tags": ["鎰熸仼鐩搁亣","鍐嶆潵涓�涓�","澶ソ鐪嬩簡"],
- "publish_datetime": scheduled_time_pub,
+ "scheduled_time": scheduled_time_pub,
"location": "",
"category": "",
"path_cover": output_png_path,
diff --git a/auto_media_publisher/generators/video_generator_taijiniao.py b/auto_media_publisher/generators/video_generator_taijiniao.py
index 5606df8..bb05ce7 100644
--- a/auto_media_publisher/generators/video_generator_taijiniao.py
+++ b/auto_media_publisher/generators/video_generator_taijiniao.py
@@ -348,9 +348,9 @@
"user": self.user_id,
"title": "澶瀬楦熶綋閫傝兘",
"description": text_line,
- "path_video": output_mp4_path,
+ "path_media": output_mp4_path,
"tags": ["澶瀬楦�","澶瀬楦熶綋閫傝兘","鍩虹杩愬姩鎶�鑳�"],
- "publish_datetime": scheduled_time_pub,
+ "scheduled_time": scheduled_time_pub,
"location": "涓婃捣鍩庡垱閲戣瀺绉戞妧鍥介檯浜т笟鍥�",
"category": "鍋ヨ韩",
"path_cover": output_png_path,
diff --git a/auto_media_publisher/modifiers/rewriter/docx_rewriter_gemini.py b/auto_media_publisher/modifiers/rewriter/docx_rewriter_gemini.py
index d9cf694..efacf93 100644
--- a/auto_media_publisher/modifiers/rewriter/docx_rewriter_gemini.py
+++ b/auto_media_publisher/modifiers/rewriter/docx_rewriter_gemini.py
@@ -1,7 +1,8 @@
from docx import Document
-from docx.shared import Inches
-from docx.enum.text import WD_ALIGN_PARAGRAPH
+from docx.shared import Pt, Inches
from docx.oxml.ns import qn
+from io import BytesIO
+from docx.enum.text import WD_ALIGN_PARAGRAPH
import random
import threading
import re
@@ -11,20 +12,23 @@
from io import BytesIO
from PIL import Image
import google.generativeai as genai
-from auto_media_publisher.config.conf_base import GOOGLE_API_KEY,GOOGLE_MODEL,GOOGLE_CHAT_MIN_INTERVAL
-from auto_media_publisher.config.conf_base import GOOGLE_GEMINI_TEMPERATURE_MIN,GOOGLE_GEMINI_TEMPERATURE_MAX,GOOGLE_REWRITE_STYLE_MAP,GEMINI_PROMPT_INIT_DEFAULT
+from auto_media_publisher.config.conf_base import GOOGLE_API_KEY,GOOGLE_MODEL,GOOGLE_CHAT_MIN_INTERVAL,DEFAULT_PREFIX_MAP,DEFAULT_SURFIX_MAP
+from auto_media_publisher.config.conf_base import GOOGLE_GEMINI_TEMPERATURE_MIN,GOOGLE_GEMINI_TEMPERATURE_MAX,GOOGLE_GEMINI_TOPN_MIN,GOOGLE_GEMINI_TOPN_MAX,GOOGLE_REWRITE_STYLE_MAP,GEMINI_PROMPT_INIT_DEFAULT
from auto_media_publisher.config.conf_base import GEMINI_PROMPT_TITLE,GEMINI_PROMPT_DESCRIPTION,GEMINI_PROMPT_TAG
from auto_media_publisher.utils.logger import get_logger
from auto_media_publisher.utils.utils_text2image_pollinations import Text2ImageGenerator
-class GeminiDocxRewriter:
- def __init__(self,rewrite_style="default" ):
+
+class DocxRewriterGemini:
+ def __init__(self,rewrite_style="default" ,docx_author="鎴�"):
genai.configure(api_key=GOOGLE_API_KEY)
self.temperature = round(random.uniform(GOOGLE_GEMINI_TEMPERATURE_MIN, GOOGLE_GEMINI_TEMPERATURE_MAX), 2)
+ self.top_n = round(random.uniform(GOOGLE_GEMINI_TOPN_MIN, GOOGLE_GEMINI_TOPN_MAX), 2)
self.model = genai.GenerativeModel(GOOGLE_MODEL,
generation_config=genai.types.GenerationConfig(
temperature=self.temperature,
- top_p=1.0
+ top_p=self.top_n,
+ top_k=random.choice([40, 50, 80, 100])
)
)
if rewrite_style =="random":
@@ -32,11 +36,16 @@
else:
self.rewrite_style = rewrite_style
+ self.prefix_text = f"鎴戞槸{docx_author}锛寋random.choice(DEFAULT_PREFIX_MAP)}"
+ self.surfix_text = random.choice(DEFAULT_SURFIX_MAP)
+
self.last_call_time = 0
self.min_interval = GOOGLE_CHAT_MIN_INTERVAL # 闄愬埗鏈�鐭姹傞棿闅旓紙绉掞級
self.lock = threading.Lock() # 澶氱嚎绋嬪苟鍙戞椂涔熷畨鍏�
self.logger = get_logger(self.__class__.__name__,"admin")
- self.text2imager = Text2ImageGenerator()
+ self.text2imager = Text2ImageGenerator(width=900,height=383)
+
+ self.summary_info = {}
#@retry(stop=stop_after_attempt(3), wait=wait_fixed(2)) # 鑷姩閲嶈瘯鏈哄埗
def safe_send_message(self, content: str):
@@ -59,16 +68,11 @@
rewritten = self._rewrite_blocks(blocks)
self._save_to_new_docx(rewritten, output_path)
- summary_info = self.summarize_title_intro_keywords()
- print(summary_info)
- self.text2imager.generate_image(summary_info["summary"],output_path.replace(".docx",".jpg"))
- summary_info["cover_image"] = output_path.replace(".docx",".jpg")
+ self.summary_info = self._summarize_title_intro_keywords()
+ print(self.summary_info)
+ self.text2imager.generate_image(self.summary_info["description"],output_path.replace(".docx",".png"))
+ self.summary_info["path_cover"] = output_path.replace(".docx",".png")
- # 3. 鍐欏叆纾佺洏
- with open(output_path.replace(".docx",".json"), "w", encoding="utf-8") as f:
- json.dump(summary_info, f, ensure_ascii=False, indent=4)
-
- return summary_info
def extract_docx_blocks_by_order(self,docx_path):
doc = Document(docx_path)
@@ -146,28 +150,53 @@
def _save_to_new_docx(self, blocks, output_path):
doc = Document()
+ # 璁剧疆榛樿鏍峰紡
+ style = doc.styles['Normal']
+ font = style.font
+ font.name = '妤蜂綋' # 瑗挎枃瀛椾綋璁剧疆涓烘シ浣�
+ font.size = Pt(10.5) # 灏忓洓瀛椾綋
+ style._element.rPr.rFonts.set(qn('w:eastAsia'), '妤蜂綋') # 涓枃瀛椾綋璁惧畾
+
+ # 鍓嶈█
+ para = doc.add_paragraph(self.prefix_text)
+ para.paragraph_format.line_spacing = 1.5
+ para.paragraph_format.space_before = Pt(0)
+ para.paragraph_format.space_after = Pt(0)
+
+
for block in blocks:
- if block["type"]=="text":
+ if block["type"] == "text":
for line in block["content"].split("\n"):
- doc.add_paragraph(line.strip())
+ para = doc.add_paragraph(line.strip())
+ para.paragraph_format.line_spacing = 1.5 # 琛岃窛1.5鍊�
+ para.paragraph_format.space_before = Pt(0) # 娈靛墠0纾�
+ para.paragraph_format.space_after = Pt(0) # 娈靛悗0纾�
elif block["type"] == "image":
image_data = block["content"]
image_stream = BytesIO(image_data)
paragraph = doc.add_paragraph()
run = paragraph.add_run()
- run.add_picture(image_stream, width=Inches(5.5)) # 閫傚綋璋冩暣瀹藉害
+ run.add_picture(image_stream, width=Inches(5.5))
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
- doc.save(output_path)
+
+ # 缁撹
+ para2 = doc.add_paragraph(self.surfix_text)
+ para2.paragraph_format.line_spacing = 1.5
+ para2.paragraph_format.space_before = Pt(12)
+ para2.paragraph_format.space_after = Pt(0)
- def summarize_title_intro_keywords(self) -> dict:
+ doc.save(output_path)
+
+
+ def _summarize_title_intro_keywords(self) -> dict:
title = self.safe_send_message(GEMINI_PROMPT_TITLE).text.strip()
- summary = self.safe_send_message(GEMINI_PROMPT_DESCRIPTION).text.strip()
+ description = self.safe_send_message(GEMINI_PROMPT_DESCRIPTION).text.strip()
keywords = self.safe_send_message(GEMINI_PROMPT_TAG).text.strip()
return {
- "title": title,
- "summary": summary,
- "keywords": re.split(r'[銆�,\s]+', keywords.strip("銆�"))
+ "title": title.splitlines()[0].strip()[:64],
+ "description": description[:120],
+ "tags": re.split(r'[銆�,\s]+', keywords.strip("銆�"))
}
diff --git a/auto_media_publisher/uploaders/login_chrome.py b/auto_media_publisher/uploaders/login_chrome.py
index 0abfd56..faef888 100644
--- a/auto_media_publisher/uploaders/login_chrome.py
+++ b/auto_media_publisher/uploaders/login_chrome.py
@@ -40,9 +40,9 @@
browser_args["proxy"] = {"server": self.proxy}
self.browser = await playwright.chromium.launch(**browser_args)
if os.path.exists(self.cookie_path):
- self.context = await self.browser.new_context(storage_state=f"{self.cookie_path}", user_agent=DEFAULT_USER_AGENT)
+ self.context = await self.browser.new_context(storage_state=f"{self.cookie_path}", user_agent=DEFAULT_USER_AGENT,viewport={"width": 1920, "height": 1080})
else:
- self.context = await self.browser.new_context(user_agent=DEFAULT_USER_AGENT)
+ self.context = await self.browser.new_context(user_agent=DEFAULT_USER_AGENT,viewport={"width": 1920, "height": 1080})
if os.path.exists(PLAYWRIGHT_STEALTH_JS_PATH):
await self.context.add_init_script(path=Path(PLAYWRIGHT_STEALTH_JS_PATH))
await self.context.grant_permissions(['geolocation'])
diff --git a/auto_media_publisher/uploaders/uploader_baijiahao.py b/auto_media_publisher/uploaders/uploader_baijiahao.py
index a3f3600..9c743ad 100644
--- a/auto_media_publisher/uploaders/uploader_baijiahao.py
+++ b/auto_media_publisher/uploaders/uploader_baijiahao.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from playwright.async_api import Playwright, Page
import asyncio
-import random
+import datetime
from auto_media_publisher.uploaders.uploader_base import UploaderBase
@@ -10,40 +10,76 @@
class UploaderBaijiahao(UploaderBase):
-
+
+
+ async def virtual_scroll_select(self,page,text, wrapper_index = 0,panel_selector="div.rc-virtual-list-holder-inner",
+ item_selector_template='div.cheetah-select-item-option-content:has-text("{text}")',
+ step=200, # 姣忔婊氬姩鍍忕礌
+ max_attempts=15,
+ direction="down" # "down" 鎴� "up"
+ ):
+ await page.locator('div.select-wrap').nth(wrapper_index).click()
+ await asyncio.sleep(1)
+
+ panel = page.locator(panel_selector).nth(wrapper_index)
+ item_selector = item_selector_template.format(text=text)
+
+
+ for i in range(max_attempts):
+ # 灏濊瘯鏌ユ壘
+ items = page.locator(item_selector)
+ if await items.count() > 0:
+ # 鎵惧埌浜嗭紝婊氫笅鍘讳繚璇佸彲瑙侊紝鍐嶇偣鍑�
+ await items.first.scroll_into_view_if_needed()
+ await items.first.click()
+ return
+
+ # 娌℃壘鍒板氨婊氫竴杞�
+ delta = step if direction == "down" else -step
+ await panel.evaluate(f"(el) => el.scrollTop += {delta}")
+ await asyncio.sleep(0.2)
+ await asyncio.sleep(1)
+
+
async def set_schedule_time(self, page):
"""
TODO 鏃堕棿閫夋嫨锛屾棩鍚庡湪澶勭悊 鐧惧鍙风殑鏃堕棿閫夋嫨涓嶅噯纭紝鐩墠鏄殢鏈�
"""
- publish_datetime_day = f"{self.publish_datetime.month}鏈坽self.publish_datetime.day}鏃�" if self.publish_datetime.day >9 else f"{self.publish_datetime.month}鏈�0{self.publish_datetime.day}鏃�"
- publish_datetime_hour = f"{self.publish_datetime.hour}鐐�"
- publish_datetime_min = f"{self.publish_datetime.minute}鍒�"
+ scheduled_time_day = f"{self.scheduled_time.month}鏈坽self.scheduled_time.day}鏃�" if self.scheduled_time.day >9 else f"{self.scheduled_time.month}鏈�0{self.scheduled_time.day}鏃�"
+ scheduled_time_hour = f"{self.scheduled_time.hour}鐐�"
+ scheduled_time_min = f"{self.scheduled_time.minute}鍒�"
await page.locator("div.cheetah-modal-confirm-body-wrapper").wait_for(state='visible',timeout=30000)
+
+ current_hour = datetime.datetime.now().hour
+ current_min = datetime.datetime.now().minute
+ direction_hour = "down" if self.scheduled_time.hour > current_hour else "up"
+ direction_minute = "down" if self.scheduled_time.minute > current_min else "up"
+
+ print(direction_hour)
+ print(dir)
+
try:
await page.locator('div.select-wrap').nth(0).click()
await asyncio.sleep(1)
- target = page.locator(f'div[title="{publish_datetime_day}"]')
- await target.wait_for(state='visible')
+ target = page.locator(f'div[title="{scheduled_time_day}"]')
+ #await target.wait_for(state='visible')
await target.click()
await asyncio.sleep(1)
- await page.locator('div.select-wrap').nth(1).click()
- await asyncio.sleep(1)
- target = page.locator(f'div.cheetah-select-item-option-content:has-text("{publish_datetime_hour}")')
- await target.wait_for(state='visible')
- await target.click()
- await asyncio.sleep(1)
- await page.locator('div.select-wrap').nth(2).click()
- await asyncio.sleep(1)
- target = page.locator(f'div.cheetah-select-item-option-content:has-text("{publish_datetime_min}")')
- await target.wait_for(state='visible')
- await target.click()
- await asyncio.sleep(1)
+ await self.virtual_scroll_select(page,scheduled_time_hour,wrapper_index=1,direction=direction_hour)
+ await self.virtual_scroll_select(page,scheduled_time_min,wrapper_index=2,direction=direction_minute)
+ #await page.locator('div.select-wrap').nth(2).click()
+ #await asyncio.sleep(1)
+ #target = page.locator(f'div.cheetah-select-item-option-content:has-text("{scheduled_time_min}")')
+ #await target.wait_for(state='visible')
+ #await target.scroll_into_view_if_needed()
+ #await target.click()
+ #await asyncio.sleep(1)
except Exception as e:
self.logger.error(f"[Baidu BaiJiaHao] 璁剧疆鏃堕棿鍙戠敓閿欒.{e}")
- await page.locator("div.cheetah-modal-confirm-btns > button").nth(1).click()
+ #await page.locator("div.cheetah-modal-confirm-btns > button").nth(1).click()
async def handle_upload_error(self, page):
# 鏃ュ悗瀹炵幇锛岀洰鍓嶆病閬囧埌
@@ -87,7 +123,7 @@
raise # 閲嶆柊鎶涘嚭寮傚父锛岃閲嶈瘯瑁呴グ鍣ㄦ崟鑾�
async def publish_video(self, page: Page):
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
# 瀹氭椂鍙戝竷
await self.set_schedule_publish(page)
else:
@@ -115,21 +151,28 @@
page = await self.context.new_page()
await page.goto(CONTENT_UPLOAD_URL, timeout=120000)
- self.logger.info(f"姝e湪涓婁紶-------{self.path_video}")
+ self.logger.info(f"姝e湪涓婁紶-------{self.path_media}")
await page.wait_for_url(CONTENT_UPLOAD_URL, timeout=120000)
# 鐐瑰嚮 "涓婁紶瑙嗛" 鎸夐挳
- await page.locator("div[class^='video-main-page'] input").set_input_files(self.path_video)
+ upload_div = page.locator(".PL3VsCg3MxIPY5UYiCS_")
+ await upload_div.wait_for(state="visible", timeout=10000)
+ async with page.expect_file_chooser() as fc_info:
+ await upload_div.click()
+ file_chooser = await fc_info.value
+ await file_chooser.set_files(self.path_media)
+ await asyncio.sleep(2)
# 绛夊緟椤甸潰璺宠浆鍒版寚瀹氱殑 URL
- while True:
- # 鍒ゆ柇鏄槸鍚﹁繘鍏ヨ棰戝彂甯冮〉闈紝娌¤繘鍏ワ紝鍒欒嚜鍔ㄧ瓑寰呭埌瓒呮椂
+ for i in range(10):
try:
await page.locator("div#formMain:visible").wait_for(timeout=30000)
break
except:
- self.logger.info("姝e湪绛夊緟杩涘叆瑙嗛鍙戝竷椤甸潰...")
+ self.logger.info(f"绗� {i+1} 娆″皾璇曪細姝e湪绛夊緟杩涘叆瑙嗛鍙戝竷椤甸潰...")
await asyncio.sleep(0.1)
+ else:
+ self.logger.warning("瓒呰繃鏈�澶у皾璇曟鏁帮紝浠嶆湭杩涘叆瑙嗛鍙戝竷椤甸潰銆�")
# 濉厖鏍囬鍜岃瘽棰�
# 杩欓噷涓轰簡閬垮厤椤甸潰鍙樺寲锛屾晠浣跨敤鐩稿浣嶇疆瀹氫綅锛氫綔鍝佹爣棰樼埗绾у彸渚х涓�涓厓绱犵殑input瀛愬厓绱�
@@ -139,13 +182,13 @@
upload_status = await self.uploading_video(page)
if not upload_status:
- self.logger.error(f"鍙戠幇涓婁紶鍑洪敊浜�... 鏂囦欢:{self.path_video}")
+ self.logger.error(f"鍙戠幇涓婁紶鍑洪敊浜�... 鏂囦欢:{self.path_media}")
raise
# 鍒ゆ柇瑙嗛灏侀潰鍥炬槸鍚︾敓鎴愭垚鍔�
while True:
self.logger.info("姝e湪纭灏侀潰瀹屾垚, 鍑嗗鍘荤偣鍑诲畾鏃�/鍙戝竷...")
- if await page.locator("div.cheetah-spin-page img").count():
+ if await page.locator("div.erVanTLKMOvnU7OgFaoD img").count():
self.logger.info("灏侀潰宸插畬鎴愶紝鐐瑰嚮瀹氭椂/鍙戝竷...")
break
else:
@@ -166,5 +209,5 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
\ No newline at end of file
diff --git a/auto_media_publisher/uploaders/uploader_base.py b/auto_media_publisher/uploaders/uploader_base.py
index b753404..8665f27 100644
--- a/auto_media_publisher/uploaders/uploader_base.py
+++ b/auto_media_publisher/uploaders/uploader_base.py
@@ -38,7 +38,7 @@
if not os.path.exists(self.cookie_path):
self.logger.info(f"{ self.cookie_path} DOES NOT exist. Please Try login first.")
return
- self.context = await self.browser.new_context(storage_state=f"{self.cookie_path}", user_agent=DEFAULT_USER_AGENT)
+ self.context = await self.browser.new_context(storage_state=f"{self.cookie_path}", user_agent=DEFAULT_USER_AGENT,viewport={"width": 1920, "height": 1080})
if os.path.exists(PLAYWRIGHT_STEALTH_JS_PATH):
await self.context.add_init_script(path=Path(PLAYWRIGHT_STEALTH_JS_PATH))
await self.context.grant_permissions(['geolocation'])
@@ -64,12 +64,12 @@
await self._init_broswer_context()
for key, value in task_info.items():
setattr(self, key, value)
- # 灏濊瘯杞崲 publish_datetime 涓� datetime 瀵硅薄
- if hasattr(self, 'publish_datetime') and isinstance(self.publish_datetime, str):
+ # 灏濊瘯杞崲 scheduled_time 涓� datetime 瀵硅薄
+ if hasattr(self, 'scheduled_time') and isinstance(self.scheduled_time, str):
try:
- self.publish_datetime = datetime.strptime(self.publish_datetime, "%Y-%m-%d %H:%M")
+ self.scheduled_time = datetime.strptime(self.scheduled_time, "%Y-%m-%d %H:%M:%S")
except Exception as e:
- self.logger.error(f"{self.user},{self.platform}鍙戠敓閿欒,鏃ユ湡杞崲 {self.publish_datetime},{e}")
+ self.logger.error(f"{self.user},{self.platform}鍙戠敓閿欒,鏃ユ湡杞崲 {self.scheduled_time},{e}")
try:
return await self._upload_core()
except Exception as e:
diff --git a/auto_media_publisher/uploaders/uploader_bilibili.py b/auto_media_publisher/uploaders/uploader_bilibili.py
index 488623c..6e364f3 100644
--- a/auto_media_publisher/uploaders/uploader_bilibili.py
+++ b/auto_media_publisher/uploaders/uploader_bilibili.py
@@ -14,24 +14,24 @@
await page.locator(".switch-roll").first.click()
await asyncio.sleep(1)
- publish_date = self.publish_datetime.strftime("%Y-%m-%d")
- publish_month = self.publish_datetime.strftime("%Y骞�%m鏈�")
- exact_day = str(self.publish_datetime.day)
+ scheduled_date = self.scheduled_time.strftime("%Y-%m-%d")
+ scheduled_month = self.scheduled_time.strftime("%Y骞�%m鏈�")
+ exact_day = str(self.scheduled_time.day)
await page.locator(".date-show-icon").first.click()
await asyncio.sleep(1)
- if publish_month != await page.locator("p.date-picker-nav-title").text_content():
+ if scheduled_month != await page.locator("p.date-picker-nav-title").text_content():
await page.locator(".next-btn-day.icon-sprite.icon-sprite-ic_into").click()
await asyncio.sleep(1)
await page.get_by_text(exact_day, exact=True).click()
await asyncio.sleep(1)
- exact_hour = f"{self.publish_datetime.hour:02d}"
- exact_min = f"{self.publish_datetime.minute:02d}"
+ exact_hour = f"{self.scheduled_time.hour:02d}"
+ exact_min = f"{self.scheduled_time.minute:02d}"
await page.locator(".date-picker-timer > .date-show-icon").click()
await asyncio.sleep(0.5)
- await page.locator('div.time-picker-panel-select-wrp').nth(0).locator(f'span:nth-child({self.publish_datetime.hour + 1})').click()
- minute_index = ((self.publish_datetime.minute // 5) * 5 // 5) + 1 # 搴忓彿浠�1寮�濮�
+ await page.locator('div.time-picker-panel-select-wrp').nth(0).locator(f'span:nth-child({self.scheduled_time.hour + 1})').click()
+ minute_index = ((self.scheduled_time.minute // 5) * 5 // 5) + 1 # 搴忓彿浠�1寮�濮�
await page.locator('div.time-picker-panel-select-wrp').nth(1).locator(f'span:nth-child({minute_index})').click()
await asyncio.sleep(1)
@@ -58,7 +58,7 @@
async with page.expect_file_chooser() as fc_info:
await upload_div.click()
file_chooser = await fc_info.value
- await file_chooser.set_files(self.path_video)
+ await file_chooser.set_files(self.path_media)
await asyncio.sleep(2)
max_retries = 60 # 璁剧疆鏈�澶ч噸璇曟鏁�,鏈�澶х瓑寰呮椂闂翠负 2 鍒嗛挓
@@ -127,7 +127,7 @@
await page.get_by_title(self.category).click()
# 瀹氭椂鍙戝竷
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
await self.set_schedule_time(page)
# 鍒ゆ柇瑙嗛鏄惁鍙戝竷鎴愬姛
@@ -152,5 +152,5 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
\ No newline at end of file
diff --git a/auto_media_publisher/uploaders/uploader_douyin.py b/auto_media_publisher/uploaders/uploader_douyin.py
index 27f6936..f9eec6b 100644
--- a/auto_media_publisher/uploaders/uploader_douyin.py
+++ b/auto_media_publisher/uploaders/uploader_douyin.py
@@ -18,11 +18,11 @@
# 鍦ㄩ�変腑鐨� label 鍏冪礌涓嬬偣鍑� checkbox
await label_element.click()
await asyncio.sleep(1)
- publish_datetime_hour = self.publish_datetime.strftime("%Y-%m-%d %H:%M")
+ scheduled_time_hour = self.scheduled_time.strftime("%Y-%m-%d %H:%M")
await asyncio.sleep(1)
await page.locator('.semi-input[placeholder="鏃ユ湡鍜屾椂闂�"]').click()
await page.keyboard.press("Control+KeyA")
- await page.keyboard.type(str(publish_datetime_hour))
+ await page.keyboard.type(str(scheduled_time_hour))
await page.keyboard.press("Enter")
await asyncio.sleep(1)
except Exception as e:
@@ -67,11 +67,11 @@
async def handle_upload_error(self, page):
self.logger.info('瑙嗛鍑洪敊浜嗭紝閲嶆柊涓婁紶涓�')
- await page.locator('div.progress-div [class^="upload-btn-input"]').set_input_files(self.path_video)
+ await page.locator('div.progress-div [class^="upload-btn-input"]').set_input_files(self.path_media)
async def _try_upload_mp4_and_wait(self,page):
try:
- await page.locator("div[class^='container'] input").set_input_files(self.path_video)
+ await page.locator("div[class^='container'] input").set_input_files(self.path_media)
while True:
# 鍒ゆ柇閲嶆柊涓婁紶鎸夐挳鏄惁瀛樺湪锛屽鏋滀笉瀛樺湪锛屼唬琛ㄨ棰戞鍦ㄤ笂浼狅紝鍒欑瓑寰�
try:
@@ -92,7 +92,7 @@
await asyncio.sleep(2)
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
async def _try_set_tilte_and_description(self,page):
@@ -131,7 +131,7 @@
await page.locator(third_part_element).locator('input.semi-switch-native-control').click()
# 5銆佽缃畾鏃跺彂甯�
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
await self.set_schedule_time_douyin(page)
@@ -158,5 +158,5 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
diff --git a/auto_media_publisher/uploaders/uploader_gongzhonghao.py b/auto_media_publisher/uploaders/uploader_gongzhonghao.py
new file mode 100644
index 0000000..30dac20
--- /dev/null
+++ b/auto_media_publisher/uploaders/uploader_gongzhonghao.py
@@ -0,0 +1,236 @@
+# -*- coding: utf-8 -*-
+from playwright.async_api import Page
+import asyncio
+from auto_media_publisher.uploaders.uploader_base import UploaderBase
+from datetime import datetime,date
+import re
+
+CONTENT_UPLOAD_URL="https://mp.weixin.qq.com/"
+PUBLISH_SECCESSFULL_URL = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index"
+
+
+class UploaderGongzhonghao(UploaderBase):
+
+ async def wai_for_upload(self,new_page,selector):
+ await new_page.evaluate(f'''() => {{
+ const container = document.querySelector('{selector}');
+ if (container) {{
+ const input = container.querySelector('input[type="file"]'); // 浠庣埗鍏冪礌寮�濮嬫煡鎵�
+ if (input) {{
+ input.style.display = 'block'; // 鏀瑰彉 display 涓� block锛屼娇鍏跺彲瑙�
+ input.style.visibility = 'visible'; // 浣垮叾鍙
+ input.style.opacity = '1'; // 纭繚瀹冨畬鍏ㄩ�忔槑
+ }}
+ }}
+ }}''')
+
+ async def set_schedule_time(self, new_page):
+ try:
+ save_publish= await new_page.wait_for_selector("#js_send button", timeout=60000)
+ await save_publish.click(force=True)
+ await asyncio.sleep(2)
+ send_option_div = await new_page.wait_for_selector(".weui-desktop-dialog__ft", timeout=60000)
+
+ if self.scheduled_time > datetime.now() :
+ await new_page.locator(".mass-send__td-setting > .publish_container > .weui-desktop-form__controls > .mass-send__timer-wrp > .weui-desktop-switch > .weui-desktop-switch__box").click()
+
+ delta_days = (self.scheduled_time.date() - date.today()).days
+ if delta_days > 0:
+ await new_page.locator("dt").filter(has_text="浠婂ぉ 浠婂ぉ").click()
+ option_text = "鏄庡ぉ" if delta_days==1 else f"鏈坽self.scheduled_time.day}鏃�"
+ #day_selector = new_page.locator(f"li.weui-desktop-dropdown__list-ele_text").nth(delta_days)
+ #await day_selector.click()
+ await new_page.get_by_text(option_text).first.click()
+
+ await new_page.get_by_role("textbox", name="璇烽�夋嫨鏃堕棿").click()
+ await new_page.get_by_role("textbox", name="璇烽�夋嫨鏃堕棿").press("ControlOrMeta+a")
+ await new_page.get_by_role("textbox", name="璇烽�夋嫨鏃堕棿").fill(self.scheduled_time.strftime("%H:%M"))
+ await new_page.get_by_role("heading",name="鍙戣〃").click()
+
+ send_option_send = await send_option_div.wait_for_selector('text="鍙戣〃"',state="attached", timeout=600000)
+ await send_option_send.click(force=True)
+ await asyncio.sleep(3)
+
+
+ except Exception as e:
+ self.logger.error(f'[ERROR ] {self.user} , {self.platform} ,璁剧疆 鍙戝竷鏃堕棿 鍙戠敓閿欒锛歿e}')
+
+ async def set_cover_image(self,new_page):
+ try:
+ # 绛夊緟骞跺畾浣嶅埌 #js_cover_area 鍏冪礌
+ cover_area = await new_page.wait_for_selector('#js_cover_area')
+
+ # 鎮仠榧犳爣鍦� #js_cover_area 涓�
+ await cover_area.hover()
+ await new_page.get_by_role("link", name="浠庡浘鐗囧簱閫夋嫨").click()
+
+ image_upload_container = await new_page.wait_for_selector(".weui-desktop-dialog__bd", timeout=60000)
+ await self.wai_for_upload(new_page,".weui-desktop-dialog__bd")
+
+ image_input = await image_upload_container.wait_for_selector('input[type="file"]', timeout=60000)
+ await image_input.set_input_files(self.path_cover)
+
+
+ library_next_div = await new_page.wait_for_selector(".weui-desktop-dialog__ft", timeout=60000)
+ await library_next_div.evaluate('''(div) => {
+ return new Promise(resolve => {
+ const btn = Array.from(div.querySelectorAll('button')).find(el => el.innerText.trim() === '涓嬩竴姝�');
+ if (!btn) return;
+ // 鍒涘缓 MutationObserver 鐩戝惉 class 鍙樺寲
+ const observer = new MutationObserver(() => {
+ if (!btn.classList.contains('weui-desktop-btn_disabled')) {
+ observer.disconnect(); // 鍋滄鐩戝惉
+ resolve(true);
+ }
+ });
+ observer.observe(btn, { attributes: true, attributeFilter: ['class'] });
+
+ // 濡傛灉鍒濆鐘舵�佸氨婊¤冻鏉′欢锛岀洿鎺� resolve
+ if (!btn.classList.contains('weui-desktop-btn_disabled')) {
+ observer.disconnect();
+ resolve(true);
+ }
+ });
+ }''')
+
+ # 鎵惧埌鎸夐挳骞剁偣鍑�
+ next_btn = await library_next_div.wait_for_selector('text="涓嬩竴姝�"', state="attached", timeout=60000)
+ await next_btn.click(force=True)
+ # whole div has been changed
+ library_next_div = await new_page.wait_for_selector(".weui-desktop-dialog__ft", timeout=60000)
+ confirm_btn = await library_next_div.wait_for_selector('text="纭"',state="attached", timeout=600000)
+ await confirm_btn.scroll_into_view_if_needed() # 纭繚鎸夐挳婊氬姩鍒拌鍥�
+ await confirm_btn.click(force=True)
+
+ #wait for setting cover image:
+ preview_div_selector = 'div.js_cover_preview_new.select-cover__preview.first_appmsg_cover'
+ while True:
+ # 浣跨敤 evaluate 鏉ユ鏌� background-image 鏍峰紡灞炴��
+ has_background_image = await new_page.evaluate('''(selector) => {
+ const div = document.querySelector(selector);
+ if (div) {
+ const bgImage = window.getComputedStyle(div).getPropertyValue('background-image');
+ return bgImage.includes('https');
+ }
+ return false;
+ }''', preview_div_selector)
+
+ if has_background_image:
+ print("鑳屾櫙鍥惧凡鍔犺浇锛岀户缁墽琛屾搷浣�")
+ break # 鑳屾櫙鍥剧墖宸插姞杞斤紝璺冲嚭寰幆
+ else:
+ print("鑳屾櫙鍥炬湭鍔犺浇锛岀户缁瓑寰�")
+ await asyncio.sleep(1) # 姣忕妫�鏌ヤ竴娆�
+ await asyncio.sleep(1)
+ except Exception as e:
+ self.logger.error(f'[ERROR ] {self.user} , {self.platform} ,璁剧疆 灏侀潰 鍙戠敓閿欒锛歿e}')
+
+ async def upload_media_and_wait(self,new_page):
+ try:
+ await new_page.get_by_role("listitem", name="鏂囨。瀵煎叆").click()
+
+ import_container = await new_page.wait_for_selector("#js_import_file_container", timeout=60000)
+
+ await self.wai_for_upload(new_page,"#js_import_file_container")
+
+ file_input = await import_container.wait_for_selector('input[type="file"]', timeout=60000)
+ await file_input.set_input_files(self.path_media) # 鏇挎崲涓轰綘鐨勬枃浠惰矾寰�
+
+ await new_page.wait_for_selector("#js_import_file_container", state="hidden", timeout=60000)
+
+ self.logger.info(f"{self.user},{self.path_media} 鏂囦欢瀵煎叆瀹屾垚锛�")
+ await asyncio.sleep(1)
+
+ except Exception as e:
+ self.logger.error(f'[ERROR ] {self.user} , {self.platform} ,璁剧疆 灏侀潰 鍙戠敓閿欒锛歿e}')
+
+ async def set_title_and_description(self,new_page):
+ try:
+ # 璁剧疆鏍囬鍜屼綔鑰咃紝瑕佸湪瀵煎叆涔嬪悗锛屽惁鍒欎細琚慨鏀规帀
+ if self.title and len(self.title) >1:
+ title_textarea = await new_page.wait_for_selector("#title", timeout=60000)
+ await title_textarea.scroll_into_view_if_needed()
+ await title_textarea.click()
+ await new_page.keyboard.press('Control+A') # 瀵逛簬 Mac锛屽彲浠ヤ娇鐢� 'Meta+A'
+ await new_page.keyboard.press('Backspace')
+ await title_textarea.type(self.title, delay=50) # delay 鍙互鎺у埗杈撳叆鐨勯�熷害
+
+ author_input = await new_page.wait_for_selector("#author", timeout=60000)
+ await author_input.fill(self.author)
+
+ description_input = await new_page.wait_for_selector("#js_description", timeout=60000)
+ await description_input.fill(self.description)
+
+ await asyncio.sleep(1)
+
+ except Exception as e:
+ self.logger.error(f'[ERROR ] {self.user} , {self.platform} ,璁剧疆 鏍囬鍜屾弿杩� 鍙戠敓閿欒锛歿e}')
+
+ async def set_tags(self,new_page):
+ try:
+ await new_page.locator("#js_article_tags_area").get_by_text("鏈坊鍔�").click()
+ await new_page.locator('input[placeholder="璇烽�夋嫨鍚堥泦"]').click()
+ await asyncio.sleep(2)
+ # 鍙�夌涓�涓�
+ await new_page.locator('li.select-opt-li').nth(0).click()
+ '''
+ for tag in self.tags:
+ try:
+ await new_page.get_by_placeholder("杈撳叆鍚庢寜鍥炶溅鍒嗗壊").fill(tag)
+ await new_page.get_by_placeholder("杈撳叆鍚庢寜鍥炶溅鍒嗗壊").press("Enter")
+ except Exception as e:
+ print(f"娣诲姞鏍囩 '{tag}' 澶辫触: {str(e)}")
+ '''
+ await new_page.get_by_role("button", name="纭").click()
+ await asyncio.sleep(3)
+ except Exception as e:
+ self.logger.error(f'[ERROR ] {self.user} , {self.platform} ,璁剧疆 tag 鍙戠敓閿欒锛歿e}')
+
+ async def _upload_core(self) -> bool:
+ try:
+ # 鍒涘缓涓�涓柊鐨勯〉闈�
+ page = await self.context.new_page()
+ # 璁块棶鎸囧畾鐨� URL
+ await page.goto(CONTENT_UPLOAD_URL, timeout=120000)
+ self.logger.info(f'[ gongzhognhao ] {self.user} , {self.scheduled_time} 姝e湪鎵撳紑-鏂囩珷涓婁紶椤甸潰')
+ # 鐐瑰嚮鈥滄枃绔犫��
+ await page.locator(".new-creation__menu-content").first.click()
+
+ # 绛夊緟鏂扮獥鍙e嚭鐜板苟鍒囨崲
+ new_page = await page.context.wait_for_event("page")
+ await new_page.wait_for_load_state()
+
+ await self.upload_media_and_wait(new_page)
+
+ await self.set_title_and_description(new_page)
+ await self.set_cover_image(new_page)
+
+ if self.tags:
+ await self.set_tags(new_page)
+
+ # 瀹氭椂鍙戝竷
+ if self.scheduled_time:
+ await self.set_schedule_time(new_page)
+
+ # 鍒ゆ柇鏂囩珷鏄惁鍙戝竷鎴愬姛
+ await self.context.storage_state(path=self.cookie_path) # 淇濆瓨cookie
+ self.logger.info(f'{self.user},{self.platform} cookie鏇存柊瀹屾瘯锛�')
+ await asyncio.sleep(1) # 杩欓噷寤惰繜鏄负浜嗘柟渚跨溂鐫涚洿瑙傜殑瑙傜湅
+
+ await new_page.get_by_role("button", name="缁х画鍙戣〃").click()
+ await asyncio.sleep(3)
+
+ max_attempts = 10
+ for attempt in range(max_attempts):
+ try:
+ await new_page.wait_for_url(lambda url: url.startswith(PUBLISH_SECCESSFULL_URL), timeout=50000)
+ self.logger.info(f"{self.user},{self.path_media}鏂囩珷鍙戝竷鎴愬姛锛岄〉闈㈠凡璺宠浆鍒伴椤碉紒(灏濊瘯娆℃暟: {attempt + 1})")
+ return True
+ except TimeoutError:
+ print(f"灏濊瘯 {attempt + 1}/{max_attempts}锛氭湭璺宠浆鍒扮洰鏍囬〉闈紝缁х画绛夊緟...")
+ if attempt == max_attempts - 1:
+ print("杈惧埌鏈�澶у皾璇曟鏁帮紝鏂囩珷鍙戝竷澶辫触锛�")
+ return False
+ except Exception as e:
+ self.logger.error(f"{self.user} upload docx {self.path_media} fails, error is :{e}")
+ return False
\ No newline at end of file
diff --git a/auto_media_publisher/uploaders/uploader_kuaishou.py b/auto_media_publisher/uploaders/uploader_kuaishou.py
index 1338213..4610f54 100644
--- a/auto_media_publisher/uploaders/uploader_kuaishou.py
+++ b/auto_media_publisher/uploaders/uploader_kuaishou.py
@@ -12,7 +12,7 @@
async def set_schedule_time(self, page):
try:
self.logger.info("{self.user}, {self.platform} click schedule time......")
- publish_date_hour = self.publish_datetime.strftime("%Y-%m-%d %H:%M:%S")
+ scheduled_date_hour = self.scheduled_time.strftime("%Y-%m-%d %H:%M:%S")
await page.locator("label:text('鍙戝竷鏃堕棿')").locator('xpath=following-sibling::div').locator(
'.ant-radio-input').nth(1).click()
await asyncio.sleep(1)
@@ -21,7 +21,7 @@
await asyncio.sleep(1)
await page.keyboard.press("Control+KeyA")
- await page.keyboard.type(str(publish_date_hour))
+ await page.keyboard.type(str(scheduled_date_hour))
await page.keyboard.press("Enter")
await asyncio.sleep(1)
except Exception as e:
@@ -35,7 +35,7 @@
async with page.expect_file_chooser() as fc_info:
await upload_button.click()
file_chooser = await fc_info.value
- await file_chooser.set_files(self.path_video)
+ await file_chooser.set_files(self.path_media)
await asyncio.sleep(3)
# 绛夊緟鎸夐挳鍙氦浜�
@@ -96,7 +96,7 @@
# 2銆� 璁剧疆鏍囬鍜屾弿杩�
await self.set_title_and_description(page)
# 瀹氭椂浠诲姟
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
await self.set_schedule_time(page)
# 鍒ゆ柇瑙嗛鏄惁鍙戝竷鎴愬姛
@@ -126,7 +126,7 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
diff --git a/auto_media_publisher/uploaders/uploader_shipinhao.py b/auto_media_publisher/uploaders/uploader_shipinhao.py
index 57baa58..079cc87 100644
--- a/auto_media_publisher/uploaders/uploader_shipinhao.py
+++ b/auto_media_publisher/uploaders/uploader_shipinhao.py
@@ -15,7 +15,7 @@
await page.click('input[placeholder="璇烽�夋嫨鍙戣〃鏃堕棿"]')
- str_month = str(self.publish_datetime.month) if self.publish_datetime.month > 9 else "0" + str(self.publish_datetime.month)
+ str_month = str(self.scheduled_time.month) if self.scheduled_time.month > 9 else "0" + str(self.scheduled_time.month)
current_month = str_month + "鏈�"
# 鑾峰彇褰撳墠鐨勬湀浠�
page_month = await page.inner_text('span.weui-desktop-picker__panel__label:has-text("鏈�")')
@@ -32,14 +32,14 @@
if 'weui-desktop-picker__disabled' in await element.evaluate('el => el.className'):
continue
text = await element.inner_text()
- if text.strip() == str(self.publish_datetime.day):
+ if text.strip() == str(self.scheduled_time.day):
await element.click()
break
# 杈撳叆灏忔椂閮ㄥ垎锛堝亣璁鹃�夋嫨11灏忔椂锛�
await page.click('input[placeholder="璇烽�夋嫨鏃堕棿"]')
await page.keyboard.press("Control+KeyA")
- await page.keyboard.type(str(self.publish_datetime.hour))
+ await page.keyboard.type(str(self.scheduled_time.hour))
# 閫夋嫨鏍囬鏍忥紙浠ゅ畾鏃舵椂闂寸敓鏁堬級
await page.locator("div.input-editor").click()
@@ -49,7 +49,7 @@
await page.locator('div.media-status-content div.tag-inner:has-text("鍒犻櫎")').click()
await page.get_by_role('button', name="鍒犻櫎", exact=True).click()
file_input = page.locator('input[type="file"]')
- await file_input.set_input_files(self.path_video)
+ await file_input.set_input_files(self.path_media)
async def add_short_title(self, page):
short_title_element = page.get_by_text("鐭爣棰�", exact=True).locator("..").locator(
@@ -165,7 +165,7 @@
self.logger.info(f'[+]姝e湪涓婁紶-------{self.title}.mp4')
await page.wait_for_url(CONTENT_UPLOAD_URL, timeout=120000)
file_input = page.locator('input[type="file"]')
- await file_input.set_input_files(self.path_video)
+ await file_input.set_input_files(self.path_media)
# 濉厖鏍囬鍜岃瘽棰�
await self.add_title_tags(page)
# 娣诲姞鍟嗗搧
@@ -176,7 +176,7 @@
await self.add_original(page)
# 妫�娴嬩笂浼犵姸鎬�
await self.detect_upload_status(page)
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
await self.set_schedule_time_tencent(page)
# 娣诲姞鐭爣棰�
await self.add_short_title(page)
@@ -189,5 +189,5 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
diff --git a/auto_media_publisher/uploaders/uploader_tiktok.py b/auto_media_publisher/uploaders/uploader_tiktok.py
index ac1f968..7291649 100644
--- a/auto_media_publisher/uploaders/uploader_tiktok.py
+++ b/auto_media_publisher/uploaders/uploader_tiktok.py
@@ -31,7 +31,7 @@
n_calendar_month = datetime.strptime(calendar_month, '%B').month
- schedule_month = self.publish_datetime.month
+ schedule_month = self.scheduled_time.month
if n_calendar_month != schedule_month:
if n_calendar_month < schedule_month:
@@ -47,14 +47,14 @@
for i in range(valid_days):
day_element = valid_days_locator.nth(i)
text = await day_element.inner_text()
- if text.strip() == str(self.publish_datetime.day):
+ if text.strip() == str(self.scheduled_time.day):
await day_element.click()
break
# time set
await scheduled_picker.locator('div.TUXInputBox').nth(0).click()
- hour_str = self.publish_datetime.strftime("%H")
- correct_minute = int(self.publish_datetime.minute / 5)
+ hour_str = self.scheduled_time.strftime("%H")
+ correct_minute = int(self.scheduled_time.minute / 5)
minute_str = f"{correct_minute:02d}"
hour_selector = f"span.tiktok-timepicker-left:has-text('{hour_str}')"
@@ -77,7 +77,7 @@
async with page.expect_file_chooser() as fc_info:
await select_file_button.click()
file_chooser = await fc_info.value
- await file_chooser.set_files(self.path_video)
+ await file_chooser.set_files(self.path_media)
async def add_title_tags(self, page):
@@ -196,7 +196,7 @@
async with page.expect_file_chooser() as fc_info:
await upload_button.click()
file_chooser = await fc_info.value
- await file_chooser.set_files(self.path_video)
+ await file_chooser.set_files(self.path_media)
await self.add_title_tags(page)
# detect upload status
@@ -205,7 +205,7 @@
self.logger.info(f'[+] Uploading thumbnail file {self.title}.png')
await self.upload_thumbnails(page)
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
await self.set_schedule_time(page)
await self.click_publish(page)
@@ -216,5 +216,5 @@
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
diff --git a/auto_media_publisher/uploaders/uploader_twitterX.py b/auto_media_publisher/uploaders/uploader_twitterX.py
index 62dae24..86c3ca2 100644
--- a/auto_media_publisher/uploaders/uploader_twitterX.py
+++ b/auto_media_publisher/uploaders/uploader_twitterX.py
@@ -23,11 +23,11 @@
async def setPostScheduleDateTime(self, page):
self.logger.info(f"start to set publish date time ...{datetime}")
- await self.set_single_option(page,'#SELECTOR_3',self.publish_datetime.year) # year
- await self.set_single_option(page,'#SELECTOR_1', self.publish_datetime.month) # month
- await self.set_single_option(page,'#SELECTOR_2', self.publish_datetime.day) # day
- await self.set_single_option(page,'#SELECTOR_4', self.publish_datetime.hour) # hour
- await self.set_single_option(page,'#SELECTOR_5', self.publish_datetime.minute) # min
+ await self.set_single_option(page,'#SELECTOR_3',self.scheduled_time.year) # year
+ await self.set_single_option(page,'#SELECTOR_1', self.scheduled_time.month) # month
+ await self.set_single_option(page,'#SELECTOR_2', self.scheduled_time.day) # day
+ await self.set_single_option(page,'#SELECTOR_4', self.scheduled_time.hour) # hour
+ await self.set_single_option(page,'#SELECTOR_5', self.scheduled_time.minute) # min
# 纭鎸夐挳
await page.click('span:text("纭")')
await asyncio.sleep(1)
@@ -62,7 +62,7 @@
# 绛夊緟鏂囦欢閫夋嫨鍣ㄥ嚭鐜板苟涓婁紶瑙嗛
file_input = await page.wait_for_selector('input[type="file"]', timeout=10000)
- await file_input.set_input_files(self.path_video)
+ await file_input.set_input_files(self.path_media)
except Exception as e:
self.logger.info("鍙戝竷瑙嗛澶辫触锛屽彲鑳界綉椤靛姞杞藉け璐ヤ簡\n", e)
self.logger.info("鍙戝竷瑙嗛澶辫触锛屽彲鑳界綉椤靛姞杞藉け璐ヤ簡")
diff --git a/auto_media_publisher/uploaders/uploader_xiaohongshu.py b/auto_media_publisher/uploaders/uploader_xiaohongshu.py
index e70d6dd..8dcca8f 100644
--- a/auto_media_publisher/uploaders/uploader_xiaohongshu.py
+++ b/auto_media_publisher/uploaders/uploader_xiaohongshu.py
@@ -12,13 +12,13 @@
async def set_schedule_time(self, page):
try:
- publish_date_hour = self.publish_datetime.strftime("%Y-%m-%d %H:%M")
+ scheduled_date_hour = self.scheduled_time.strftime("%Y-%m-%d %H:%M")
await page.locator("label").filter(has_text="瀹氭椂鍙戝竷").locator("span").nth(1).click()
await asyncio.sleep(1)
await page.get_by_placeholder("閫夋嫨鏃ユ湡鍜屾椂闂�").click()
await asyncio.sleep(1)
await page.keyboard.press("Control+KeyA")
- await page.keyboard.type(str(publish_date_hour))
+ await page.keyboard.type(str(scheduled_date_hour))
await page.keyboard.press("Enter")
await asyncio.sleep(1)
except Exception as e:
@@ -64,7 +64,7 @@
async with page.expect_file_chooser() as fc_info:
await upload_button.click()
file_chooser = await fc_info.value
- await file_chooser.set_files(self.path_video)
+ await file_chooser.set_files(self.path_media)
await asyncio.sleep(2)
# wait for video upload finish
@@ -107,7 +107,7 @@
await self.set_cover_image(page)
# 瀹氭椂浠诲姟
- if self.publish_datetime != 0:
+ if self.scheduled_time != 0:
self.logger.info("姝e湪璁剧疆 瀹氭椂鍙戝竷 鏃堕棿...")
await self.set_schedule_time(page)
@@ -136,5 +136,5 @@
await asyncio.sleep(3)
return True
except Exception as e:
- self.logger.error(f"{self.user} upload video {self.path_video} fails, error is :{e}")
+ self.logger.error(f"{self.user} upload video {self.path_media} fails, error is :{e}")
return False
diff --git a/auto_media_publisher/utils/uploader_helper.py b/auto_media_publisher/utils/uploader_helper.py
index 46d8a21..d1ec63a 100644
--- a/auto_media_publisher/utils/uploader_helper.py
+++ b/auto_media_publisher/utils/uploader_helper.py
@@ -6,7 +6,7 @@
from auto_media_publisher.uploaders.uploader_baijiahao import UploaderBaijiahao
from auto_media_publisher.uploaders.uploader_xiaohongshu import UploaderXiaohongshu
from auto_media_publisher.uploaders.uploader_twitterX import UploaderTwitterX
-
+from auto_media_publisher.uploaders.uploader_gongzhonghao import UploaderGongzhonghao
platform_map = {
"douyin": UploaderDouyin,
"kuaishou": UploaderKuaishou,
@@ -16,6 +16,7 @@
"baijiahao": UploaderBaijiahao,
"tiktok": UploaderTiktok,
"twitterX": UploaderTwitterX,
+ "gongzhonghao":UploaderGongzhonghao
}
diff --git a/auto_media_publisher/utils/utils_text2image_pollinations.py b/auto_media_publisher/utils/utils_text2image_pollinations.py
index e8f2a30..f78411b 100644
--- a/auto_media_publisher/utils/utils_text2image_pollinations.py
+++ b/auto_media_publisher/utils/utils_text2image_pollinations.py
@@ -3,6 +3,8 @@
import datetime
import random
import os
+from io import BytesIO
+
from auto_media_publisher.config.conf_base import (
TRANSLATE_API_TEMPLATE,
POLLINATIONS_API_TEMPLATE,
@@ -77,9 +79,9 @@
if not filename:
now = datetime.datetime.now()
- filename = now.strftime("%Y%m%d%H%M%S") + ".jpg"
- if not filename.lower().endswith(".jpg"):
- filename += ".jpg"
+ filename = now.strftime("%Y%m%d%H%M%S") + ".png"
+ if not filename.lower().endswith(".png"):
+ filename += ".png"
with open(filename, "wb") as f:
f.write(content)
@@ -87,3 +89,17 @@
abs_path = os.path.abspath(filename)
print(f"[鉁揮 鍥剧墖宸蹭繚瀛橈細{abs_path}")
return abs_path
+
+ def generate_image_to_stream(self, prompt: str) -> BytesIO:
+ if not prompt.strip():
+ raise ValueError("鎻愮ず璇嶄笉鑳戒负绌�")
+
+ translated_prompt = self.translate_prompt(prompt)
+ url = self.build_url(translated_prompt)
+
+ content = self._fetch_with_retry(url)
+ if content is None:
+ return None
+
+ image_stream = BytesIO(content)
+ return image_stream
diff --git a/config/users/user_13381602515.json b/config/users/user_13381602515.json
index 2047250..9661e14 100644
--- a/config/users/user_13381602515.json
+++ b/config/users/user_13381602515.json
@@ -4,7 +4,7 @@
"username": "鏂芥暀缁�",
"city": "涓婃捣",
"proxy": "http://proxy.parkprofile.com:4753",
- "enabled": true,
+ "enabled": false,
"tags": [
"澶瀬楦�",
"鏈烘瀯鐢ㄦ埛"
diff --git a/config/users/user_18918594752.json b/config/users/user_18918594752.json
index ad910ef..6d91e92 100644
--- a/config/users/user_18918594752.json
+++ b/config/users/user_18918594752.json
@@ -13,8 +13,37 @@
"datetime_update": "2025-07-14T09:00:00",
"platforms": [
{
- "name": "kuaishou",
+ "name": "gongzhonghao",
+ "enabled": false,
+ "max_session_hour": 24,
+ "task_type": "docx_upload",
+ "task_ahead_days": 2,
+ "media_generator": "DocxGeneratorRewriter",
+ "media_generator_args": {
+ "docx_author": "灏忎紭",
+ "docx_dir":"E:/鍙ゅ師鏂囩珷鍚堥泦/output"
+ },
+ "upload_times": [
+ "08:00"
+ ]
+ },
+ {
+ "name": "gongzhonghao",
"enabled": true,
+ "max_session_hour": 24,
+ "task_type": "docx_upload",
+ "task_ahead_days": 4,
+ "media_generator": "DocxGeneratorCreator",
+ "media_generator_args": {
+ "docx_author": "灏忎紭浼�"
+ },
+ "upload_times": [
+ "08:00"
+ ]
+ },
+ {
+ "name": "kuaishou",
+ "enabled": false,
"max_session_hour": 24,
"task_type": "video_upload",
"task_ahead_days": 14,
@@ -31,7 +60,7 @@
},
{
"name": "baijiahao",
- "enabled": true,
+ "enabled": false,
"max_session_hour": 24,
"task_type": "video_upload",
"task_ahead_days": 7,
@@ -48,7 +77,7 @@
},
{
"name": "bilibili",
- "enabled": true,
+ "enabled": false,
"max_session_hour": 24,
"task_type": "video_upload",
"task_ahead_days": 5,
diff --git a/config/users/user_18918594752bukebuke.json b/config/users/user_18918594752bukebuke.json
index 6f730f9..7d8c3af 100644
--- a/config/users/user_18918594752bukebuke.json
+++ b/config/users/user_18918594752bukebuke.json
@@ -4,7 +4,7 @@
"username": "涓嶅彲涓嶅彲",
"city": "涓婃捣",
"proxy": "None",
- "enabled": true,
+ "enabled": false,
"tags": [
"娴嬭瘯璐﹀彿",
"鍛樺伐璐﹀彿"
diff --git a/data/auto_media_publisher.sqlite3 b/data/auto_media_publisher.sqlite3
index 2a3b573..a846672 100644
--- a/data/auto_media_publisher.sqlite3
+++ b/data/auto_media_publisher.sqlite3
Binary files differ
diff --git a/data/cookies/18918594752/gongzhonghao.json b/data/cookies/18918594752/gongzhonghao.json
new file mode 100644
index 0000000..4cfe59d
--- /dev/null
+++ b/data/cookies/18918594752/gongzhonghao.json
@@ -0,0 +1 @@
+{"cookies": [{"name": "ua_id", "value": "Yp8GoVBn7Tj0PWR7AAAAADaCnYPYpvql9WPFzFkbL_A=", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1788443924.066288, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "wxuin", "value": "53845090997782", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1788405090.13786, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "_clck", "value": "1oxp806|1|fy1|0", "domain": ".qq.com", "path": "/", "expires": 1785381090, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "uuid", "value": "8093d628ddf047d5a340ec437ca7fd08", "domain": "mp.weixin.qq.com", "path": "/", "expires": -1, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "rand_info", "value": "CAESIEjp7aANF1MLCho4lIEi6Ju8oYLEexqCUxELmbqpfG3Y", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "slave_bizuin", "value": "3932822909", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "data_bizuin", "value": "3932822909", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "bizuin", "value": "3932822909", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "data_ticket", "value": "TXXMQ0chAAhF8D9olYk9AhfbDAjnS2jHUUO8GHs0e45nt6P/zjA38GlY5q12SD0E", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "slave_sid", "value": "OHl1NHRHZjd2N3poQTFDQ2d5WVBBWnJ5bm9obkZNVjZGank5S2dxSUMwblRqeFUwalBSNEpTbHlrMjZ6cUtxT2dRWk9NdElDcGRmUko1a1F4MENlUWFja0FvVjZDZnY0RXVkT0NiNUJnOVlITGQzOHRGYTBLUG10UEZzSzJhdWozakN1SUo5VXZRNmdkUGlz", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "slave_user", "value": "gh_5624b93dc545", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1754229560, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "xid", "value": "fedc4a4eeb3b124f5812d5b88b1265f4", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1788405116.292443, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "mm_lang", "value": "zh_CN", "domain": "mp.weixin.qq.com", "path": "/", "expires": 1788405116.292574, "httpOnly": false, "secure": true, "sameSite": "Lax"}, {"name": "_clsk", "value": "19x6m1p|1753883936581|2|1|mp.weixin.qq.com/weheat-agent/payload/record", "domain": ".qq.com", "path": "/", "expires": 1753970336, "httpOnly": false, "secure": false, "sameSite": "Lax"}], "origins": [{"origin": "https://mp.weixin.qq.com", "localStorage": [{"name": "USER_AGENT_BROWSER_MAJOR_VERSION", "value": "127"}, {"name": "loginMode", "value": "1"}, {"name": "adTransitionText", "value": "noAdText"}, {"name": "hasClick", "value": "[0]"}]}]}
\ No newline at end of file
diff --git a/test/test_upload.py b/test/test_upload.py
index 2072eb7..9f1bf9a 100644
--- a/test/test_upload.py
+++ b/test/test_upload.py
@@ -7,12 +7,12 @@
async def main():
if len(sys.argv) < 3:
print("python test_upload.py [user] [PLATFORM] [proxy] [JSON_PATH] ")
- print("python test_upload.py 18918594752 xiaohongshu None data/video_final/18918594752bukebuke/test.json")
- print("[PLATFORM] douyin, kuaishou, shipinhao, xiaohongshu, bilibili, baijiahao, tiktok, twitterX, all")
+ print("python test_upload.py 18918594752 xiaohongshu None data/media_final/18918594752bukebuke/test.json")
+ print("[PLATFORM] douyin, kuaishou, shipinhao, xiaohongshu, bilibili, baijiahao, tiktok, twitterX, gongzhonghao")
return
handler = await create_media_uploader(user=sys.argv[1],platform=sys.argv[2],proxy=sys.argv[3])
- await handler.upload(load_json(sys.argv[4]))
+ await handler.upload_and_close(load_json(sys.argv[4]))
if __name__ == "__main__":
asyncio.run(main())
\ No newline at end of file
--
Gitblit v1.9.1