pyxllib 0.3.136__tar.gz → 0.3.137__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyxllib-0.3.136/pyxllib.egg-info → pyxllib-0.3.137}/PKG-INFO +15 -15
- pyxllib-0.3.137/pyxllib/autogui/uiautolib.py +56 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/wechat.py +79 -6
- pyxllib-0.3.137/pyxllib/autogui/wechat_msgbox.py +339 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137/pyxllib.egg-info}/PKG-INFO +15 -15
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib.egg-info/SOURCES.txt +2 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/setup.py +1 -1
- {pyxllib-0.3.136 → pyxllib-0.3.137}/LICENSE +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/MANIFEST.in +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/README.md +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/disjoint.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/geo.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/intervals.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/matcher.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/newbie.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/pupil.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/shapelylib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/specialist.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/stat.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/treelib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/algo/unitlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/activewin.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/all.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/autogui.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/autogui/virtualkey.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/expert.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/imfile.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/imhash.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/pupil.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/rgbfmt.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/trackbartools.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/xlcvlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/cv/xlpillib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/echarts.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/jsonlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/oss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/pglib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/sqlite.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/data/sqllib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/JLineViewer.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/demolib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/drissionlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/kq5034lib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/old.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/qt.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/robustprocfile.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/seleniumlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/tk.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/unixlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/utools.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/webhook.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/win32lib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/ext/yuquelib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/docxlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/gitlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/libreoffice.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/movielib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/newbie.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/onenotelib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/packlib/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/packlib/zipfile.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/pdflib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/pupil.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/specialist/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/specialist/dirlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/specialist/download.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/specialist/filelib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/xlsxlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/file/xlsyncfile.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/cachetools.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/deprecatedlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/ipyexec.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/multiprocs.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/newbie.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/pupil.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/scheduler.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/sitepackages.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/bc.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/browser.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/common.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/datetime.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/tictoc.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/specialist/xllog.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/prog/xlosenv.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/stdlib/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/stdlib/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/stdlib/tablepyxl/style.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/stdlib/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/ahocorasick.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/charclasslib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/jiebalib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/jinjalib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/jscode.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/latex/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/levenshtein.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/nestenv.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/newbie.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/pupil/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/pupil/common.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/pupil/xlalign.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/pycode.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/specialist/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/specialist/common.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/specialist/ptag.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/spellchecker.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/templates/echart_base.html +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/templates/highlight_code.html +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/templates/latex_editor.html +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/vbacode.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/text/xmllib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/xl.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib/xlcv.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib.egg-info/dependency_links.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib.egg-info/requires.txt +14 -14
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxllib.egg-info/top_level.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/clientlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/specialist.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/torch_app.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/xlpaddle.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ai/xltorch.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/coco.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/datacls.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/datasets.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/gptlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/icdar/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/icdar/deteval.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/icdar/icdar2013.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/icdar/iou.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/icdar/rrc_evaluation_funcs_1_1.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/imtextline.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/labelme.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/removeline.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/specialist.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/data/tiktokenlib.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/eval/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/openai2/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/openai2/_core/chat.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/openai2/_core/chat_in_cmd.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/openai2/_core/group_chat.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/openai2/openai2.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/paddleocr.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/configs/rec/multi_language/generate_multi_language_configs.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/ColorJitter.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/copy_paste.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/east_process.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/gen_table_mask.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/iaa_augment.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/label_ops.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/make_border_map.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/make_pse_gt.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/make_shrink_map.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/operators.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/pg_process.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/randaugment.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/random_crop_data.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/rec_img_aug.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/sast_process.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/text_image_aug/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/text_image_aug/augment.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/imaug/text_image_aug/warp_mls.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/lmdb_dataset.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/pgnet_dataset.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/pubtab_dataset.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/data/simple_dataset.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/ace_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/basic_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/center_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/cls_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/combined_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/det_basic_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/det_db_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/det_east_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/det_pse_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/det_sast_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/distillation_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/e2e_pg_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/kie_sdmgr_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_aster_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_att_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_ctc_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_enhanced_ctc_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_nrtr_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_sar_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/rec_srn_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/losses/table_att_loss.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/cls_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/det_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/distillation_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/e2e_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/eval_det_iou.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/kie_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/rec_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/metrics/table_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/architectures/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/architectures/base_model.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/architectures/distillation_model.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/det_mobilenet_v3.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/det_resnet_vd_sast.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/e2e_resnet_vd_pg.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/kie_unet_sdmgr.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_mobilenet_v3.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_mv1_enhance.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_nrtr_mtb.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_resnet_31.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_resnet_aster.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_resnet_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/backbones/rec_resnet_vd.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/cls_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/det_db_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/det_east_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/det_pse_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/det_sast_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/e2e_pg_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/kie_sdmgr_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/multiheadAttention.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_aster_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_att_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_ctc_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_nrtr_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_sar_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/rec_srn_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/self_attention.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/heads/table_att_head.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/db_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/east_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/pg_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/rnn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/sast_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/necks/table_fpn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/transforms/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/transforms/stn.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/transforms/tps.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/modeling/transforms/tps_spatial_transformer.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/optimizer/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/optimizer/learning_rate.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/optimizer/lr_scheduler.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/optimizer/optimizer.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/optimizer/regularizer.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/cls_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/db_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/east_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/locality_aware_nms.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/pg_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/pse_postprocess/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/pse_postprocess/pse/setup.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/pse_postprocess/pse_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/rec_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/postprocess/sast_postprocess.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/eval.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/export_center.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/export_model.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/predict_cls.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/predict_det.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/predict_e2e.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/predict_rec.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/predict_system.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer/utility.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_cls.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_det.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_e2e.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_kie.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_rec.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/infer_table.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/program.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/test_hubserving.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/train.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/tools/xlprog.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/EN_symbol_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ar_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/arabic_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/be_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/bg_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/chinese_cht_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/cyrillic_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/devanagari_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/en_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/fa_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/french_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/german_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/hi_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/it_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/japan_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ka_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/korean_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/latin_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/mr_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ne_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/oc_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/pu_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/rs_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/rsc_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ru_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ta_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/table_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/table_structure_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/te_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ug_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/uk_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/ur_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict/xi_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/dict90.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_metric/Deteval.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_metric/polygon_fast.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_utils/extract_batchsize.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/e2e_utils/visual.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/en_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/gen_label.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/ic15_dict.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/iou.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/logging.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/network.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/ppocr_keys_v1.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/profiler.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/save_load.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/stats.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppocr/utils/utility.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/predict_system.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/eval_table.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/matcher.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/predict_structure.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/predict_table.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/table_metric/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/table_metric/parallel.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/table_metric/table_metric.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/tablepyxl/__init__.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/tablepyxl/style.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/table/tablepyxl/tablepyxl.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/ppstructure/utility.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/pyxlpr/xlai.py +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/requirements.txt +0 -0
- {pyxllib-0.3.136 → pyxllib-0.3.137}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.137
|
4
4
|
Summary: 厦门理工模式识别团队通用python代码工具库
|
5
5
|
Home-page: https://github.com/XLPRUtils/pyxllib
|
6
6
|
Author: code4101
|
@@ -42,29 +42,29 @@ Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
|
42
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
43
43
|
Requires-Dist: pillow; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: pillow; extra == "xlai"
|
46
|
-
Requires-Dist: visdom; extra == "xlai"
|
47
|
-
Requires-Dist: opencv-python; extra == "xlai"
|
48
45
|
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
49
46
|
Requires-Dist: pynvml; extra == "xlai"
|
47
|
+
Requires-Dist: visdom; extra == "xlai"
|
48
|
+
Requires-Dist: opencv-python; extra == "xlai"
|
49
|
+
Requires-Dist: pillow; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
51
52
|
Requires-Dist: flask; extra == "xlall"
|
52
|
-
Requires-Dist:
|
53
|
-
Requires-Dist: pillow; extra == "xlall"
|
53
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
54
54
|
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
55
|
-
Requires-Dist: arts; extra == "xlall"
|
56
|
-
Requires-Dist: flask-cors; extra == "xlall"
|
57
|
-
Requires-Dist: xlrd; extra == "xlall"
|
58
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
59
|
-
Requires-Dist: html2text; extra == "xlall"
|
60
55
|
Requires-Dist: openai2; extra == "xlall"
|
61
|
-
Requires-Dist: fastapi; extra == "xlall"
|
62
56
|
Requires-Dist: opencv-python; extra == "xlall"
|
63
|
-
Requires-Dist:
|
64
|
-
Requires-Dist:
|
57
|
+
Requires-Dist: pillow; extra == "xlall"
|
58
|
+
Requires-Dist: fastapi; extra == "xlall"
|
65
59
|
Requires-Dist: ujson; extra == "xlall"
|
66
|
-
Requires-Dist:
|
60
|
+
Requires-Dist: zhconv; extra == "xlall"
|
61
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
62
|
+
Requires-Dist: html2text; extra == "xlall"
|
67
63
|
Requires-Dist: uvicorn; extra == "xlall"
|
64
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
65
|
+
Requires-Dist: flask-wtf; extra == "xlall"
|
66
|
+
Requires-Dist: xlrd; extra == "xlall"
|
67
|
+
Requires-Dist: arts; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Author : 陈坤泽
|
4
|
+
# @Email : 877362867@qq.com
|
5
|
+
# @Date : 2024/11/05
|
6
|
+
|
7
|
+
"""
|
8
|
+
以uiautomation为核心的相关工具库
|
9
|
+
"""
|
10
|
+
|
11
|
+
import uiautomation as auto
|
12
|
+
|
13
|
+
# ui组件大多是树形组织结构,没有专业的树形结构库,能搞个毛线。什么?auto库有自带树形操作?那点基础功能能干毛线。
|
14
|
+
from anytree import NodeMixin, RenderTree
|
15
|
+
|
16
|
+
|
17
|
+
class UiCtrlNode(NodeMixin):
|
18
|
+
def __init__(self, ctrl, parent=None):
|
19
|
+
# 初始化节点信息
|
20
|
+
self.ctrl = ctrl
|
21
|
+
self.ctrl_type = ctrl.ControlTypeName
|
22
|
+
self.text = ctrl.Name
|
23
|
+
self.parent = parent # 指定父节点,用于形成树结构
|
24
|
+
|
25
|
+
# 自动递归创建子节点
|
26
|
+
self.build_children()
|
27
|
+
|
28
|
+
def build_children(self):
|
29
|
+
""" 创建并添加子节点到树中 """
|
30
|
+
for child_ctrl in self.ctrl.GetChildren():
|
31
|
+
self.__class__(child_ctrl, parent=self) # 递归构建子节点
|
32
|
+
|
33
|
+
def __repr__(self):
|
34
|
+
""" 用于在打印节点时显示关键信息 """
|
35
|
+
return f"UiNode(ctrl_type={self.ctrl_type}, text={self.text.replace('\n', ' ')})"
|
36
|
+
|
37
|
+
def __getitem__(self, index):
|
38
|
+
""" 通过索引直接访问子节点
|
39
|
+
|
40
|
+
ui操作经常要各种结构化的访问,加个这个简化引用方式
|
41
|
+
"""
|
42
|
+
return self.children[index]
|
43
|
+
|
44
|
+
def render_tree(self):
|
45
|
+
""" 可视化输出树结构信息进行数据结构分析 """
|
46
|
+
for pre, fill, node in RenderTree(self): # 使用 self.root 确保从根节点渲染
|
47
|
+
print(f"{pre}{node.ctrl_type} {node.get_hash_tag()} {node.text.replace('\n', ' ')}")
|
48
|
+
|
49
|
+
def get_hash_tag(self, level=1):
|
50
|
+
""" 生成节点的哈希字符串,以反映子树结构,一般用来对节点做分类及映射到对应处理函数 """
|
51
|
+
# 当前节点的类型标识符
|
52
|
+
hash_strs = [f"{level}{self.ctrl_type[0].lower()}"]
|
53
|
+
# 遍历所有子节点,递归生成子节点的哈希值
|
54
|
+
for child in self.children:
|
55
|
+
hash_strs.append(f"{child.get_hash_tag(level + 1)}")
|
56
|
+
return ''.join(hash_strs)
|
@@ -13,13 +13,19 @@ from copy import deepcopy
|
|
13
13
|
from typing import Iterable
|
14
14
|
import os
|
15
15
|
from typing import (Iterable, Callable, List)
|
16
|
+
import json
|
17
|
+
import re
|
16
18
|
|
17
19
|
import ctypes
|
18
20
|
from ctypes import wintypes
|
19
21
|
import uiautomation as auto
|
22
|
+
from anytree import NodeMixin, RenderTree
|
20
23
|
|
21
24
|
import win32clipboard
|
22
25
|
|
26
|
+
from pyxllib.autogui.wechat_msgbox import msg_parsers
|
27
|
+
from pyxllib.autogui.uiautolib import UiCtrlNode
|
28
|
+
|
23
29
|
|
24
30
|
def __1_config():
|
25
31
|
pass
|
@@ -243,6 +249,61 @@ def is_window_visible(class_name, name):
|
|
243
249
|
return False
|
244
250
|
|
245
251
|
|
252
|
+
class WechatMsgNode(UiCtrlNode):
|
253
|
+
""" 微信消息的节点类型 """
|
254
|
+
|
255
|
+
def __init__(self, msg_box_ctrl, parent=None):
|
256
|
+
super().__init__(msg_box_ctrl, parent)
|
257
|
+
self.time = None # 每条消息都建立一个最近出现的时间作为时间戳?
|
258
|
+
self.msg_type = None # 消息类型:system, receive, send
|
259
|
+
self.content_type = None # 内容类型:text、image、file
|
260
|
+
|
261
|
+
self.user = None # 用户名
|
262
|
+
self.user2 = None # 群聊时用户会多一个群聊昵称
|
263
|
+
self.cite_text = None # 引用的内容,引用的不一定是文本,但是统一转成文本显示的
|
264
|
+
|
265
|
+
def parse_ctrl(self):
|
266
|
+
""" 解析出更精细的结构化信息 """
|
267
|
+
from pyxllib.autogui.wechat_msgbox import msg_parsers
|
268
|
+
tag = self.get_hash_tag()
|
269
|
+
if tag in msg_parsers:
|
270
|
+
msg_parsers[tag](self)
|
271
|
+
|
272
|
+
def _format_text(self, text):
|
273
|
+
""" 将换行替换为空格的小工具方法 """
|
274
|
+
return text.replace('\n', ' ')
|
275
|
+
|
276
|
+
def render_tree(self, node=None, prefix="", is_root=True):
|
277
|
+
""" 可视化输出树结构信息进行数据结构分析 """
|
278
|
+
if node is None:
|
279
|
+
node = self # 从根节点开始渲染
|
280
|
+
|
281
|
+
# 检查当前节点是否有 msg_type 标记
|
282
|
+
if node.msg_type:
|
283
|
+
# 如果有 msg_type 标记,则输出该节点信息,跳过子节点
|
284
|
+
msg = [f"{prefix}{node.msg_type}"]
|
285
|
+
if node.user:
|
286
|
+
msg.append(f"{node.user}:")
|
287
|
+
msg.append(self._format_text(node.text))
|
288
|
+
if node.cite_text:
|
289
|
+
msg.append(f"【引用】{self._format_text(node.cite_text)}")
|
290
|
+
print(' '.join(msg))
|
291
|
+
return # 不再递归渲染子节点
|
292
|
+
|
293
|
+
# 否则正常输出当前节点信息
|
294
|
+
print(f"{prefix}{node.ctrl_type} {node.get_hash_tag()} {self._format_text(node.text)}")
|
295
|
+
|
296
|
+
# 递归渲染子节点,非根节点开始增加缩进
|
297
|
+
for child in node.children:
|
298
|
+
self.render_tree(child, prefix + (" " if not is_root else ""), is_root=False)
|
299
|
+
|
300
|
+
def check_parser(self):
|
301
|
+
""" 检查解析效果 """
|
302
|
+
for c in self.root.children:
|
303
|
+
c.parse_ctrl()
|
304
|
+
self.root.render_tree()
|
305
|
+
|
306
|
+
|
246
307
|
def __4_wx():
|
247
308
|
pass
|
248
309
|
|
@@ -260,7 +321,7 @@ class WxOperation:
|
|
260
321
|
|
261
322
|
Methods:
|
262
323
|
-------
|
263
|
-
|
324
|
+
goto_chat_box(name):
|
264
325
|
跳转到 指定好友窗口
|
265
326
|
__send_text(*msgs):
|
266
327
|
发送文本。
|
@@ -293,14 +354,14 @@ class WxOperation:
|
|
293
354
|
# 微信窗口置顶
|
294
355
|
self.wx_window.SetTopmost(isTopmost=True)
|
295
356
|
|
296
|
-
def
|
357
|
+
def match_nickname(self, name):
|
297
358
|
"""获取当前面板的好友昵称"""
|
298
359
|
self.input_edit = self.wx_window.EditControl(Name=name)
|
299
360
|
if self.input_edit.Exists(Interval.MAX_SEARCH_SECOND, searchIntervalSeconds=Interval.MAX_SEARCH_INTERVAL):
|
300
|
-
return
|
361
|
+
return self.input_edit
|
301
362
|
return False
|
302
363
|
|
303
|
-
def
|
364
|
+
def goto_chat_box(self, name: str) -> bool:
|
304
365
|
"""
|
305
366
|
跳转到指定 name好友的聊天窗口。
|
306
367
|
|
@@ -310,6 +371,10 @@ class WxOperation:
|
|
310
371
|
Returns:
|
311
372
|
None
|
312
373
|
"""
|
374
|
+
if ctrl := self.match_nickname(name):
|
375
|
+
ctrl.SetFocus()
|
376
|
+
return ctrl
|
377
|
+
|
313
378
|
assert name, "无法跳转到名字为空的聊天窗口"
|
314
379
|
self.wx_window.SendKeys(text='{Ctrl}F', waitTime=Interval.BASE_INTERVAL)
|
315
380
|
self.wx_window.SendKeys(text='{Ctrl}A', waitTime=Interval.BASE_INTERVAL)
|
@@ -331,6 +396,14 @@ class WxOperation:
|
|
331
396
|
self.wx_window.SendKeys(text='{Esc}', waitTime=Interval.BASE_INTERVAL)
|
332
397
|
return False
|
333
398
|
|
399
|
+
def get_messages(self):
|
400
|
+
""" 获得当前会话窗口的结构化对话记录 """
|
401
|
+
msg_box = WechatMsgNode(self.wx_window.ListControl(Name='消息'))
|
402
|
+
# for c in msg_box.children:
|
403
|
+
# c.parse_ctrl()
|
404
|
+
# msg_box.render_tree()
|
405
|
+
msg_box.check_parser()
|
406
|
+
|
334
407
|
def at_at_everyone(self, group_chat_name: str):
|
335
408
|
"""
|
336
409
|
@全部人的操作
|
@@ -517,8 +590,8 @@ class WxOperation:
|
|
517
590
|
raise TypeError("发送的文件路径必须是可迭代的")
|
518
591
|
|
519
592
|
# 如果当前面板已经是需发送好友, 则无需再次搜索跳转
|
520
|
-
if not self.
|
521
|
-
if not self.
|
593
|
+
if not self.match_nickname(name=name):
|
594
|
+
if not self.goto_chat_box(name=name):
|
522
595
|
raise NameError('昵称不匹配')
|
523
596
|
|
524
597
|
# 设置输入框为当前焦点
|
@@ -0,0 +1,339 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Author : 陈坤泽
|
4
|
+
# @Email : 877362867@qq.com
|
5
|
+
# @Date : 2024/11/05
|
6
|
+
|
7
|
+
"""
|
8
|
+
微信 消息框中不同消息结构的解析器 工具
|
9
|
+
"""
|
10
|
+
|
11
|
+
import re
|
12
|
+
import json
|
13
|
+
|
14
|
+
# 定义全局字典
|
15
|
+
msg_parsers = {}
|
16
|
+
|
17
|
+
|
18
|
+
# 定义装饰器
|
19
|
+
def register_tool(key):
|
20
|
+
def decorator(func):
|
21
|
+
# 将函数添加到全局字典中,键为传入的key参数
|
22
|
+
msg_parsers[key] = func
|
23
|
+
return func
|
24
|
+
|
25
|
+
return decorator
|
26
|
+
|
27
|
+
|
28
|
+
@register_tool("1b2p3p3b3p")
|
29
|
+
def 系统_查看更多消息(node):
|
30
|
+
node.msg_type = 'system'
|
31
|
+
node.content_type = 'button_more'
|
32
|
+
|
33
|
+
|
34
|
+
@register_tool("1l2t")
|
35
|
+
def 系统_时间标签(node):
|
36
|
+
node.msg_type = 'system'
|
37
|
+
node.content_type = 'time'
|
38
|
+
node.time = node.text
|
39
|
+
|
40
|
+
|
41
|
+
# 刚刚发送的特殊时间标签
|
42
|
+
@register_tool("1l2p3p3p3t3p3p")
|
43
|
+
def 系统_时间标签2(node):
|
44
|
+
node.msg_type = 'system'
|
45
|
+
node.content_type = 'time'
|
46
|
+
node.time = node.text
|
47
|
+
|
48
|
+
|
49
|
+
@register_tool("1l2p3p3t3p")
|
50
|
+
def 系统_撤回消息(node):
|
51
|
+
node.msg_type = 'system'
|
52
|
+
node.content_type = 'recall'
|
53
|
+
|
54
|
+
|
55
|
+
@register_tool("1l2p3p3p4p5p6p7t3b")
|
56
|
+
def 发送_文本(node):
|
57
|
+
node.msg_type = 'send'
|
58
|
+
node.content_type = 'text'
|
59
|
+
node.user = node[0][2].text
|
60
|
+
|
61
|
+
|
62
|
+
@register_tool("1l2p3p3p4p5p6p7p7p8p8b3b")
|
63
|
+
def 发送_图片(node):
|
64
|
+
node.msg_type = 'send'
|
65
|
+
node.content_type = 'image'
|
66
|
+
node.user = node[0][2].text
|
67
|
+
|
68
|
+
|
69
|
+
@register_tool("1l2p3p3p4p5p6p7p7p8p9t9p9b8b3b")
|
70
|
+
def 发送_视频(node):
|
71
|
+
node.msg_type = 'send'
|
72
|
+
node.content_type = 'video'
|
73
|
+
node.user = node[0][2].text
|
74
|
+
|
75
|
+
|
76
|
+
@register_tool("1l2p3p3p4p5p6p7p7p8p9p10p11t6p7p8p9p10p11t7b3b")
|
77
|
+
def 发送_文本_引用文本(node):
|
78
|
+
node.msg_type = 'send'
|
79
|
+
node.content_type = 'text'
|
80
|
+
node.user = node[0][2].text
|
81
|
+
quoted_node = node[0][1][0][0] # 引用的层级结构
|
82
|
+
node.text = quoted_node[0][1][0][0][0][0].text
|
83
|
+
node.cite_text = quoted_node[1][0][0][0][0][0].text
|
84
|
+
|
85
|
+
|
86
|
+
@register_tool("1l2p3p3p4p5p6p7p7p8p9p10p11t6p7p8p9p10p11t11t11p12b7b3b")
|
87
|
+
def 发送_文本_引用图片(node):
|
88
|
+
node.msg_type = 'send'
|
89
|
+
node.content_type = 'text'
|
90
|
+
node.user = node[0][2].text
|
91
|
+
quoted_node = node[0][1][0][0]
|
92
|
+
node.text = quoted_node[0][1][0][0][0][0].text
|
93
|
+
node.cite_text = f'{quoted_node[1][0][0][0][0][0].text} : [图片]'
|
94
|
+
|
95
|
+
|
96
|
+
# 引用文件
|
97
|
+
@register_tool("1l2p3p3p4p5p6p7p7p8p9p10p11t6p7p8p9p10p11p12t11p12b7b3b")
|
98
|
+
def 发送_文本_引用文件(node):
|
99
|
+
node.msg_type = 'send'
|
100
|
+
node.content_type = 'text'
|
101
|
+
node.user = node[0][2].text
|
102
|
+
quoted_node = node[0][1][0][0]
|
103
|
+
node.text = quoted_node[0][1][0][0][0][0].text
|
104
|
+
node.cite_text = f'[文件] {quoted_node[1][0][0][0][0][0][0].text}'
|
105
|
+
|
106
|
+
|
107
|
+
# 发送文件
|
108
|
+
@register_tool("1l2p3p3p4p5p6p7p8p9p10t10p11t11t9p10p10p8p9t7b7b3b")
|
109
|
+
def 发送_文本_引用文件(node):
|
110
|
+
node.msg_type = 'send'
|
111
|
+
node.content_type = 'file'
|
112
|
+
node.user = node[0][2].text
|
113
|
+
file_node = node[0][1][0][0][0][0]
|
114
|
+
desc = {
|
115
|
+
'name': file_node[0][0][0].text,
|
116
|
+
'size': file_node[0][0][1][0].text,
|
117
|
+
'platform': file_node[1][0].text
|
118
|
+
}
|
119
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
120
|
+
|
121
|
+
|
122
|
+
# 发送链接
|
123
|
+
@register_tool("1l2p3p3p4p5p6p7p8t8p9t9p9b8p9b9t7b3b")
|
124
|
+
def 发送_链接(node):
|
125
|
+
node.msg_type = 'send'
|
126
|
+
node.content_type = 'link'
|
127
|
+
node.user = node[0][2].text
|
128
|
+
link_node = node[0][1][0][0]
|
129
|
+
desc = {
|
130
|
+
'title': link_node[0][0][0].text,
|
131
|
+
'head': link_node[0][0][1][0].text,
|
132
|
+
'author': link_node[0][0][2][1].text
|
133
|
+
}
|
134
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
135
|
+
|
136
|
+
|
137
|
+
# 转发消息
|
138
|
+
@register_tool("1l2p3p3p4p5p6p7p8t8p9t9t9t8p9p9t7b3b")
|
139
|
+
def 发送_转发消息(node):
|
140
|
+
node.msg_type = 'send'
|
141
|
+
node.content_type = 'messages'
|
142
|
+
node.user = node[0][2].text
|
143
|
+
|
144
|
+
|
145
|
+
@register_tool("1l2p3b3p4p5p6p7t3p")
|
146
|
+
def 接收_文本(node):
|
147
|
+
node.msg_type = 'receive'
|
148
|
+
node.content_type = 'text'
|
149
|
+
node.user = node[0][0].text
|
150
|
+
|
151
|
+
|
152
|
+
@register_tool("1l2p3b3p4p5p6p7p7b3p")
|
153
|
+
def 接收_图片(node):
|
154
|
+
node.msg_type = 'receive'
|
155
|
+
node.content_type = 'image'
|
156
|
+
node.user = node[0][0].text
|
157
|
+
|
158
|
+
|
159
|
+
@register_tool("1l2p3b3p4p5p6p7p8b8p8t7b3p")
|
160
|
+
def 接收_语音(node):
|
161
|
+
node.msg_type = 'receive'
|
162
|
+
node.content_type = 'voice'
|
163
|
+
node.user = node[0][0].text
|
164
|
+
|
165
|
+
|
166
|
+
@register_tool("1l2p3b3p4p5p6p7p8t8p9t9p9b8p9b9t7b3p")
|
167
|
+
def 接收_链接(node):
|
168
|
+
node.msg_type = 'receive'
|
169
|
+
node.content_type = 'link'
|
170
|
+
node.user = node[0][0].text
|
171
|
+
link_node = node[0][1][0][0][0][0] # 链接内容的层级结构
|
172
|
+
desc = {
|
173
|
+
'title': link_node[0].text,
|
174
|
+
'head': link_node[1][0].text, # 文章开头部分
|
175
|
+
'author': link_node[2][1].text
|
176
|
+
}
|
177
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
178
|
+
|
179
|
+
|
180
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7t3p")
|
181
|
+
def 群接收_文本(node):
|
182
|
+
node.msg_type = 'receive'
|
183
|
+
node.content_type = 'text'
|
184
|
+
node.user = node[0][0].text
|
185
|
+
node.user2 = node[0][1][0][0].text
|
186
|
+
|
187
|
+
|
188
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p7b3p")
|
189
|
+
def 群接收_图片(node):
|
190
|
+
node.msg_type = 'receive'
|
191
|
+
node.content_type = 'image'
|
192
|
+
node.user = node[0][0].text
|
193
|
+
node.user2 = node[0][1][0][0].text
|
194
|
+
|
195
|
+
|
196
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8p9p10t10p11t11t9p10p10p7b7b3p")
|
197
|
+
def 群接收_文件(node):
|
198
|
+
node.msg_type = 'receive'
|
199
|
+
node.content_type = 'file'
|
200
|
+
node.user = node[0][0].text
|
201
|
+
file_node = node[0][1] # 文件信息的节点
|
202
|
+
node.user2 = file_node[0][0].text
|
203
|
+
file_info_node = file_node[1][0][0][0][0]
|
204
|
+
desc = {
|
205
|
+
'name': file_info_node[0][0].text,
|
206
|
+
'size': file_info_node[0][1][0].text
|
207
|
+
}
|
208
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
209
|
+
|
210
|
+
|
211
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8p9p10t10p11t11t9p10p10p8p9t7b7b3p")
|
212
|
+
def 群接收_文件2(node):
|
213
|
+
node.msg_type = 'receive'
|
214
|
+
node.content_type = 'file'
|
215
|
+
node.user = node[0][0].text
|
216
|
+
node.user2 = node[0][1][0][0].text
|
217
|
+
file_info_node = node[0][1][1][0][0][0]
|
218
|
+
desc = {
|
219
|
+
'name': file_info_node[0][0][0].text,
|
220
|
+
'size': file_info_node[0][0][1][0].text,
|
221
|
+
'platform': file_info_node[1][0].text
|
222
|
+
}
|
223
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
224
|
+
|
225
|
+
|
226
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7b3p")
|
227
|
+
def 群接收_动画表情(node):
|
228
|
+
node.msg_type = 'receive'
|
229
|
+
node.content_type = 'emoji'
|
230
|
+
node.user = node[0][0].text
|
231
|
+
node.user2 = node[0][1][0][0].text
|
232
|
+
|
233
|
+
|
234
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8t8p9t9p9b8p9b9t7b3p")
|
235
|
+
def 群接收_链接_有公众号作者名(node):
|
236
|
+
node.msg_type = 'receive'
|
237
|
+
node.content_type = 'link'
|
238
|
+
node.user = node[0][0].text
|
239
|
+
link_node = node[0][1]
|
240
|
+
node.user2 = link_node[0][0].text
|
241
|
+
link_info_node = link_node[1][0][0][0]
|
242
|
+
desc = {
|
243
|
+
'title': link_info_node[0].text,
|
244
|
+
'head': link_info_node[1][0].text, # 文章开头的一小部分
|
245
|
+
'author': link_info_node[2][0].text
|
246
|
+
}
|
247
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
248
|
+
|
249
|
+
|
250
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8t8p9t9p9b7b3p")
|
251
|
+
def 群接收_链接_无公众号作者名(node):
|
252
|
+
node.msg_type = 'receive'
|
253
|
+
node.content_type = 'link'
|
254
|
+
node.user = node[0][0].text
|
255
|
+
link_node = node[0][1]
|
256
|
+
node.user2 = link_node[0][0].text
|
257
|
+
link_info_node = link_node[1][0][0][0]
|
258
|
+
desc = {
|
259
|
+
'title': link_info_node[0].text,
|
260
|
+
'head': link_info_node[1][0].text # 文章开头的一小部分
|
261
|
+
}
|
262
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
263
|
+
|
264
|
+
|
265
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8b8p9p8p9p10p10t8p9p7b3p")
|
266
|
+
def 群接收_视频(node):
|
267
|
+
node.msg_type = 'receive'
|
268
|
+
node.content_type = 'video'
|
269
|
+
node.user = node[0][0].text
|
270
|
+
video_node = node[0][1]
|
271
|
+
node.user2 = video_node[0][0].text
|
272
|
+
video_info_node = video_node[1][0][0][0]
|
273
|
+
desc = {
|
274
|
+
'author': video_info_node[2][0][1].text
|
275
|
+
}
|
276
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
277
|
+
|
278
|
+
|
279
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8t8p9t8t7b3p")
|
280
|
+
def 群接收_视频2(node):
|
281
|
+
node.msg_type = 'receive'
|
282
|
+
node.content_type = 'video'
|
283
|
+
node.user = node[0][0].text
|
284
|
+
video_node = node[0][1]
|
285
|
+
node.user2 = video_node[0][0].text
|
286
|
+
video_info_node = video_node[1][0][0][0]
|
287
|
+
desc = {
|
288
|
+
'title': video_info_node[0].text,
|
289
|
+
'head': video_info_node[1][0].text,
|
290
|
+
'duration': video_info_node[2].text
|
291
|
+
}
|
292
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
293
|
+
|
294
|
+
|
295
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8p9b9t8t8b8p9t9t7b3p")
|
296
|
+
def 群接收_小程序(node):
|
297
|
+
node.msg_type = 'receive'
|
298
|
+
node.content_type = 'applet'
|
299
|
+
node.user = node[0][0].text
|
300
|
+
applet_node = node[0][1]
|
301
|
+
node.user2 = applet_node[0][0].text
|
302
|
+
applet_info_node = applet_node[1][0][0][0]
|
303
|
+
desc = {
|
304
|
+
'name': applet_info_node[0][1].text,
|
305
|
+
'title': applet_info_node[1].text,
|
306
|
+
'footnote': applet_info_node[3][1].text
|
307
|
+
}
|
308
|
+
node.text = json.dumps(desc, ensure_ascii=False)
|
309
|
+
|
310
|
+
|
311
|
+
@register_tool("1l2p3p3p4p5l6p7p7t7p3p")
|
312
|
+
def 群接收_拍一拍(node):
|
313
|
+
node.msg_type = 'receive'
|
314
|
+
node.content_type = 'shake'
|
315
|
+
node.text = node[0][1][0][0].text
|
316
|
+
node.user = re.search(r'"(.+?)" 拍了拍 "', node.text).group(1)
|
317
|
+
|
318
|
+
|
319
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8t4p5p6p7p8p9t5b3p")
|
320
|
+
def 群接收_引用消息(node):
|
321
|
+
node.msg_type = 'receive'
|
322
|
+
node.content_type = 'text'
|
323
|
+
node.user = node[0][0].text
|
324
|
+
quoted_node = node[0][1]
|
325
|
+
node.user2 = quoted_node[0][0].text
|
326
|
+
node.text = quoted_node[1][0][0][0][0].text
|
327
|
+
node.cite_text = quoted_node[2][0][0][0][0][0].text
|
328
|
+
|
329
|
+
|
330
|
+
@register_tool("1l2p3b3p4p5t4p5p6p7p8t4p5p6p7p8p9p10t9p10b5b3p")
|
331
|
+
def 群接收_引用文件(node):
|
332
|
+
node.msg_type = 'receive'
|
333
|
+
node.content_type = 'text'
|
334
|
+
node.user = node[0][0].text
|
335
|
+
quoted_node = node[0][1]
|
336
|
+
node.user2 = quoted_node[0][0].text
|
337
|
+
node.text = quoted_node[1][0][0][0][0].text
|
338
|
+
file_node = quoted_node[2][0][0][0][0][0][0]
|
339
|
+
node.cite_text = f'[文件] {file_node.text}'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyxllib
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.137
|
4
4
|
Summary: 厦门理工模式识别团队通用python代码工具库
|
5
5
|
Home-page: https://github.com/XLPRUtils/pyxllib
|
6
6
|
Author: code4101
|
@@ -42,29 +42,29 @@ Requires-Dist: opsdroid-get-image-size; extra == "xlcv"
|
|
42
42
|
Requires-Dist: opencv-python; extra == "xlcv"
|
43
43
|
Requires-Dist: pillow; extra == "xlcv"
|
44
44
|
Provides-Extra: xlai
|
45
|
-
Requires-Dist: pillow; extra == "xlai"
|
46
|
-
Requires-Dist: visdom; extra == "xlai"
|
47
|
-
Requires-Dist: opencv-python; extra == "xlai"
|
48
45
|
Requires-Dist: opsdroid-get-image-size; extra == "xlai"
|
49
46
|
Requires-Dist: pynvml; extra == "xlai"
|
47
|
+
Requires-Dist: visdom; extra == "xlai"
|
48
|
+
Requires-Dist: opencv-python; extra == "xlai"
|
49
|
+
Requires-Dist: pillow; extra == "xlai"
|
50
50
|
Provides-Extra: xlall
|
51
|
+
Requires-Dist: flask-restful; extra == "xlall"
|
51
52
|
Requires-Dist: flask; extra == "xlall"
|
52
|
-
Requires-Dist:
|
53
|
-
Requires-Dist: pillow; extra == "xlall"
|
53
|
+
Requires-Dist: opsdroid-get-image-size; extra == "xlall"
|
54
54
|
Requires-Dist: flask-jwt-extended; extra == "xlall"
|
55
|
-
Requires-Dist: arts; extra == "xlall"
|
56
|
-
Requires-Dist: flask-cors; extra == "xlall"
|
57
|
-
Requires-Dist: xlrd; extra == "xlall"
|
58
|
-
Requires-Dist: sentencepiece; extra == "xlall"
|
59
|
-
Requires-Dist: html2text; extra == "xlall"
|
60
55
|
Requires-Dist: openai2; extra == "xlall"
|
61
|
-
Requires-Dist: fastapi; extra == "xlall"
|
62
56
|
Requires-Dist: opencv-python; extra == "xlall"
|
63
|
-
Requires-Dist:
|
64
|
-
Requires-Dist:
|
57
|
+
Requires-Dist: pillow; extra == "xlall"
|
58
|
+
Requires-Dist: fastapi; extra == "xlall"
|
65
59
|
Requires-Dist: ujson; extra == "xlall"
|
66
|
-
Requires-Dist:
|
60
|
+
Requires-Dist: zhconv; extra == "xlall"
|
61
|
+
Requires-Dist: flask-cors; extra == "xlall"
|
62
|
+
Requires-Dist: html2text; extra == "xlall"
|
67
63
|
Requires-Dist: uvicorn; extra == "xlall"
|
64
|
+
Requires-Dist: sentencepiece; extra == "xlall"
|
65
|
+
Requires-Dist: flask-wtf; extra == "xlall"
|
66
|
+
Requires-Dist: xlrd; extra == "xlall"
|
67
|
+
Requires-Dist: arts; extra == "xlall"
|
68
68
|
|
69
69
|
# 1 install
|
70
70
|
|
@@ -27,8 +27,10 @@ pyxllib/autogui/__init__.py
|
|
27
27
|
pyxllib/autogui/activewin.py
|
28
28
|
pyxllib/autogui/all.py
|
29
29
|
pyxllib/autogui/autogui.py
|
30
|
+
pyxllib/autogui/uiautolib.py
|
30
31
|
pyxllib/autogui/virtualkey.py
|
31
32
|
pyxllib/autogui/wechat.py
|
33
|
+
pyxllib/autogui/wechat_msgbox.py
|
32
34
|
pyxllib/cv/__init__.py
|
33
35
|
pyxllib/cv/expert.py
|
34
36
|
pyxllib/cv/imfile.py
|
@@ -50,7 +50,7 @@ _dir = Path(__file__).parent
|
|
50
50
|
|
51
51
|
setup(
|
52
52
|
name='pyxllib', # pip 安装时用的名字
|
53
|
-
version='0.3.
|
53
|
+
version='0.3.137', # 当前版本,每次更新上传到pypi都需要修改; 第4位版本号一般是修紧急bug
|
54
54
|
author='code4101',
|
55
55
|
author_email='877362867@qq.com',
|
56
56
|
url='https://github.com/XLPRUtils/pyxllib',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|