| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856 |
- import time, json
- import traceback
- import urllib.parse
- from tqdm.asyncio import tqdm
- from .recycle_daily_publish_articles import UpdateRootSourceIdAndUpdateTimeTask
- from .recycle_daily_publish_articles import Const
- from applications.crawler.wechat import get_article_list_from_account
- from applications.crawler.wechat import get_article_detail
- from applications.pipeline import insert_outside_article_into_recycle_pool
- from applications.api import feishu_robot
- account_name_set = {
- "念念私语",
- "发现趣论奇闻",
- "一晴方春",
- "生活技巧悦读",
- "妙招百科享生活",
- "精选问候祝福寄语",
- "生活实用妙招收录",
- "生活妙计通",
- "逸事趣闻说",
- "天天一起跳广场舞",
- "零点生活志",
- "居家生活实录",
- "生活妙招实录",
- "生活妙招点子库",
- "生活百科巧事通",
- "早晨送你暖心祝福",
- "生活情感感悟",
- "家庭百科大全",
- "清晨早安温馨问候",
- "经典祝福语大全集",
- "日常技巧全书",
- "无忧生活锦囊",
- "家庭妙方实录",
- "生活技巧宝藏库",
- "妙招集锦全书",
- "乐享技巧馆",
- "暖心问候语录",
- "乐享技巧汇",
- "巧手理想家",
- "品质生活有妙招",
- "生活妙招万家通",
- "生活妙招大赏",
- "温暖祝福语大全",
- "好愿祝福语录",
- "精选日常祝福语",
- "邻家生活点滴",
- "创新生活妙招百科",
- "小技巧生活录",
- "妙生活家手记",
- "生活窍门事事通",
- "巧手技巧百科",
- "生活技巧小支招",
- "趣生活百科",
- "生活妙用技巧合集",
- "日常祝福语大全",
- "妙招达人养成记",
- "妙生活锦囊",
- "生活百科一点知",
- "生活妙计科普馆",
- "巧妈生活妙招助手",
- "小窍门生活录",
- "好生活点点通",
- "实用技巧馆",
- "生活情感肆读",
- "生活技巧小奥秘",
- "送温暖祝福精选",
- "生活妙招选集",
- "每日祝福语问候",
- "日常生活点子库",
- "每日好友祝福集",
- "节气祝福问候录",
- "趣味生活铺子",
- "居家生活妙招大全",
- "落日情绪屋",
- "邻家生活技巧",
- "每日精选祝福语录",
- "邻家生活有妙招",
- "妙招集合录",
- "多学生活技巧",
- "祝福问候手册",
- "点滴生活坊",
- "早安心语合集",
- "微情话语录",
- "邻家妙招知识宝典",
- "生活妙招好能手",
- "节庆祝福语大全",
- "精选早安祝福合集",
- "节日问候语大全",
- "居家生活妙招技巧",
- "精选早安问候语合集",
- "治愈情感宝典",
- "生活小妙知",
- "生活妙想指南",
- "技巧达人站",
- "幸福语录精选",
- "技巧生活手册",
- "早安祝福语集",
- "家居生活小窍门全集",
- "祝福问候大集锦",
- "乐活研究社",
- "实用生活365",
- "无忧生活小支招",
- "家有妙计百变通",
- "生活技巧智慧库",
- "点滴乐活小妙招",
- "早安问候精选祝福",
- "生活妙招巧思汇",
- "热门广场舞大全",
- "中老年妙招大全",
- "技巧百变生活馆",
- "生活巧手指南",
- "有妙招享生活",
- "巧手生活录",
- "生活技巧我知道",
- "每日早晚安祝福语录",
- "情暖祝福语录",
- "有趣生活妙招屋",
- "家居生活趣用",
- "日常生活妙招百科",
- "灵巧生活一点通",
- "拾遗情感铺",
- "广场歌舞热榜",
- "邻里妙方百科",
- "妙招技巧帮",
- "经典广场舞热榜",
- "早安祝福集大全",
- "祝福语每日送",
- "情感情报库",
- "生活妙招技巧汇",
- "实用妙招宝",
- "巧思收集录",
- "日用妙招点点通",
- "家庭技巧生活录",
- "每日早安祝福集",
- "清晨祝福合集",
- "技巧生活集萃",
- "生活妙思巧手集",
- "晨间送祝语",
- "便捷小妙招",
- "趣招一点通",
- "妙招收集馆",
- "情感慢读",
- "安心祝福集",
- "生活技巧点子库",
- "懂点技巧吧",
- "技巧能手妙招库",
- "事事妙招集锦",
- "祝福语合集",
- "技巧生活录",
- "生活妙思小帮手",
- "暖心祝福寄语录",
- "生活妙计百宝库",
- "每日祝福语选集",
- "巧手常识集锦",
- "日常祝福问候语",
- "日常问候心愿语录",
- "小窍门宝典",
- "情感阅读舍",
- "精选日常祝福",
- "生活小机智",
- "生活乐享君",
- "早上好心情祝福",
- "幸福小窍门",
- "绸缪情感铺",
- "晨间暖心语录",
- "生活妙方宝典",
- "生活妙招点通铺",
- "美好微祝福语录",
- "生活最有招",
- "祝福语温暖问候集锦",
- "节日问候温馨祝福",
- "每日幸福语录集锦",
- "生活巧招点子库",
- "生活情感课堂",
- "情感避风湾",
- "实用生活小方法",
- "什锦生活录",
- "晨间祝福语精选",
- "巧居生活妙招站",
- "巧知生活集",
- "日常妙招收集录",
- "技巧生活百知",
- "居家小妙术",
- "时光说情感",
- "好愿祝福温馨问候",
- "最美祝愿问候",
- "生活妙招乐享",
- "情绪解忧屋",
- "生活妙招空间站",
- "乐活技巧馆",
- "如意祝福选集",
- "日常技巧大讲堂",
- "三分钟技巧集",
- "情感生活百态",
- "早安问候语精选大全",
- "招招妙招百事通",
- "经典热门广场舞曲",
- "日常生活技能大全",
- "一点儿窍门馆",
- "邻家生活技巧合集",
- "每日送祝福手册",
- "早上好常用祝福问候",
- "妙招巧生活杂货铺",
- "生活全知通",
- "友友刷刷看",
- "退休也乐呵",
- "奇闻怪异集",
- "退休养老攻略",
- "竹边生活记",
- "诡秘奇闻记",
- "趣味生活简记",
- "生活墨记",
- "企退老人心声",
- "生活静语",
- "生活趣时光",
- "生活向暖",
- "老年退休小贴士",
- "退休乐时光",
- "生活趣谈会",
- "生活百科闲谈",
- "生活志记",
- "退休生活报告",
- "奇闻趣世界",
- "日常饮食百科",
- "趣享生活时光",
- "趣读奇闻汇",
- "生活点滴小栈",
- "浮光生活记",
- "生活解忧坊",
- "生活多彩时光",
- "退休生活那些事",
- "生活茶话集",
- "美好生活闲谈",
- "民间奇闻集",
- "生活百味记",
- "悠享生活指南",
- "杂谈异闻社",
- "饮食智慧屋",
- "漫谈奇闻社",
- "退休生活驿站",
- "幸福养身大全",
- "生活念记",
- "生活栖风",
- "生活沐暖",
- "生活絮事记",
- "生活集韵",
- "轻享生活记",
- "幽巷奇闻谈",
- "饮食匠心录",
- "生活畅聊集",
- "鉴赏奇闻集",
- "生活拾碎光",
- "企业退休杂谈",
- "智慧退休计划",
- "老年退休指南",
- "饮食创意坊",
- "趣闻奇谈汇",
- "生活漫读集",
- "生活趣事乐园",
- "慢品生活味",
- "企退老年乐园",
- "生活悠闲记",
- "生活饮食百科",
- "畅享饮食集",
- "幸福生活乐园",
- "退休知识宝典",
- "生活流年记",
- "生活知百味",
- "生活感悟集",
- "精致饮食指南",
- "生活知识宝典",
- "\\N",
- "沧桑时光生活",
- "自得美好生活",
- "生活暖暖舒心",
- "每日技巧集",
- "温暖问候精选",
- "百惠优生活",
- "生活爱问百科",
- "技巧便生活",
- "生活一点知",
- "精选祝福问候大全",
- "巧手生活碎片",
- "巧思知识库",
- "温暖祝福寄语",
- "智巧日常百宝库",
- "招招巧手汇",
- "早安祝福精选手册",
- "每日祝福寄语",
- "生活技能百科全知",
- "生活妙招窍门指南",
- "美好生活智慧录",
- "生活妙招小工匠",
- "幸知情感书房",
- "便捷生活通",
- "心享好生活",
- "祝福语录问候精选",
- "解忧生活铺",
- "家庭妙招站",
- "智享生活巧招",
- "早上好祝福问候心语",
- "技巧达人生活馆",
- "暖心幸福语集",
- "养身百科常谈",
- "省时省力小技巧",
- "妙招干货合集",
- "万事生活通",
- "每日精选祝福寄语",
- "祝福语正能量问候大全",
- "生活妙手多",
- "妙生活集市录",
- "生活无忧大全",
- "巧手生活技巧指南",
- "窍门百事通",
- "生活锦囊妙集",
- "技巧生活大全",
- "知著书局",
- "生活妙招百家录",
- "邻里生活妙招宝典",
- "技巧百变馆",
- "趣招技巧生活通",
- "家庭窍门实录",
- "快乐祝福语录集",
- "合家欢乐祝福问候",
- "日常家居技能",
- "好友祝福正能量语录",
- "百科巧事万事通",
- "巧手生活百科",
- "巧手生活体验馆",
- "每日祝福语早安语录",
- "情感经典说",
- "纷云说",
- "家庭妙招优选",
- "生活能手妙招",
- "居家生活实用小妙招",
- "巧生活妙招馆",
- "妙招干货铺",
- "速学妙招录",
- "科普生活小帮手",
- "祝福语热门精选",
- "美满祝福语录",
- "畅想生活招",
- "技巧百科巧招",
- "经典情感祝福语录",
- "耀舟实用妙招汇",
- "祝福心语选集",
- "节日问候语选集",
- "居家技能全书",
- "祝福贺词精选",
- "一起跳个广场舞",
- "小窍门大帮手",
- "精选问候语送祝福",
- "生活妙招收录馆",
- "家用妙招技巧集",
- "邻家生活小妙招",
- "温馨问候语集",
- "真心祝福暖心问候",
- "技巧实用生活馆",
- "实用生活妙招全录",
- "百科妙招一点通",
- "妙招百科集",
- "花好月圆吉祥祝福",
- "妙招知识通",
- "创意生活技巧集",
- "颜夕漫读",
- "美好祝福日常集锦",
- "邻里技能宝典",
- "早上好暖心祝福语录",
- "妙享生活妙招社",
- "微看情感好文",
- "节日祝福常用问候语录",
- "暖心祝愿语录",
- "乐活妙招小帮手",
- "友友过来看",
- "静好生活社",
- "漫读生活指南",
- "中老年饮食杂谈",
- "生活之百科",
- "生活微光志",
- "生活图鉴",
- "生活漫记簿",
- "奇闻秘传",
- "生活轻描记",
- "退休生活百科",
- "生活拾光机",
- "日常慧窍门",
- "奇闻汐语",
- "家庭饮食宝典",
- "分享建康知识",
- "老年健康生活",
- "异闻奇谈录",
- "江湖奇闻记",
- "烟火慢生活",
- "奇闻逸事阁",
- "饮食养身秘诀",
- "慢享生活记",
- "生活山河集",
- "养老微光录",
- "甄选生活册",
- "居家生活指南",
- "老年退休手册",
- "生活知趣多",
- "流年新生活",
- "林下思忆",
- "忆往深情",
- "生活百科小常识",
- "春耕秋实录",
- "生活技巧锦囊大全",
- "趣享生活社",
- "每日圆满祝福",
- "微读情感驿站",
- "巧手来当家",
- "祝福问候早安手册",
- "日用窍门大全",
- "365天早安祝福问候",
- "趣事说奇闻",
- "技巧百科说",
- "趣闻奇谈录",
- "生活能手宝典",
- "日日送福语",
- "小妙招锦囊",
- "幸福生活事事通",
- "生活巧思屋",
- "温情祝福合集",
- "日常家居小智慧",
- "祝福语暖心语录精选",
- "生活妙招日志",
- "生活妙招因子",
- "早晚安正能量问候大全",
- "优选早安问候语",
- "巧手生活知识馆",
- "礼貌问候祝福语",
- "日常生活小工匠",
- "百科技巧生活屋",
- "美好祝福问候语集",
- "幸福问候祝福馆",
- "早安祝福温馨问候",
- "优享生活妙招社",
- "生活集事通",
- "邻家妙招集合录",
- "情感碎语",
- "一招妙生活",
- "日常祝福语录合集",
- "明月观尘",
- "技巧百科生活屋",
- "奇妙知识生活库",
- "祝福早安每日集锦",
- "暖心问候心语",
- "生活常识技能馆",
- "每日一祝福精选",
- "小技巧百科馆",
- "生活妙招物语",
- "妙招百科全录",
- "日常窍门百事通",
- "祝福节日问候馆",
- "巧手新生活",
- "退休时光宝典",
- "快乐开心最重要",
- "生活浅酌",
- "退休日常百科",
- "记录农村日常",
- "退休常识宝典",
- "闲谈养老生活",
- "退休老年乐园",
- "精选退休大全",
- "饮食趣发现",
- "精选退休录",
- "奇闻实记",
- "退休谈生活",
- "每日建康小妙招",
- "诡夜奇闻录",
- "每日饮食推荐",
- "生活闲语",
- "天天饮食搭配",
- "镜像奇闻录",
- "饮食慢品",
- "老年饮食合集",
- "妙趣生活集",
- "生活锦记",
- "生活行语",
- "退休好岁月",
- "生活智行记",
- "饮食新风尚",
- "经典家常食谱",
- "优选生活笔记",
- "趣谈奇闻集",
- "落月情绵",
- "安然若似",
- "看生活有妙招",
- "云露华浓",
- "悦读时光书房",
- "生活百科妙招通",
- "俏生活有妙招",
- "实用生活妙招指南",
- "妙招集锦百宝箱",
- "情感避风溏",
- "岁月乐活集",
- "奇闻妙趣谈",
- "小客精选团",
- "邻家妙招巧事通",
- "趣味生活指南",
- "生活技巧百招馆",
- "小妙招大智慧",
- "幸福语录祝语",
- "实用窍门馆",
- "优生活妙招学习馆",
- "邻家妙招实用技巧",
- "技能生活小贴士",
- "静听情感语录",
- "家居技能秘籍",
- "温馨祝福语早上好",
- "精选节日祝福语录",
- "美满祝福大全",
- "家庭日用妙招",
- "祝福贴心语录",
- "老年金色岁月",
- "退休都来看",
- "快乐金秋生活",
- "人老天地宽",
- "奇闻怪谈志",
- "异度奇闻录",
- "退休悦读汇",
- "养老生活感悟",
- "退休岁月杂谈",
- "生活小窍门推荐",
- "家庭饮食百科",
- "老年生活食谱",
- "奇闻幻彩集",
- "趣说奇闻汇",
- "退休铭记",
- "退休生活小贴士",
- "感受退休生活",
- "生活微光闲语",
- "智慧妙招生活",
- "甄选生活社",
- "生活识百味",
- "奇闻趣集",
- "每日妙招共享",
- "鉴赏生活日记",
- "生活窍门50条",
- "奇事异闻录",
- "奇闻好看",
- "秘探奇闻录",
- "记录退休秘籍",
- "家庭食谱合集",
- "与心浮沉",
- "唯美微情感",
- "春月不惜",
- "心怡趣论奇闻",
- "老年生活有依",
- "别样新生活",
- "居家幸福老人",
- "暖心情感屋",
- "点滴妙招乐生活",
- "日常祝福温馨问候",
- "生活必备技巧集",
- "小妙招大用途",
- "会点生活小妙招",
- "生活百科常识库",
- "巧思巧手汇聚集",
- "深情驿站",
- "早安祝福问候精选",
- "一招一生活",
- "温馨问候祝福语录",
- "每日问候暖心语录",
- "奇闻趣谈社",
- "生活妙招技巧通",
- "无忧巧生活",
- "妙招百事帮",
- "一招一巧生活馆",
- "老年生活愉快",
- "养老生活讲堂",
- "农村知识铺",
- "居家常用秘籍",
- "品质退休生活",
- "万象奇闻录",
- "退休养老之路",
- "名厨美食推荐",
- "记录养老生活",
- "中老年退休知识",
- "实用退休知识",
- "生活辰光记",
- "极光奇闻",
- "奇闻放大镜",
- "退休生活讲堂",
- "奇事百闻录",
- "退休生活新视角",
- "生活色彩斑斓",
- "迎风好生活",
- "闲庭信步生活",
- "生活其乐融融",
- "雾里云淡",
- "雨凉思情",
- "矜柔人生",
- "生活智慧妙招姐",
- "圆满祝福精选",
- "温馨问候语集锦",
- "实用生活技能合集",
- "生活趣事笔记",
- "生活解语",
- "奇谈趣闻社",
- "奇人见闻",
- "退休生活好帮手",
- "奇闻集锦",
- "退休老年社群",
- "奇闻故事栈",
- "企退生活日记",
- "分享生活小常识",
- "中老年美食圈",
- "退休生活常识",
- "精选退休美文",
- "休闲养老生活",
- "养老退休指南",
- "安享退休事",
- "悠闲退休时光",
- "夜谈奇闻志",
- "南山遗梦",
- "奇特人生",
- "奇闻集合",
- }
- class RecycleOutsideAccountArticlesTask(Const):
- def __init__(self, pool, log_client, date_string):
- self.pool = pool
- self.log_client = log_client
- self.date_string = date_string
- async def get_outside_accounts(self):
- query = """
- select
- t2.group_source_name as account_source,
- t3.name as name,
- t3.gh_id as gh_id
- from wx_statistics_group_source t1
- join wx_statistics_group_source_account t2 on t2.group_source_name = t1.account_source_name
- join publish_account t3 on t3.id = t2.account_id
- where
- t1.mode_type = '代运营服务号' and
- (
- t2.group_source_name like '%云誉%'
- or t2.group_source_name like '%微小盟%'
- or t2.group_source_name like '%阿雅达%'
- or t2.group_source_name like '%创易%'
- )
- and t3.status = 1 and t3.name != '';
- """
- return await self.pool.async_fetch(query=query, db_name="aigc")
- async def recycle_single_account(self, account):
- """recycle single account"""
- if account["name"] not in account_name_set:
- return
- query = """
- select max(update_time) as publish_timestamp \
- from outside_account_articles
- where gh_id = %s;
- """
- response = await self.pool.async_fetch(query=query, params=(account["gh_id"],))
- if response:
- max_publish_timestamp = response[0]["publish_timestamp"]
- else:
- max_publish_timestamp = int(time.time()) - self.NEW_ACCOUNT_CRAWL_PERIOD
- cursor = None
- while True:
- response = await get_article_list_from_account(
- account_id=account["gh_id"], index=cursor
- )
- response_code = response["code"]
- match response_code:
- case self.ACCOUNT_FORBIDDEN_CODE:
- # await feishu_robot.bot(
- # title="发布账号封禁",
- # detail={
- # "账号名称": account["name"],
- # "账号id": account["gh_id"],
- # },
- # )
- return
- case self.ARTICLE_SUCCESS_CODE:
- msg_list = response.get("data", {}).get("data", [])
- if not msg_list:
- return
- await insert_outside_article_into_recycle_pool(
- self.pool, self.log_client, msg_list, account
- )
- # check last article
- last_article = msg_list[-1]
- last_publish_timestamp = last_article["AppMsg"]["BaseInfo"][
- "UpdateTime"
- ]
- if last_publish_timestamp <= max_publish_timestamp:
- return
- cursor = response["data"].get("next_cursor")
- if not cursor:
- return
- case self.CRAWL_CRASH_CODE:
- await self.log_client.log(
- contents={
- "task": "recycle_daily_publish_articles",
- "data": {
- "gh_id": account["gh_id"],
- },
- "message": "爬虫挂掉",
- "status": "fail",
- }
- )
- case _:
- return
- async def deal(self):
- subscription_accounts = await self.get_outside_accounts()
- for account in tqdm(subscription_accounts, desc="recycle each account"):
- try:
- await self.recycle_single_account(account)
- except Exception as e:
- print(
- f"{account['name']}\t{account['gh_id']}: recycle account error:", e
- )
- class UpdateOutsideRootSourceIdAndUpdateTimeTask(UpdateRootSourceIdAndUpdateTimeTask):
- def __init__(self, pool, log_client):
- super().__init__(pool, log_client)
- async def get_outside_article_list_v2(self) -> list[dict]:
- query = """
- select content_url, wx_sn
- from outside_account_articles where publish_timestamp in %s
- and account_name in %s
- order by update_time desc;
- """
- article_list = await self.pool.async_fetch(
- query=query, params=(tuple([0, -1, -3]), tuple(account_name_set))
- )
- return article_list
- async def check_each_article(self, article: dict):
- url = article["content_url"]
- wx_sn = article["wx_sn"]
- try:
- response = await get_article_detail(url)
- response_code = response["code"]
- if response_code == self.ARTICLE_DELETE_CODE:
- publish_timestamp_s = self.DELETE_STATUS
- root_source_id_list = []
- elif response_code == self.ARTICLE_ILLEGAL_CODE:
- publish_timestamp_s = self.ILLEGAL_STATUS
- root_source_id_list = []
- elif response_code == self.ARTICLE_SUCCESS_CODE:
- data = response["data"]["data"]
- publish_timestamp_ms = data["publish_timestamp"]
- publish_timestamp_s = int(publish_timestamp_ms / 1000)
- mini_program = data.get("mini_program", [])
- if mini_program:
- root_source_id_list = [
- urllib.parse.parse_qs(urllib.parse.unquote(i["path"])).get(
- "rootSourceId", [""]
- )[0]
- for i in mini_program
- ]
- else:
- root_source_id_list = []
- else:
- publish_timestamp_s = self.UNKNOWN_STATUS
- root_source_id_list = []
- except Exception as e:
- publish_timestamp_s = self.REQUEST_FAIL_STATUS
- root_source_id_list = None
- error_msg = traceback.format_exc()
- await self.log_client.log(
- contents={
- "task": "get_official_article_detail",
- "data": {
- "url": url,
- "wx_sn": wx_sn,
- "error_msg": error_msg,
- "error": str(e),
- },
- "function": "check_each_article",
- "status": "fail",
- }
- )
- query = """
- update outside_account_articles set publish_timestamp = %s, root_source_id_list = %s
- where wx_sn = %s;
- """
- await self.pool.async_save(
- query=query,
- params=(
- publish_timestamp_s,
- json.dumps(root_source_id_list, ensure_ascii=False),
- wx_sn,
- ),
- )
- if publish_timestamp_s == self.REQUEST_FAIL_STATUS:
- article["wx_sn"] = wx_sn
- return article
- else:
- return None
- async def fallback_mechanism(self):
- # 若还是无 publish_timestamp,用update_time当作 publish_timestamp
- update_sql_2 = f"""
- update outside_account_articles
- set publish_timestamp = update_time
- where publish_timestamp < %s;
- """
- affected_rows_2 = await self.pool.async_save(query=update_sql_2, params=(0,))
- if affected_rows_2:
- await feishu_robot.bot(
- title="执行兜底修改发布时间戳",
- detail={
- # "通过msgId修改": affected_rows_1,
- "通过create_timestamp修改": affected_rows_2,
- },
- mention=False,
- )
- async def deal(self):
- task_list = await self.get_outside_article_list_v2()
- for task in tqdm(task_list, desc="get article detail step1: "):
- try:
- await self.check_each_article(task)
- except Exception as e:
- try:
- await self.log_client.log(
- contents={
- "task": "get_official_article_detail_step1",
- "data": {
- "detail": {
- "url": task["ContentUrl"],
- "wx_sn": task["wx_sn"],
- },
- "error_msg": traceback.format_exc(),
- "error": str(e),
- },
- "function": "check_each_article",
- "status": "fail",
- }
- )
- except Exception as e:
- print(e)
- print(traceback.format_exc())
|