From 7cb390f018b4a0a29437e0e7bf678c8d6b7568dc Mon Sep 17 00:00:00 2001 From: HornCopper Date: Tue, 10 Sep 2024 23:22:18 +0800 Subject: [PATCH] [feat]serendipity v3 --- ...1\344\270\226\350\210\236\345\247\254.png" | Bin ...0\350\200\205\346\210\220\346\255\214.png" | Bin .../\345\207\214\344\272\221\346\242\257.png" | Bin .../\345\212\235\345\255\246\350\256\260.png" | Bin ...1\346\266\257\346\227\240\345\275\222.png" | Bin .../\345\257\273\347\214\253\350\256\260.png" | Bin .../\345\260\221\345\271\264\350\241\214.png" | Bin ...3\347\224\237\345\277\203\346\204\277.png" | Bin ...6\350\210\236\350\211\257\345\256\265.png" | Bin .../\345\272\246\344\272\272\345\277\203.png" | Bin .../\346\203\234\345\276\200\346\227\245.png" | Bin ...6\346\221\207\344\271\235\345\244\251.png" | Bin ...4\344\275\221\350\213\215\347\224\237.png" | Bin .../\346\213\234\346\230\245\346\223\202.png" | Bin ...5\345\233\255\351\243\216\351\233\250.png" | Bin ...7\345\256\264\346\211\277\346\254\242.png" | Bin .../\346\263\233\345\244\251\346\262\263.png" | Bin ...5\351\243\216\346\215\225\347\216\213.png" | Bin ...4\347\213\261\345\216\250\347\245\236.png" | Bin .../\347\224\237\346\255\273\345\210\244.png" | Bin .../\347\231\275\346\227\245\346\242\246.png" | Bin ...2\350\260\267\345\233\236\351\237\263.png" | Bin ...2\345\260\230\344\270\215\346\270\241.png" | Bin .../\350\210\236\344\274\227\347\224\237.png" | Bin ...6\351\246\206\345\245\207\347\274\230.png" | Bin ...6\351\246\206\346\202\254\350\265\217.png" | Bin ...3\350\264\237\345\210\235\345\277\203.png" | Bin ...6\345\225\270\345\261\261\346\236\227.png" | Bin .../\350\265\264\344\271\235\345\271\275.png" | Bin ...6\350\241\214\345\244\251\344\270\213.png" | Bin ...4\344\270\255\347\220\264\351\237\263.png" | Bin ...2\345\261\261\346\201\251\344\273\207.png" | Bin .../\351\237\266\345\215\216\346\225\205.png" | Bin .../\351\273\221\347\231\275\350\267\257.png" | Bin ...7\347\201\265\345\275\223\346\255\214.png" | Bin ...1\345\260\272\351\235\222\351\224\213.png" | Bin ...1\345\261\261\345\233\233\346\265\267.png" | Bin ...1\351\223\270\345\220\264\351\222\251.png" | Bin ...0\350\241\214\345\233\247\351\200\224.png" | Bin .../\345\205\224\346\261\237\346\271\226.png" | Bin .../\345\205\245\350\233\237\345\256\253.png" | Bin .../\345\215\203\347\247\213\351\223\270.png" | Bin ...6\345\244\226\345\256\235\351\251\271.png" | Bin ...6\345\244\226\350\245\277\351\243\216.png" | Bin ...6\345\220\276\344\275\231\347\201\253.png" | Bin ...1\345\271\264\345\246\202\350\231\271.png" | Bin .../\346\265\216\350\213\215\347\224\237.png" | Bin ...6\345\205\211\347\273\207\346\242\246.png" | Bin .../\350\277\275\351\255\202\351\252\250.png" | Bin ...4\351\230\263\344\270\244\347\225\214.png" | Bin .../\344\270\200\345\277\265\351\227\264.png" | Bin .../\344\270\200\346\236\235\346\240\226.png" | Bin .../\344\270\234\346\265\267\345\256\242.png" | Bin .../\344\270\271\351\235\222\350\256\260.png" | Bin .../\344\271\211\345\215\203\351\207\221.png" | Bin .../\344\271\261\347\272\242\351\270\276.png" | Bin .../\345\204\277\345\245\263\344\272\213.png" | Bin .../\345\205\263\345\244\226\345\225\206.png" | Bin .../\345\205\275\347\216\213\344\275\251.png" | Bin .../\345\214\227\350\241\214\351\225\226.png" | Bin .../\345\244\234\345\223\200\351\270\243.png" | Bin .../\345\244\252\350\241\214\351\201\223.png" | Bin .../\345\255\220\345\244\234\346\255\214.png" | Bin .../\345\255\251\347\253\245\344\271\246.png" | Bin .../\345\256\242\346\261\237\345\271\262.png" | Bin .../\345\257\223\345\244\251\346\266\257.png" | Bin .../\345\260\230\347\275\221\344\270\255.png" | Bin .../\345\271\275\346\265\267\347\211\247.png" | Bin .../\345\275\222\344\271\241\350\267\257.png" | Bin ...6\211\345\277\227\302\267\345\256\211.png" | Bin ...6\211\345\277\227\302\267\345\275\222.png" | Bin ...6\211\345\277\227\302\267\345\277\227.png" | Bin .../\345\277\265\346\227\247\346\236\227.png" | Bin .../\346\210\216\351\251\254\350\276\271.png" | Bin .../\346\215\211\345\246\226\350\256\260.png" | Bin .../\346\215\211\350\264\274\350\256\260.png" | Bin .../\346\225\205\345\262\201\350\276\236.png" | Bin .../\346\236\211\345\217\271\346\201\250.png" | Bin .../\346\236\253\346\236\227\351\205\222.png" | Bin .../\346\261\237\346\271\226\345\275\225.png" | Bin .../\346\262\231\346\265\267\350\260\243.png" | Bin .../\346\262\247\346\265\267\347\254\233.png" | Bin .../\346\270\205\350\214\227\347\273\217.png" | Bin .../\346\273\207\345\215\227\350\241\214.png" | Bin .../\346\273\264\346\260\264\346\201\251.png" | Bin .../\347\200\233\346\264\262\346\242\246.png" | Bin ...2\261\346\210\217\302\267\346\230\245.png" | Bin ...2\261\346\210\217\302\267\346\234\210.png" | Bin ...2\261\346\210\217\302\267\347\247\213.png" | Bin ...2\261\346\210\217\302\267\351\243\216.png" | Bin .../\347\203\271\350\260\203\346\263\225.png" | Bin .../\347\231\275\346\234\210\347\232\216.png" | Bin .../\347\231\275\351\233\252\345\277\206.png" | Bin .../\347\237\263\346\225\242\345\275\223.png" | Bin .../\347\240\264\345\267\247\350\250\200.png" | Bin .../\347\240\264\346\231\223\351\270\243.png" | Bin .../\347\247\230\345\256\235\345\233\276.png" | Bin .../\347\250\232\345\255\220\345\277\203.png" | Bin .../\347\253\245\350\222\231\345\277\227.png" | Bin .../\347\253\271\351\251\254\346\203\205.png" | Bin .../\347\272\242\350\241\243\346\255\214.png" | Bin ...5\245\344\274\232\302\267\347\223\234.png" | Bin ...5\245\344\274\232\302\267\351\223\203.png" | Bin .../\350\203\234\350\264\237\345\261\200.png" | Bin .../\350\207\263\345\260\212\345\256\235.png" | Bin .../\350\215\206\350\275\262\345\210\272.png" | Bin .../\350\216\253\350\264\252\346\235\257.png" | Bin .../\350\247\205\347\237\245\351\237\263.png" | Bin .../\350\247\243\345\277\203\350\257\255.png" | Bin .../\350\257\235\347\216\204\350\231\232.png" | Bin .../\350\260\234\344\271\246\347\224\237.png" | Bin .../\350\267\257\346\212\225\347\237\263.png" | Bin .../\351\206\211\347\203\237\346\263\242.png" | Bin .../\351\207\215\346\264\213\345\256\242.png" | Bin .../\351\224\213\350\212\222\345\261\225.png" | Bin .../\351\224\273\345\211\221\345\245\263.png" | Bin .../\351\234\262\345\233\255\344\272\213.png" | Bin .../\351\235\222\350\215\211\346\255\214.png" | Bin .../\351\243\216\351\233\250\346\204\217.png" | Bin .../\351\270\240\351\233\200\350\256\260.png" | Bin src/plugins/jx3/awesome/__init__.py | 3 +- src/plugins/jx3/serendipity/__init__.py | 42 +++++- src/plugins/jx3/serendipity/v2.py | 7 +- src/plugins/jx3/serendipity/v3.py | 142 ++++++++++++++++++ src/plugins/jx3/serendipity/without_jx3api.py | 7 +- src/tools/utils/time.py | 11 +- src/views/jx3/serendipity/v3.html | 112 ++++++++++++++ 127 files changed, 305 insertions(+), 19 deletions(-) rename "src/assets/serendipity/serendipity/\344\271\261\344\270\226\350\210\236\345\247\254.png" => "src/assets/serendipity/serendipity/common/\344\271\261\344\270\226\350\210\236\345\247\254.png" (100%) rename "src/assets/serendipity/serendipity/\344\276\240\350\200\205\346\210\220\346\255\214.png" => "src/assets/serendipity/serendipity/common/\344\276\240\350\200\205\346\210\220\346\255\214.png" (100%) rename "src/assets/serendipity/serendipity/\345\207\214\344\272\221\346\242\257.png" => "src/assets/serendipity/serendipity/common/\345\207\214\344\272\221\346\242\257.png" (100%) rename "src/assets/serendipity/serendipity/\345\212\235\345\255\246\350\256\260.png" => "src/assets/serendipity/serendipity/common/\345\212\235\345\255\246\350\256\260.png" (100%) rename "src/assets/serendipity/serendipity/\345\244\251\346\266\257\346\227\240\345\275\222.png" => "src/assets/serendipity/serendipity/common/\345\244\251\346\266\257\346\227\240\345\275\222.png" (100%) rename "src/assets/serendipity/serendipity/\345\257\273\347\214\253\350\256\260.png" => "src/assets/serendipity/serendipity/common/\345\257\273\347\214\253\350\256\260.png" (100%) rename "src/assets/serendipity/serendipity/\345\260\221\345\271\264\350\241\214.png" => "src/assets/serendipity/serendipity/common/\345\260\221\345\271\264\350\241\214.png" (100%) rename "src/assets/serendipity/serendipity/\345\271\263\347\224\237\345\277\203\346\204\277.png" => "src/assets/serendipity/serendipity/common/\345\271\263\347\224\237\345\277\203\346\204\277.png" (100%) rename "src/assets/serendipity/serendipity/\345\272\206\350\210\236\350\211\257\345\256\265.png" => "src/assets/serendipity/serendipity/common/\345\272\206\350\210\236\350\211\257\345\256\265.png" (100%) rename "src/assets/serendipity/serendipity/\345\272\246\344\272\272\345\277\203.png" => "src/assets/serendipity/serendipity/common/\345\272\246\344\272\272\345\277\203.png" (100%) rename "src/assets/serendipity/serendipity/\346\203\234\345\276\200\346\227\245.png" => "src/assets/serendipity/serendipity/common/\346\203\234\345\276\200\346\227\245.png" (100%) rename "src/assets/serendipity/serendipity/\346\211\266\346\221\207\344\271\235\345\244\251.png" => "src/assets/serendipity/serendipity/common/\346\211\266\346\221\207\344\271\235\345\244\251.png" (100%) rename "src/assets/serendipity/serendipity/\346\212\244\344\275\221\350\213\215\347\224\237.png" => "src/assets/serendipity/serendipity/common/\346\212\244\344\275\221\350\213\215\347\224\237.png" (100%) rename "src/assets/serendipity/serendipity/\346\213\234\346\230\245\346\223\202.png" => "src/assets/serendipity/serendipity/common/\346\213\234\346\230\245\346\223\202.png" (100%) rename "src/assets/serendipity/serendipity/\346\225\205\345\233\255\351\243\216\351\233\250.png" => "src/assets/serendipity/serendipity/common/\346\225\205\345\233\255\351\243\216\351\233\250.png" (100%) rename "src/assets/serendipity/serendipity/\346\227\247\345\256\264\346\211\277\346\254\242.png" => "src/assets/serendipity/serendipity/common/\346\227\247\345\256\264\346\211\277\346\254\242.png" (100%) rename "src/assets/serendipity/serendipity/\346\263\233\345\244\251\346\262\263.png" => "src/assets/serendipity/serendipity/common/\346\263\233\345\244\251\346\262\263.png" (100%) rename "src/assets/serendipity/serendipity/\346\270\205\351\243\216\346\215\225\347\216\213.png" => "src/assets/serendipity/serendipity/common/\346\270\205\351\243\216\346\215\225\347\216\213.png" (100%) rename "src/assets/serendipity/serendipity/\347\202\274\347\213\261\345\216\250\347\245\236.png" => "src/assets/serendipity/serendipity/common/\347\202\274\347\213\261\345\216\250\347\245\236.png" (100%) rename "src/assets/serendipity/serendipity/\347\224\237\346\255\273\345\210\244.png" => "src/assets/serendipity/serendipity/common/\347\224\237\346\255\273\345\210\244.png" (100%) rename "src/assets/serendipity/serendipity/\347\231\275\346\227\245\346\242\246.png" => "src/assets/serendipity/serendipity/common/\347\231\275\346\227\245\346\242\246.png" (100%) rename "src/assets/serendipity/serendipity/\347\251\272\350\260\267\345\233\236\351\237\263.png" => "src/assets/serendipity/serendipity/common/\347\251\272\350\260\267\345\233\236\351\237\263.png" (100%) rename "src/assets/serendipity/serendipity/\347\272\242\345\260\230\344\270\215\346\270\241.png" => "src/assets/serendipity/serendipity/common/\347\272\242\345\260\230\344\270\215\346\270\241.png" (100%) rename "src/assets/serendipity/serendipity/\350\210\236\344\274\227\347\224\237.png" => "src/assets/serendipity/serendipity/common/\350\210\236\344\274\227\347\224\237.png" (100%) rename "src/assets/serendipity/serendipity/\350\214\266\351\246\206\345\245\207\347\274\230.png" => "src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\345\245\207\347\274\230.png" (100%) rename "src/assets/serendipity/serendipity/\350\214\266\351\246\206\346\202\254\350\265\217.png" => "src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\346\202\254\350\265\217.png" (100%) rename "src/assets/serendipity/serendipity/\350\216\253\350\264\237\345\210\235\345\277\203.png" => "src/assets/serendipity/serendipity/common/\350\216\253\350\264\237\345\210\235\345\277\203.png" (100%) rename "src/assets/serendipity/serendipity/\350\231\216\345\225\270\345\261\261\346\236\227.png" => "src/assets/serendipity/serendipity/common/\350\231\216\345\225\270\345\261\261\346\236\227.png" (100%) rename "src/assets/serendipity/serendipity/\350\265\264\344\271\235\345\271\275.png" => "src/assets/serendipity/serendipity/common/\350\265\264\344\271\235\345\271\275.png" (100%) rename "src/assets/serendipity/serendipity/\351\225\226\350\241\214\345\244\251\344\270\213.png" => "src/assets/serendipity/serendipity/common/\351\225\226\350\241\214\345\244\251\344\270\213.png" (100%) rename "src/assets/serendipity/serendipity/\351\225\234\344\270\255\347\220\264\351\237\263.png" => "src/assets/serendipity/serendipity/common/\351\225\234\344\270\255\347\220\264\351\237\263.png" (100%) rename "src/assets/serendipity/serendipity/\351\233\252\345\261\261\346\201\251\344\273\207.png" => "src/assets/serendipity/serendipity/common/\351\233\252\345\261\261\346\201\251\344\273\207.png" (100%) rename "src/assets/serendipity/serendipity/\351\237\266\345\215\216\346\225\205.png" => "src/assets/serendipity/serendipity/common/\351\237\266\345\215\216\346\225\205.png" (100%) rename "src/assets/serendipity/serendipity/\351\273\221\347\231\275\350\267\257.png" => "src/assets/serendipity/serendipity/common/\351\273\221\347\231\275\350\267\257.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\207\347\201\265\345\275\223\346\255\214.png" => "src/assets/serendipity/serendipity/peerless/\344\270\207\347\201\265\345\275\223\346\255\214.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\211\345\260\272\351\235\222\351\224\213.png" => "src/assets/serendipity/serendipity/peerless/\344\270\211\345\260\272\351\235\222\351\224\213.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\211\345\261\261\345\233\233\346\265\267.png" => "src/assets/serendipity/serendipity/peerless/\344\270\211\345\261\261\345\233\233\346\265\267.png" (100%) rename "src/assets/serendipity/serendipity/\344\272\211\351\223\270\345\220\264\351\222\251.png" => "src/assets/serendipity/serendipity/peerless/\344\272\211\351\223\270\345\220\264\351\222\251.png" (100%) rename "src/assets/serendipity/serendipity/\344\276\240\350\241\214\345\233\247\351\200\224.png" => "src/assets/serendipity/serendipity/peerless/\344\276\240\350\241\214\345\233\247\351\200\224.png" (100%) rename "src/assets/serendipity/serendipity/\345\205\224\346\261\237\346\271\226.png" => "src/assets/serendipity/serendipity/peerless/\345\205\224\346\261\237\346\271\226.png" (100%) rename "src/assets/serendipity/serendipity/\345\205\245\350\233\237\345\256\253.png" => "src/assets/serendipity/serendipity/peerless/\345\205\245\350\233\237\345\256\253.png" (100%) rename "src/assets/serendipity/serendipity/\345\215\203\347\247\213\351\223\270.png" => "src/assets/serendipity/serendipity/peerless/\345\215\203\347\247\213\351\223\270.png" (100%) rename "src/assets/serendipity/serendipity/\345\241\236\345\244\226\345\256\235\351\251\271.png" => "src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\345\256\235\351\251\271.png" (100%) rename "src/assets/serendipity/serendipity/\345\241\236\345\244\226\350\245\277\351\243\216.png" => "src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\350\245\277\351\243\216.png" (100%) rename "src/assets/serendipity/serendipity/\346\230\206\345\220\276\344\275\231\347\201\253.png" => "src/assets/serendipity/serendipity/peerless/\346\230\206\345\220\276\344\275\231\347\201\253.png" (100%) rename "src/assets/serendipity/serendipity/\346\265\201\345\271\264\345\246\202\350\231\271.png" => "src/assets/serendipity/serendipity/peerless/\346\265\201\345\271\264\345\246\202\350\231\271.png" (100%) rename "src/assets/serendipity/serendipity/\346\265\216\350\213\215\347\224\237.png" => "src/assets/serendipity/serendipity/peerless/\346\265\216\350\213\215\347\224\237.png" (100%) rename "src/assets/serendipity/serendipity/\346\265\256\345\205\211\347\273\207\346\242\246.png" => "src/assets/serendipity/serendipity/peerless/\346\265\256\345\205\211\347\273\207\346\242\246.png" (100%) rename "src/assets/serendipity/serendipity/\350\277\275\351\255\202\351\252\250.png" => "src/assets/serendipity/serendipity/peerless/\350\277\275\351\255\202\351\252\250.png" (100%) rename "src/assets/serendipity/serendipity/\351\230\264\351\230\263\344\270\244\347\225\214.png" => "src/assets/serendipity/serendipity/peerless/\351\230\264\351\230\263\344\270\244\347\225\214.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\200\345\277\265\351\227\264.png" => "src/assets/serendipity/serendipity/pet/\344\270\200\345\277\265\351\227\264.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\200\346\236\235\346\240\226.png" => "src/assets/serendipity/serendipity/pet/\344\270\200\346\236\235\346\240\226.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\234\346\265\267\345\256\242.png" => "src/assets/serendipity/serendipity/pet/\344\270\234\346\265\267\345\256\242.png" (100%) rename "src/assets/serendipity/serendipity/\344\270\271\351\235\222\350\256\260.png" => "src/assets/serendipity/serendipity/pet/\344\270\271\351\235\222\350\256\260.png" (100%) rename "src/assets/serendipity/serendipity/\344\271\211\345\215\203\351\207\221.png" => "src/assets/serendipity/serendipity/pet/\344\271\211\345\215\203\351\207\221.png" (100%) rename "src/assets/serendipity/serendipity/\344\271\261\347\272\242\351\270\276.png" => "src/assets/serendipity/serendipity/pet/\344\271\261\347\272\242\351\270\276.png" (100%) rename "src/assets/serendipity/serendipity/\345\204\277\345\245\263\344\272\213.png" => "src/assets/serendipity/serendipity/pet/\345\204\277\345\245\263\344\272\213.png" (100%) rename "src/assets/serendipity/serendipity/\345\205\263\345\244\226\345\225\206.png" => "src/assets/serendipity/serendipity/pet/\345\205\263\345\244\226\345\225\206.png" (100%) rename "src/assets/serendipity/serendipity/\345\205\275\347\216\213\344\275\251.png" => "src/assets/serendipity/serendipity/pet/\345\205\275\347\216\213\344\275\251.png" (100%) rename "src/assets/serendipity/serendipity/\345\214\227\350\241\214\351\225\226.png" => "src/assets/serendipity/serendipity/pet/\345\214\227\350\241\214\351\225\226.png" (100%) rename "src/assets/serendipity/serendipity/\345\244\234\345\223\200\351\270\243.png" => "src/assets/serendipity/serendipity/pet/\345\244\234\345\223\200\351\270\243.png" (100%) rename "src/assets/serendipity/serendipity/\345\244\252\350\241\214\351\201\223.png" => "src/assets/serendipity/serendipity/pet/\345\244\252\350\241\214\351\201\223.png" (100%) rename "src/assets/serendipity/serendipity/\345\255\220\345\244\234\346\255\214.png" => "src/assets/serendipity/serendipity/pet/\345\255\220\345\244\234\346\255\214.png" (100%) rename "src/assets/serendipity/serendipity/\345\255\251\347\253\245\344\271\246.png" => "src/assets/serendipity/serendipity/pet/\345\255\251\347\253\245\344\271\246.png" (100%) rename "src/assets/serendipity/serendipity/\345\256\242\346\261\237\345\271\262.png" => "src/assets/serendipity/serendipity/pet/\345\256\242\346\261\237\345\271\262.png" (100%) rename "src/assets/serendipity/serendipity/\345\257\223\345\244\251\346\266\257.png" => "src/assets/serendipity/serendipity/pet/\345\257\223\345\244\251\346\266\257.png" (100%) rename "src/assets/serendipity/serendipity/\345\260\230\347\275\221\344\270\255.png" => "src/assets/serendipity/serendipity/pet/\345\260\230\347\275\221\344\270\255.png" (100%) rename "src/assets/serendipity/serendipity/\345\271\275\346\265\267\347\211\247.png" => "src/assets/serendipity/serendipity/pet/\345\271\275\346\265\267\347\211\247.png" (100%) rename "src/assets/serendipity/serendipity/\345\275\222\344\271\241\350\267\257.png" => "src/assets/serendipity/serendipity/pet/\345\275\222\344\271\241\350\267\257.png" (100%) rename "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" => "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" (100%) rename "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" => "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" (100%) rename "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" => "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" (100%) rename "src/assets/serendipity/serendipity/\345\277\265\346\227\247\346\236\227.png" => "src/assets/serendipity/serendipity/pet/\345\277\265\346\227\247\346\236\227.png" (100%) rename "src/assets/serendipity/serendipity/\346\210\216\351\251\254\350\276\271.png" => "src/assets/serendipity/serendipity/pet/\346\210\216\351\251\254\350\276\271.png" (100%) rename "src/assets/serendipity/serendipity/\346\215\211\345\246\226\350\256\260.png" => "src/assets/serendipity/serendipity/pet/\346\215\211\345\246\226\350\256\260.png" (100%) rename "src/assets/serendipity/serendipity/\346\215\211\350\264\274\350\256\260.png" => "src/assets/serendipity/serendipity/pet/\346\215\211\350\264\274\350\256\260.png" (100%) rename "src/assets/serendipity/serendipity/\346\225\205\345\262\201\350\276\236.png" => "src/assets/serendipity/serendipity/pet/\346\225\205\345\262\201\350\276\236.png" (100%) rename "src/assets/serendipity/serendipity/\346\236\211\345\217\271\346\201\250.png" => "src/assets/serendipity/serendipity/pet/\346\236\211\345\217\271\346\201\250.png" (100%) rename "src/assets/serendipity/serendipity/\346\236\253\346\236\227\351\205\222.png" => "src/assets/serendipity/serendipity/pet/\346\236\253\346\236\227\351\205\222.png" (100%) rename "src/assets/serendipity/serendipity/\346\261\237\346\271\226\345\275\225.png" => "src/assets/serendipity/serendipity/pet/\346\261\237\346\271\226\345\275\225.png" (100%) rename "src/assets/serendipity/serendipity/\346\262\231\346\265\267\350\260\243.png" => "src/assets/serendipity/serendipity/pet/\346\262\231\346\265\267\350\260\243.png" (100%) rename "src/assets/serendipity/serendipity/\346\262\247\346\265\267\347\254\233.png" => "src/assets/serendipity/serendipity/pet/\346\262\247\346\265\267\347\254\233.png" (100%) rename "src/assets/serendipity/serendipity/\346\270\205\350\214\227\347\273\217.png" => "src/assets/serendipity/serendipity/pet/\346\270\205\350\214\227\347\273\217.png" (100%) rename "src/assets/serendipity/serendipity/\346\273\207\345\215\227\350\241\214.png" => "src/assets/serendipity/serendipity/pet/\346\273\207\345\215\227\350\241\214.png" (100%) rename "src/assets/serendipity/serendipity/\346\273\264\346\260\264\346\201\251.png" => "src/assets/serendipity/serendipity/pet/\346\273\264\346\260\264\346\201\251.png" (100%) rename "src/assets/serendipity/serendipity/\347\200\233\346\264\262\346\242\246.png" => "src/assets/serendipity/serendipity/pet/\347\200\233\346\264\262\346\242\246.png" (100%) rename "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" => "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" (100%) rename "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" => "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" (100%) rename "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" => "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" (100%) rename "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" => "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" (100%) rename "src/assets/serendipity/serendipity/\347\203\271\350\260\203\346\263\225.png" => "src/assets/serendipity/serendipity/pet/\347\203\271\350\260\203\346\263\225.png" (100%) rename "src/assets/serendipity/serendipity/\347\231\275\346\234\210\347\232\216.png" => "src/assets/serendipity/serendipity/pet/\347\231\275\346\234\210\347\232\216.png" (100%) rename "src/assets/serendipity/serendipity/\347\231\275\351\233\252\345\277\206.png" => "src/assets/serendipity/serendipity/pet/\347\231\275\351\233\252\345\277\206.png" (100%) rename "src/assets/serendipity/serendipity/\347\237\263\346\225\242\345\275\223.png" => "src/assets/serendipity/serendipity/pet/\347\237\263\346\225\242\345\275\223.png" (100%) rename "src/assets/serendipity/serendipity/\347\240\264\345\267\247\350\250\200.png" => "src/assets/serendipity/serendipity/pet/\347\240\264\345\267\247\350\250\200.png" (100%) rename "src/assets/serendipity/serendipity/\347\240\264\346\231\223\351\270\243.png" => "src/assets/serendipity/serendipity/pet/\347\240\264\346\231\223\351\270\243.png" (100%) rename "src/assets/serendipity/serendipity/\347\247\230\345\256\235\345\233\276.png" => "src/assets/serendipity/serendipity/pet/\347\247\230\345\256\235\345\233\276.png" (100%) rename "src/assets/serendipity/serendipity/\347\250\232\345\255\220\345\277\203.png" => "src/assets/serendipity/serendipity/pet/\347\250\232\345\255\220\345\277\203.png" (100%) rename "src/assets/serendipity/serendipity/\347\253\245\350\222\231\345\277\227.png" => "src/assets/serendipity/serendipity/pet/\347\253\245\350\222\231\345\277\227.png" (100%) rename "src/assets/serendipity/serendipity/\347\253\271\351\251\254\346\203\205.png" => "src/assets/serendipity/serendipity/pet/\347\253\271\351\251\254\346\203\205.png" (100%) rename "src/assets/serendipity/serendipity/\347\272\242\350\241\243\346\255\214.png" => "src/assets/serendipity/serendipity/pet/\347\272\242\350\241\243\346\255\214.png" (100%) rename "src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" => "src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" (100%) rename "src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" => "src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" (100%) rename "src/assets/serendipity/serendipity/\350\203\234\350\264\237\345\261\200.png" => "src/assets/serendipity/serendipity/pet/\350\203\234\350\264\237\345\261\200.png" (100%) rename "src/assets/serendipity/serendipity/\350\207\263\345\260\212\345\256\235.png" => "src/assets/serendipity/serendipity/pet/\350\207\263\345\260\212\345\256\235.png" (100%) rename "src/assets/serendipity/serendipity/\350\215\206\350\275\262\345\210\272.png" => "src/assets/serendipity/serendipity/pet/\350\215\206\350\275\262\345\210\272.png" (100%) rename "src/assets/serendipity/serendipity/\350\216\253\350\264\252\346\235\257.png" => "src/assets/serendipity/serendipity/pet/\350\216\253\350\264\252\346\235\257.png" (100%) rename "src/assets/serendipity/serendipity/\350\247\205\347\237\245\351\237\263.png" => "src/assets/serendipity/serendipity/pet/\350\247\205\347\237\245\351\237\263.png" (100%) rename "src/assets/serendipity/serendipity/\350\247\243\345\277\203\350\257\255.png" => "src/assets/serendipity/serendipity/pet/\350\247\243\345\277\203\350\257\255.png" (100%) rename "src/assets/serendipity/serendipity/\350\257\235\347\216\204\350\231\232.png" => "src/assets/serendipity/serendipity/pet/\350\257\235\347\216\204\350\231\232.png" (100%) rename "src/assets/serendipity/serendipity/\350\260\234\344\271\246\347\224\237.png" => "src/assets/serendipity/serendipity/pet/\350\260\234\344\271\246\347\224\237.png" (100%) rename "src/assets/serendipity/serendipity/\350\267\257\346\212\225\347\237\263.png" => "src/assets/serendipity/serendipity/pet/\350\267\257\346\212\225\347\237\263.png" (100%) rename "src/assets/serendipity/serendipity/\351\206\211\347\203\237\346\263\242.png" => "src/assets/serendipity/serendipity/pet/\351\206\211\347\203\237\346\263\242.png" (100%) rename "src/assets/serendipity/serendipity/\351\207\215\346\264\213\345\256\242.png" => "src/assets/serendipity/serendipity/pet/\351\207\215\346\264\213\345\256\242.png" (100%) rename "src/assets/serendipity/serendipity/\351\224\213\350\212\222\345\261\225.png" => "src/assets/serendipity/serendipity/pet/\351\224\213\350\212\222\345\261\225.png" (100%) rename "src/assets/serendipity/serendipity/\351\224\273\345\211\221\345\245\263.png" => "src/assets/serendipity/serendipity/pet/\351\224\273\345\211\221\345\245\263.png" (100%) rename "src/assets/serendipity/serendipity/\351\234\262\345\233\255\344\272\213.png" => "src/assets/serendipity/serendipity/pet/\351\234\262\345\233\255\344\272\213.png" (100%) rename "src/assets/serendipity/serendipity/\351\235\222\350\215\211\346\255\214.png" => "src/assets/serendipity/serendipity/pet/\351\235\222\350\215\211\346\255\214.png" (100%) rename "src/assets/serendipity/serendipity/\351\243\216\351\233\250\346\204\217.png" => "src/assets/serendipity/serendipity/pet/\351\243\216\351\233\250\346\204\217.png" (100%) rename "src/assets/serendipity/serendipity/\351\270\240\351\233\200\350\256\260.png" => "src/assets/serendipity/serendipity/pet/\351\270\240\351\233\200\350\256\260.png" (100%) create mode 100644 src/plugins/jx3/serendipity/v3.py create mode 100644 src/views/jx3/serendipity/v3.html diff --git "a/src/assets/serendipity/serendipity/\344\271\261\344\270\226\350\210\236\345\247\254.png" "b/src/assets/serendipity/serendipity/common/\344\271\261\344\270\226\350\210\236\345\247\254.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\271\261\344\270\226\350\210\236\345\247\254.png" rename to "src/assets/serendipity/serendipity/common/\344\271\261\344\270\226\350\210\236\345\247\254.png" diff --git "a/src/assets/serendipity/serendipity/\344\276\240\350\200\205\346\210\220\346\255\214.png" "b/src/assets/serendipity/serendipity/common/\344\276\240\350\200\205\346\210\220\346\255\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\276\240\350\200\205\346\210\220\346\255\214.png" rename to "src/assets/serendipity/serendipity/common/\344\276\240\350\200\205\346\210\220\346\255\214.png" diff --git "a/src/assets/serendipity/serendipity/\345\207\214\344\272\221\346\242\257.png" "b/src/assets/serendipity/serendipity/common/\345\207\214\344\272\221\346\242\257.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\207\214\344\272\221\346\242\257.png" rename to "src/assets/serendipity/serendipity/common/\345\207\214\344\272\221\346\242\257.png" diff --git "a/src/assets/serendipity/serendipity/\345\212\235\345\255\246\350\256\260.png" "b/src/assets/serendipity/serendipity/common/\345\212\235\345\255\246\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\212\235\345\255\246\350\256\260.png" rename to "src/assets/serendipity/serendipity/common/\345\212\235\345\255\246\350\256\260.png" diff --git "a/src/assets/serendipity/serendipity/\345\244\251\346\266\257\346\227\240\345\275\222.png" "b/src/assets/serendipity/serendipity/common/\345\244\251\346\266\257\346\227\240\345\275\222.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\244\251\346\266\257\346\227\240\345\275\222.png" rename to "src/assets/serendipity/serendipity/common/\345\244\251\346\266\257\346\227\240\345\275\222.png" diff --git "a/src/assets/serendipity/serendipity/\345\257\273\347\214\253\350\256\260.png" "b/src/assets/serendipity/serendipity/common/\345\257\273\347\214\253\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\257\273\347\214\253\350\256\260.png" rename to "src/assets/serendipity/serendipity/common/\345\257\273\347\214\253\350\256\260.png" diff --git "a/src/assets/serendipity/serendipity/\345\260\221\345\271\264\350\241\214.png" "b/src/assets/serendipity/serendipity/common/\345\260\221\345\271\264\350\241\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\260\221\345\271\264\350\241\214.png" rename to "src/assets/serendipity/serendipity/common/\345\260\221\345\271\264\350\241\214.png" diff --git "a/src/assets/serendipity/serendipity/\345\271\263\347\224\237\345\277\203\346\204\277.png" "b/src/assets/serendipity/serendipity/common/\345\271\263\347\224\237\345\277\203\346\204\277.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\271\263\347\224\237\345\277\203\346\204\277.png" rename to "src/assets/serendipity/serendipity/common/\345\271\263\347\224\237\345\277\203\346\204\277.png" diff --git "a/src/assets/serendipity/serendipity/\345\272\206\350\210\236\350\211\257\345\256\265.png" "b/src/assets/serendipity/serendipity/common/\345\272\206\350\210\236\350\211\257\345\256\265.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\272\206\350\210\236\350\211\257\345\256\265.png" rename to "src/assets/serendipity/serendipity/common/\345\272\206\350\210\236\350\211\257\345\256\265.png" diff --git "a/src/assets/serendipity/serendipity/\345\272\246\344\272\272\345\277\203.png" "b/src/assets/serendipity/serendipity/common/\345\272\246\344\272\272\345\277\203.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\272\246\344\272\272\345\277\203.png" rename to "src/assets/serendipity/serendipity/common/\345\272\246\344\272\272\345\277\203.png" diff --git "a/src/assets/serendipity/serendipity/\346\203\234\345\276\200\346\227\245.png" "b/src/assets/serendipity/serendipity/common/\346\203\234\345\276\200\346\227\245.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\203\234\345\276\200\346\227\245.png" rename to "src/assets/serendipity/serendipity/common/\346\203\234\345\276\200\346\227\245.png" diff --git "a/src/assets/serendipity/serendipity/\346\211\266\346\221\207\344\271\235\345\244\251.png" "b/src/assets/serendipity/serendipity/common/\346\211\266\346\221\207\344\271\235\345\244\251.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\211\266\346\221\207\344\271\235\345\244\251.png" rename to "src/assets/serendipity/serendipity/common/\346\211\266\346\221\207\344\271\235\345\244\251.png" diff --git "a/src/assets/serendipity/serendipity/\346\212\244\344\275\221\350\213\215\347\224\237.png" "b/src/assets/serendipity/serendipity/common/\346\212\244\344\275\221\350\213\215\347\224\237.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\212\244\344\275\221\350\213\215\347\224\237.png" rename to "src/assets/serendipity/serendipity/common/\346\212\244\344\275\221\350\213\215\347\224\237.png" diff --git "a/src/assets/serendipity/serendipity/\346\213\234\346\230\245\346\223\202.png" "b/src/assets/serendipity/serendipity/common/\346\213\234\346\230\245\346\223\202.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\213\234\346\230\245\346\223\202.png" rename to "src/assets/serendipity/serendipity/common/\346\213\234\346\230\245\346\223\202.png" diff --git "a/src/assets/serendipity/serendipity/\346\225\205\345\233\255\351\243\216\351\233\250.png" "b/src/assets/serendipity/serendipity/common/\346\225\205\345\233\255\351\243\216\351\233\250.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\225\205\345\233\255\351\243\216\351\233\250.png" rename to "src/assets/serendipity/serendipity/common/\346\225\205\345\233\255\351\243\216\351\233\250.png" diff --git "a/src/assets/serendipity/serendipity/\346\227\247\345\256\264\346\211\277\346\254\242.png" "b/src/assets/serendipity/serendipity/common/\346\227\247\345\256\264\346\211\277\346\254\242.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\227\247\345\256\264\346\211\277\346\254\242.png" rename to "src/assets/serendipity/serendipity/common/\346\227\247\345\256\264\346\211\277\346\254\242.png" diff --git "a/src/assets/serendipity/serendipity/\346\263\233\345\244\251\346\262\263.png" "b/src/assets/serendipity/serendipity/common/\346\263\233\345\244\251\346\262\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\263\233\345\244\251\346\262\263.png" rename to "src/assets/serendipity/serendipity/common/\346\263\233\345\244\251\346\262\263.png" diff --git "a/src/assets/serendipity/serendipity/\346\270\205\351\243\216\346\215\225\347\216\213.png" "b/src/assets/serendipity/serendipity/common/\346\270\205\351\243\216\346\215\225\347\216\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\270\205\351\243\216\346\215\225\347\216\213.png" rename to "src/assets/serendipity/serendipity/common/\346\270\205\351\243\216\346\215\225\347\216\213.png" diff --git "a/src/assets/serendipity/serendipity/\347\202\274\347\213\261\345\216\250\347\245\236.png" "b/src/assets/serendipity/serendipity/common/\347\202\274\347\213\261\345\216\250\347\245\236.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\202\274\347\213\261\345\216\250\347\245\236.png" rename to "src/assets/serendipity/serendipity/common/\347\202\274\347\213\261\345\216\250\347\245\236.png" diff --git "a/src/assets/serendipity/serendipity/\347\224\237\346\255\273\345\210\244.png" "b/src/assets/serendipity/serendipity/common/\347\224\237\346\255\273\345\210\244.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\224\237\346\255\273\345\210\244.png" rename to "src/assets/serendipity/serendipity/common/\347\224\237\346\255\273\345\210\244.png" diff --git "a/src/assets/serendipity/serendipity/\347\231\275\346\227\245\346\242\246.png" "b/src/assets/serendipity/serendipity/common/\347\231\275\346\227\245\346\242\246.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\231\275\346\227\245\346\242\246.png" rename to "src/assets/serendipity/serendipity/common/\347\231\275\346\227\245\346\242\246.png" diff --git "a/src/assets/serendipity/serendipity/\347\251\272\350\260\267\345\233\236\351\237\263.png" "b/src/assets/serendipity/serendipity/common/\347\251\272\350\260\267\345\233\236\351\237\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\251\272\350\260\267\345\233\236\351\237\263.png" rename to "src/assets/serendipity/serendipity/common/\347\251\272\350\260\267\345\233\236\351\237\263.png" diff --git "a/src/assets/serendipity/serendipity/\347\272\242\345\260\230\344\270\215\346\270\241.png" "b/src/assets/serendipity/serendipity/common/\347\272\242\345\260\230\344\270\215\346\270\241.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\272\242\345\260\230\344\270\215\346\270\241.png" rename to "src/assets/serendipity/serendipity/common/\347\272\242\345\260\230\344\270\215\346\270\241.png" diff --git "a/src/assets/serendipity/serendipity/\350\210\236\344\274\227\347\224\237.png" "b/src/assets/serendipity/serendipity/common/\350\210\236\344\274\227\347\224\237.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\210\236\344\274\227\347\224\237.png" rename to "src/assets/serendipity/serendipity/common/\350\210\236\344\274\227\347\224\237.png" diff --git "a/src/assets/serendipity/serendipity/\350\214\266\351\246\206\345\245\207\347\274\230.png" "b/src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\345\245\207\347\274\230.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\214\266\351\246\206\345\245\207\347\274\230.png" rename to "src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\345\245\207\347\274\230.png" diff --git "a/src/assets/serendipity/serendipity/\350\214\266\351\246\206\346\202\254\350\265\217.png" "b/src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\346\202\254\350\265\217.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\214\266\351\246\206\346\202\254\350\265\217.png" rename to "src/assets/serendipity/serendipity/common/\350\214\266\351\246\206\346\202\254\350\265\217.png" diff --git "a/src/assets/serendipity/serendipity/\350\216\253\350\264\237\345\210\235\345\277\203.png" "b/src/assets/serendipity/serendipity/common/\350\216\253\350\264\237\345\210\235\345\277\203.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\216\253\350\264\237\345\210\235\345\277\203.png" rename to "src/assets/serendipity/serendipity/common/\350\216\253\350\264\237\345\210\235\345\277\203.png" diff --git "a/src/assets/serendipity/serendipity/\350\231\216\345\225\270\345\261\261\346\236\227.png" "b/src/assets/serendipity/serendipity/common/\350\231\216\345\225\270\345\261\261\346\236\227.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\231\216\345\225\270\345\261\261\346\236\227.png" rename to "src/assets/serendipity/serendipity/common/\350\231\216\345\225\270\345\261\261\346\236\227.png" diff --git "a/src/assets/serendipity/serendipity/\350\265\264\344\271\235\345\271\275.png" "b/src/assets/serendipity/serendipity/common/\350\265\264\344\271\235\345\271\275.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\265\264\344\271\235\345\271\275.png" rename to "src/assets/serendipity/serendipity/common/\350\265\264\344\271\235\345\271\275.png" diff --git "a/src/assets/serendipity/serendipity/\351\225\226\350\241\214\345\244\251\344\270\213.png" "b/src/assets/serendipity/serendipity/common/\351\225\226\350\241\214\345\244\251\344\270\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\225\226\350\241\214\345\244\251\344\270\213.png" rename to "src/assets/serendipity/serendipity/common/\351\225\226\350\241\214\345\244\251\344\270\213.png" diff --git "a/src/assets/serendipity/serendipity/\351\225\234\344\270\255\347\220\264\351\237\263.png" "b/src/assets/serendipity/serendipity/common/\351\225\234\344\270\255\347\220\264\351\237\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\225\234\344\270\255\347\220\264\351\237\263.png" rename to "src/assets/serendipity/serendipity/common/\351\225\234\344\270\255\347\220\264\351\237\263.png" diff --git "a/src/assets/serendipity/serendipity/\351\233\252\345\261\261\346\201\251\344\273\207.png" "b/src/assets/serendipity/serendipity/common/\351\233\252\345\261\261\346\201\251\344\273\207.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\233\252\345\261\261\346\201\251\344\273\207.png" rename to "src/assets/serendipity/serendipity/common/\351\233\252\345\261\261\346\201\251\344\273\207.png" diff --git "a/src/assets/serendipity/serendipity/\351\237\266\345\215\216\346\225\205.png" "b/src/assets/serendipity/serendipity/common/\351\237\266\345\215\216\346\225\205.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\237\266\345\215\216\346\225\205.png" rename to "src/assets/serendipity/serendipity/common/\351\237\266\345\215\216\346\225\205.png" diff --git "a/src/assets/serendipity/serendipity/\351\273\221\347\231\275\350\267\257.png" "b/src/assets/serendipity/serendipity/common/\351\273\221\347\231\275\350\267\257.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\273\221\347\231\275\350\267\257.png" rename to "src/assets/serendipity/serendipity/common/\351\273\221\347\231\275\350\267\257.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\207\347\201\265\345\275\223\346\255\214.png" "b/src/assets/serendipity/serendipity/peerless/\344\270\207\347\201\265\345\275\223\346\255\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\207\347\201\265\345\275\223\346\255\214.png" rename to "src/assets/serendipity/serendipity/peerless/\344\270\207\347\201\265\345\275\223\346\255\214.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\211\345\260\272\351\235\222\351\224\213.png" "b/src/assets/serendipity/serendipity/peerless/\344\270\211\345\260\272\351\235\222\351\224\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\211\345\260\272\351\235\222\351\224\213.png" rename to "src/assets/serendipity/serendipity/peerless/\344\270\211\345\260\272\351\235\222\351\224\213.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\211\345\261\261\345\233\233\346\265\267.png" "b/src/assets/serendipity/serendipity/peerless/\344\270\211\345\261\261\345\233\233\346\265\267.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\211\345\261\261\345\233\233\346\265\267.png" rename to "src/assets/serendipity/serendipity/peerless/\344\270\211\345\261\261\345\233\233\346\265\267.png" diff --git "a/src/assets/serendipity/serendipity/\344\272\211\351\223\270\345\220\264\351\222\251.png" "b/src/assets/serendipity/serendipity/peerless/\344\272\211\351\223\270\345\220\264\351\222\251.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\272\211\351\223\270\345\220\264\351\222\251.png" rename to "src/assets/serendipity/serendipity/peerless/\344\272\211\351\223\270\345\220\264\351\222\251.png" diff --git "a/src/assets/serendipity/serendipity/\344\276\240\350\241\214\345\233\247\351\200\224.png" "b/src/assets/serendipity/serendipity/peerless/\344\276\240\350\241\214\345\233\247\351\200\224.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\276\240\350\241\214\345\233\247\351\200\224.png" rename to "src/assets/serendipity/serendipity/peerless/\344\276\240\350\241\214\345\233\247\351\200\224.png" diff --git "a/src/assets/serendipity/serendipity/\345\205\224\346\261\237\346\271\226.png" "b/src/assets/serendipity/serendipity/peerless/\345\205\224\346\261\237\346\271\226.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\205\224\346\261\237\346\271\226.png" rename to "src/assets/serendipity/serendipity/peerless/\345\205\224\346\261\237\346\271\226.png" diff --git "a/src/assets/serendipity/serendipity/\345\205\245\350\233\237\345\256\253.png" "b/src/assets/serendipity/serendipity/peerless/\345\205\245\350\233\237\345\256\253.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\205\245\350\233\237\345\256\253.png" rename to "src/assets/serendipity/serendipity/peerless/\345\205\245\350\233\237\345\256\253.png" diff --git "a/src/assets/serendipity/serendipity/\345\215\203\347\247\213\351\223\270.png" "b/src/assets/serendipity/serendipity/peerless/\345\215\203\347\247\213\351\223\270.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\215\203\347\247\213\351\223\270.png" rename to "src/assets/serendipity/serendipity/peerless/\345\215\203\347\247\213\351\223\270.png" diff --git "a/src/assets/serendipity/serendipity/\345\241\236\345\244\226\345\256\235\351\251\271.png" "b/src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\345\256\235\351\251\271.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\241\236\345\244\226\345\256\235\351\251\271.png" rename to "src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\345\256\235\351\251\271.png" diff --git "a/src/assets/serendipity/serendipity/\345\241\236\345\244\226\350\245\277\351\243\216.png" "b/src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\350\245\277\351\243\216.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\241\236\345\244\226\350\245\277\351\243\216.png" rename to "src/assets/serendipity/serendipity/peerless/\345\241\236\345\244\226\350\245\277\351\243\216.png" diff --git "a/src/assets/serendipity/serendipity/\346\230\206\345\220\276\344\275\231\347\201\253.png" "b/src/assets/serendipity/serendipity/peerless/\346\230\206\345\220\276\344\275\231\347\201\253.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\230\206\345\220\276\344\275\231\347\201\253.png" rename to "src/assets/serendipity/serendipity/peerless/\346\230\206\345\220\276\344\275\231\347\201\253.png" diff --git "a/src/assets/serendipity/serendipity/\346\265\201\345\271\264\345\246\202\350\231\271.png" "b/src/assets/serendipity/serendipity/peerless/\346\265\201\345\271\264\345\246\202\350\231\271.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\265\201\345\271\264\345\246\202\350\231\271.png" rename to "src/assets/serendipity/serendipity/peerless/\346\265\201\345\271\264\345\246\202\350\231\271.png" diff --git "a/src/assets/serendipity/serendipity/\346\265\216\350\213\215\347\224\237.png" "b/src/assets/serendipity/serendipity/peerless/\346\265\216\350\213\215\347\224\237.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\265\216\350\213\215\347\224\237.png" rename to "src/assets/serendipity/serendipity/peerless/\346\265\216\350\213\215\347\224\237.png" diff --git "a/src/assets/serendipity/serendipity/\346\265\256\345\205\211\347\273\207\346\242\246.png" "b/src/assets/serendipity/serendipity/peerless/\346\265\256\345\205\211\347\273\207\346\242\246.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\265\256\345\205\211\347\273\207\346\242\246.png" rename to "src/assets/serendipity/serendipity/peerless/\346\265\256\345\205\211\347\273\207\346\242\246.png" diff --git "a/src/assets/serendipity/serendipity/\350\277\275\351\255\202\351\252\250.png" "b/src/assets/serendipity/serendipity/peerless/\350\277\275\351\255\202\351\252\250.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\277\275\351\255\202\351\252\250.png" rename to "src/assets/serendipity/serendipity/peerless/\350\277\275\351\255\202\351\252\250.png" diff --git "a/src/assets/serendipity/serendipity/\351\230\264\351\230\263\344\270\244\347\225\214.png" "b/src/assets/serendipity/serendipity/peerless/\351\230\264\351\230\263\344\270\244\347\225\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\230\264\351\230\263\344\270\244\347\225\214.png" rename to "src/assets/serendipity/serendipity/peerless/\351\230\264\351\230\263\344\270\244\347\225\214.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\200\345\277\265\351\227\264.png" "b/src/assets/serendipity/serendipity/pet/\344\270\200\345\277\265\351\227\264.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\200\345\277\265\351\227\264.png" rename to "src/assets/serendipity/serendipity/pet/\344\270\200\345\277\265\351\227\264.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\200\346\236\235\346\240\226.png" "b/src/assets/serendipity/serendipity/pet/\344\270\200\346\236\235\346\240\226.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\200\346\236\235\346\240\226.png" rename to "src/assets/serendipity/serendipity/pet/\344\270\200\346\236\235\346\240\226.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\234\346\265\267\345\256\242.png" "b/src/assets/serendipity/serendipity/pet/\344\270\234\346\265\267\345\256\242.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\234\346\265\267\345\256\242.png" rename to "src/assets/serendipity/serendipity/pet/\344\270\234\346\265\267\345\256\242.png" diff --git "a/src/assets/serendipity/serendipity/\344\270\271\351\235\222\350\256\260.png" "b/src/assets/serendipity/serendipity/pet/\344\270\271\351\235\222\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\270\271\351\235\222\350\256\260.png" rename to "src/assets/serendipity/serendipity/pet/\344\270\271\351\235\222\350\256\260.png" diff --git "a/src/assets/serendipity/serendipity/\344\271\211\345\215\203\351\207\221.png" "b/src/assets/serendipity/serendipity/pet/\344\271\211\345\215\203\351\207\221.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\271\211\345\215\203\351\207\221.png" rename to "src/assets/serendipity/serendipity/pet/\344\271\211\345\215\203\351\207\221.png" diff --git "a/src/assets/serendipity/serendipity/\344\271\261\347\272\242\351\270\276.png" "b/src/assets/serendipity/serendipity/pet/\344\271\261\347\272\242\351\270\276.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\344\271\261\347\272\242\351\270\276.png" rename to "src/assets/serendipity/serendipity/pet/\344\271\261\347\272\242\351\270\276.png" diff --git "a/src/assets/serendipity/serendipity/\345\204\277\345\245\263\344\272\213.png" "b/src/assets/serendipity/serendipity/pet/\345\204\277\345\245\263\344\272\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\204\277\345\245\263\344\272\213.png" rename to "src/assets/serendipity/serendipity/pet/\345\204\277\345\245\263\344\272\213.png" diff --git "a/src/assets/serendipity/serendipity/\345\205\263\345\244\226\345\225\206.png" "b/src/assets/serendipity/serendipity/pet/\345\205\263\345\244\226\345\225\206.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\205\263\345\244\226\345\225\206.png" rename to "src/assets/serendipity/serendipity/pet/\345\205\263\345\244\226\345\225\206.png" diff --git "a/src/assets/serendipity/serendipity/\345\205\275\347\216\213\344\275\251.png" "b/src/assets/serendipity/serendipity/pet/\345\205\275\347\216\213\344\275\251.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\205\275\347\216\213\344\275\251.png" rename to "src/assets/serendipity/serendipity/pet/\345\205\275\347\216\213\344\275\251.png" diff --git "a/src/assets/serendipity/serendipity/\345\214\227\350\241\214\351\225\226.png" "b/src/assets/serendipity/serendipity/pet/\345\214\227\350\241\214\351\225\226.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\214\227\350\241\214\351\225\226.png" rename to "src/assets/serendipity/serendipity/pet/\345\214\227\350\241\214\351\225\226.png" diff --git "a/src/assets/serendipity/serendipity/\345\244\234\345\223\200\351\270\243.png" "b/src/assets/serendipity/serendipity/pet/\345\244\234\345\223\200\351\270\243.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\244\234\345\223\200\351\270\243.png" rename to "src/assets/serendipity/serendipity/pet/\345\244\234\345\223\200\351\270\243.png" diff --git "a/src/assets/serendipity/serendipity/\345\244\252\350\241\214\351\201\223.png" "b/src/assets/serendipity/serendipity/pet/\345\244\252\350\241\214\351\201\223.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\244\252\350\241\214\351\201\223.png" rename to "src/assets/serendipity/serendipity/pet/\345\244\252\350\241\214\351\201\223.png" diff --git "a/src/assets/serendipity/serendipity/\345\255\220\345\244\234\346\255\214.png" "b/src/assets/serendipity/serendipity/pet/\345\255\220\345\244\234\346\255\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\255\220\345\244\234\346\255\214.png" rename to "src/assets/serendipity/serendipity/pet/\345\255\220\345\244\234\346\255\214.png" diff --git "a/src/assets/serendipity/serendipity/\345\255\251\347\253\245\344\271\246.png" "b/src/assets/serendipity/serendipity/pet/\345\255\251\347\253\245\344\271\246.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\255\251\347\253\245\344\271\246.png" rename to "src/assets/serendipity/serendipity/pet/\345\255\251\347\253\245\344\271\246.png" diff --git "a/src/assets/serendipity/serendipity/\345\256\242\346\261\237\345\271\262.png" "b/src/assets/serendipity/serendipity/pet/\345\256\242\346\261\237\345\271\262.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\256\242\346\261\237\345\271\262.png" rename to "src/assets/serendipity/serendipity/pet/\345\256\242\346\261\237\345\271\262.png" diff --git "a/src/assets/serendipity/serendipity/\345\257\223\345\244\251\346\266\257.png" "b/src/assets/serendipity/serendipity/pet/\345\257\223\345\244\251\346\266\257.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\257\223\345\244\251\346\266\257.png" rename to "src/assets/serendipity/serendipity/pet/\345\257\223\345\244\251\346\266\257.png" diff --git "a/src/assets/serendipity/serendipity/\345\260\230\347\275\221\344\270\255.png" "b/src/assets/serendipity/serendipity/pet/\345\260\230\347\275\221\344\270\255.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\260\230\347\275\221\344\270\255.png" rename to "src/assets/serendipity/serendipity/pet/\345\260\230\347\275\221\344\270\255.png" diff --git "a/src/assets/serendipity/serendipity/\345\271\275\346\265\267\347\211\247.png" "b/src/assets/serendipity/serendipity/pet/\345\271\275\346\265\267\347\211\247.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\271\275\346\265\267\347\211\247.png" rename to "src/assets/serendipity/serendipity/pet/\345\271\275\346\265\267\347\211\247.png" diff --git "a/src/assets/serendipity/serendipity/\345\275\222\344\271\241\350\267\257.png" "b/src/assets/serendipity/serendipity/pet/\345\275\222\344\271\241\350\267\257.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\275\222\344\271\241\350\267\257.png" rename to "src/assets/serendipity/serendipity/pet/\345\275\222\344\271\241\350\267\257.png" diff --git "a/src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" "b/src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" rename to "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\256\211.png" diff --git "a/src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" "b/src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" rename to "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\275\222.png" diff --git "a/src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" "b/src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" rename to "src/assets/serendipity/serendipity/pet/\345\275\222\345\256\211\345\277\227\302\267\345\277\227.png" diff --git "a/src/assets/serendipity/serendipity/\345\277\265\346\227\247\346\236\227.png" "b/src/assets/serendipity/serendipity/pet/\345\277\265\346\227\247\346\236\227.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\345\277\265\346\227\247\346\236\227.png" rename to "src/assets/serendipity/serendipity/pet/\345\277\265\346\227\247\346\236\227.png" diff --git "a/src/assets/serendipity/serendipity/\346\210\216\351\251\254\350\276\271.png" "b/src/assets/serendipity/serendipity/pet/\346\210\216\351\251\254\350\276\271.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\210\216\351\251\254\350\276\271.png" rename to "src/assets/serendipity/serendipity/pet/\346\210\216\351\251\254\350\276\271.png" diff --git "a/src/assets/serendipity/serendipity/\346\215\211\345\246\226\350\256\260.png" "b/src/assets/serendipity/serendipity/pet/\346\215\211\345\246\226\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\215\211\345\246\226\350\256\260.png" rename to "src/assets/serendipity/serendipity/pet/\346\215\211\345\246\226\350\256\260.png" diff --git "a/src/assets/serendipity/serendipity/\346\215\211\350\264\274\350\256\260.png" "b/src/assets/serendipity/serendipity/pet/\346\215\211\350\264\274\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\215\211\350\264\274\350\256\260.png" rename to "src/assets/serendipity/serendipity/pet/\346\215\211\350\264\274\350\256\260.png" diff --git "a/src/assets/serendipity/serendipity/\346\225\205\345\262\201\350\276\236.png" "b/src/assets/serendipity/serendipity/pet/\346\225\205\345\262\201\350\276\236.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\225\205\345\262\201\350\276\236.png" rename to "src/assets/serendipity/serendipity/pet/\346\225\205\345\262\201\350\276\236.png" diff --git "a/src/assets/serendipity/serendipity/\346\236\211\345\217\271\346\201\250.png" "b/src/assets/serendipity/serendipity/pet/\346\236\211\345\217\271\346\201\250.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\236\211\345\217\271\346\201\250.png" rename to "src/assets/serendipity/serendipity/pet/\346\236\211\345\217\271\346\201\250.png" diff --git "a/src/assets/serendipity/serendipity/\346\236\253\346\236\227\351\205\222.png" "b/src/assets/serendipity/serendipity/pet/\346\236\253\346\236\227\351\205\222.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\236\253\346\236\227\351\205\222.png" rename to "src/assets/serendipity/serendipity/pet/\346\236\253\346\236\227\351\205\222.png" diff --git "a/src/assets/serendipity/serendipity/\346\261\237\346\271\226\345\275\225.png" "b/src/assets/serendipity/serendipity/pet/\346\261\237\346\271\226\345\275\225.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\261\237\346\271\226\345\275\225.png" rename to "src/assets/serendipity/serendipity/pet/\346\261\237\346\271\226\345\275\225.png" diff --git "a/src/assets/serendipity/serendipity/\346\262\231\346\265\267\350\260\243.png" "b/src/assets/serendipity/serendipity/pet/\346\262\231\346\265\267\350\260\243.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\262\231\346\265\267\350\260\243.png" rename to "src/assets/serendipity/serendipity/pet/\346\262\231\346\265\267\350\260\243.png" diff --git "a/src/assets/serendipity/serendipity/\346\262\247\346\265\267\347\254\233.png" "b/src/assets/serendipity/serendipity/pet/\346\262\247\346\265\267\347\254\233.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\262\247\346\265\267\347\254\233.png" rename to "src/assets/serendipity/serendipity/pet/\346\262\247\346\265\267\347\254\233.png" diff --git "a/src/assets/serendipity/serendipity/\346\270\205\350\214\227\347\273\217.png" "b/src/assets/serendipity/serendipity/pet/\346\270\205\350\214\227\347\273\217.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\270\205\350\214\227\347\273\217.png" rename to "src/assets/serendipity/serendipity/pet/\346\270\205\350\214\227\347\273\217.png" diff --git "a/src/assets/serendipity/serendipity/\346\273\207\345\215\227\350\241\214.png" "b/src/assets/serendipity/serendipity/pet/\346\273\207\345\215\227\350\241\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\273\207\345\215\227\350\241\214.png" rename to "src/assets/serendipity/serendipity/pet/\346\273\207\345\215\227\350\241\214.png" diff --git "a/src/assets/serendipity/serendipity/\346\273\264\346\260\264\346\201\251.png" "b/src/assets/serendipity/serendipity/pet/\346\273\264\346\260\264\346\201\251.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\346\273\264\346\260\264\346\201\251.png" rename to "src/assets/serendipity/serendipity/pet/\346\273\264\346\260\264\346\201\251.png" diff --git "a/src/assets/serendipity/serendipity/\347\200\233\346\264\262\346\242\246.png" "b/src/assets/serendipity/serendipity/pet/\347\200\233\346\264\262\346\242\246.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\200\233\346\264\262\346\242\246.png" rename to "src/assets/serendipity/serendipity/pet/\347\200\233\346\264\262\346\242\246.png" diff --git "a/src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" "b/src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" rename to "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\230\245.png" diff --git "a/src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" "b/src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" rename to "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\346\234\210.png" diff --git "a/src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" "b/src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" rename to "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\347\247\213.png" diff --git "a/src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" "b/src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" rename to "src/assets/serendipity/serendipity/pet/\347\203\237\350\212\261\346\210\217\302\267\351\243\216.png" diff --git "a/src/assets/serendipity/serendipity/\347\203\271\350\260\203\346\263\225.png" "b/src/assets/serendipity/serendipity/pet/\347\203\271\350\260\203\346\263\225.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\203\271\350\260\203\346\263\225.png" rename to "src/assets/serendipity/serendipity/pet/\347\203\271\350\260\203\346\263\225.png" diff --git "a/src/assets/serendipity/serendipity/\347\231\275\346\234\210\347\232\216.png" "b/src/assets/serendipity/serendipity/pet/\347\231\275\346\234\210\347\232\216.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\231\275\346\234\210\347\232\216.png" rename to "src/assets/serendipity/serendipity/pet/\347\231\275\346\234\210\347\232\216.png" diff --git "a/src/assets/serendipity/serendipity/\347\231\275\351\233\252\345\277\206.png" "b/src/assets/serendipity/serendipity/pet/\347\231\275\351\233\252\345\277\206.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\231\275\351\233\252\345\277\206.png" rename to "src/assets/serendipity/serendipity/pet/\347\231\275\351\233\252\345\277\206.png" diff --git "a/src/assets/serendipity/serendipity/\347\237\263\346\225\242\345\275\223.png" "b/src/assets/serendipity/serendipity/pet/\347\237\263\346\225\242\345\275\223.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\237\263\346\225\242\345\275\223.png" rename to "src/assets/serendipity/serendipity/pet/\347\237\263\346\225\242\345\275\223.png" diff --git "a/src/assets/serendipity/serendipity/\347\240\264\345\267\247\350\250\200.png" "b/src/assets/serendipity/serendipity/pet/\347\240\264\345\267\247\350\250\200.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\240\264\345\267\247\350\250\200.png" rename to "src/assets/serendipity/serendipity/pet/\347\240\264\345\267\247\350\250\200.png" diff --git "a/src/assets/serendipity/serendipity/\347\240\264\346\231\223\351\270\243.png" "b/src/assets/serendipity/serendipity/pet/\347\240\264\346\231\223\351\270\243.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\240\264\346\231\223\351\270\243.png" rename to "src/assets/serendipity/serendipity/pet/\347\240\264\346\231\223\351\270\243.png" diff --git "a/src/assets/serendipity/serendipity/\347\247\230\345\256\235\345\233\276.png" "b/src/assets/serendipity/serendipity/pet/\347\247\230\345\256\235\345\233\276.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\247\230\345\256\235\345\233\276.png" rename to "src/assets/serendipity/serendipity/pet/\347\247\230\345\256\235\345\233\276.png" diff --git "a/src/assets/serendipity/serendipity/\347\250\232\345\255\220\345\277\203.png" "b/src/assets/serendipity/serendipity/pet/\347\250\232\345\255\220\345\277\203.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\250\232\345\255\220\345\277\203.png" rename to "src/assets/serendipity/serendipity/pet/\347\250\232\345\255\220\345\277\203.png" diff --git "a/src/assets/serendipity/serendipity/\347\253\245\350\222\231\345\277\227.png" "b/src/assets/serendipity/serendipity/pet/\347\253\245\350\222\231\345\277\227.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\253\245\350\222\231\345\277\227.png" rename to "src/assets/serendipity/serendipity/pet/\347\253\245\350\222\231\345\277\227.png" diff --git "a/src/assets/serendipity/serendipity/\347\253\271\351\251\254\346\203\205.png" "b/src/assets/serendipity/serendipity/pet/\347\253\271\351\251\254\346\203\205.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\253\271\351\251\254\346\203\205.png" rename to "src/assets/serendipity/serendipity/pet/\347\253\271\351\251\254\346\203\205.png" diff --git "a/src/assets/serendipity/serendipity/\347\272\242\350\241\243\346\255\214.png" "b/src/assets/serendipity/serendipity/pet/\347\272\242\350\241\243\346\255\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\272\242\350\241\243\346\255\214.png" rename to "src/assets/serendipity/serendipity/pet/\347\272\242\350\241\243\346\255\214.png" diff --git "a/src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" "b/src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" rename to "src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\347\223\234.png" diff --git "a/src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" "b/src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" rename to "src/assets/serendipity/serendipity/pet/\347\274\230\346\235\245\344\274\232\302\267\351\223\203.png" diff --git "a/src/assets/serendipity/serendipity/\350\203\234\350\264\237\345\261\200.png" "b/src/assets/serendipity/serendipity/pet/\350\203\234\350\264\237\345\261\200.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\203\234\350\264\237\345\261\200.png" rename to "src/assets/serendipity/serendipity/pet/\350\203\234\350\264\237\345\261\200.png" diff --git "a/src/assets/serendipity/serendipity/\350\207\263\345\260\212\345\256\235.png" "b/src/assets/serendipity/serendipity/pet/\350\207\263\345\260\212\345\256\235.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\207\263\345\260\212\345\256\235.png" rename to "src/assets/serendipity/serendipity/pet/\350\207\263\345\260\212\345\256\235.png" diff --git "a/src/assets/serendipity/serendipity/\350\215\206\350\275\262\345\210\272.png" "b/src/assets/serendipity/serendipity/pet/\350\215\206\350\275\262\345\210\272.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\215\206\350\275\262\345\210\272.png" rename to "src/assets/serendipity/serendipity/pet/\350\215\206\350\275\262\345\210\272.png" diff --git "a/src/assets/serendipity/serendipity/\350\216\253\350\264\252\346\235\257.png" "b/src/assets/serendipity/serendipity/pet/\350\216\253\350\264\252\346\235\257.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\216\253\350\264\252\346\235\257.png" rename to "src/assets/serendipity/serendipity/pet/\350\216\253\350\264\252\346\235\257.png" diff --git "a/src/assets/serendipity/serendipity/\350\247\205\347\237\245\351\237\263.png" "b/src/assets/serendipity/serendipity/pet/\350\247\205\347\237\245\351\237\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\247\205\347\237\245\351\237\263.png" rename to "src/assets/serendipity/serendipity/pet/\350\247\205\347\237\245\351\237\263.png" diff --git "a/src/assets/serendipity/serendipity/\350\247\243\345\277\203\350\257\255.png" "b/src/assets/serendipity/serendipity/pet/\350\247\243\345\277\203\350\257\255.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\247\243\345\277\203\350\257\255.png" rename to "src/assets/serendipity/serendipity/pet/\350\247\243\345\277\203\350\257\255.png" diff --git "a/src/assets/serendipity/serendipity/\350\257\235\347\216\204\350\231\232.png" "b/src/assets/serendipity/serendipity/pet/\350\257\235\347\216\204\350\231\232.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\257\235\347\216\204\350\231\232.png" rename to "src/assets/serendipity/serendipity/pet/\350\257\235\347\216\204\350\231\232.png" diff --git "a/src/assets/serendipity/serendipity/\350\260\234\344\271\246\347\224\237.png" "b/src/assets/serendipity/serendipity/pet/\350\260\234\344\271\246\347\224\237.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\260\234\344\271\246\347\224\237.png" rename to "src/assets/serendipity/serendipity/pet/\350\260\234\344\271\246\347\224\237.png" diff --git "a/src/assets/serendipity/serendipity/\350\267\257\346\212\225\347\237\263.png" "b/src/assets/serendipity/serendipity/pet/\350\267\257\346\212\225\347\237\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\350\267\257\346\212\225\347\237\263.png" rename to "src/assets/serendipity/serendipity/pet/\350\267\257\346\212\225\347\237\263.png" diff --git "a/src/assets/serendipity/serendipity/\351\206\211\347\203\237\346\263\242.png" "b/src/assets/serendipity/serendipity/pet/\351\206\211\347\203\237\346\263\242.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\206\211\347\203\237\346\263\242.png" rename to "src/assets/serendipity/serendipity/pet/\351\206\211\347\203\237\346\263\242.png" diff --git "a/src/assets/serendipity/serendipity/\351\207\215\346\264\213\345\256\242.png" "b/src/assets/serendipity/serendipity/pet/\351\207\215\346\264\213\345\256\242.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\207\215\346\264\213\345\256\242.png" rename to "src/assets/serendipity/serendipity/pet/\351\207\215\346\264\213\345\256\242.png" diff --git "a/src/assets/serendipity/serendipity/\351\224\213\350\212\222\345\261\225.png" "b/src/assets/serendipity/serendipity/pet/\351\224\213\350\212\222\345\261\225.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\224\213\350\212\222\345\261\225.png" rename to "src/assets/serendipity/serendipity/pet/\351\224\213\350\212\222\345\261\225.png" diff --git "a/src/assets/serendipity/serendipity/\351\224\273\345\211\221\345\245\263.png" "b/src/assets/serendipity/serendipity/pet/\351\224\273\345\211\221\345\245\263.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\224\273\345\211\221\345\245\263.png" rename to "src/assets/serendipity/serendipity/pet/\351\224\273\345\211\221\345\245\263.png" diff --git "a/src/assets/serendipity/serendipity/\351\234\262\345\233\255\344\272\213.png" "b/src/assets/serendipity/serendipity/pet/\351\234\262\345\233\255\344\272\213.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\234\262\345\233\255\344\272\213.png" rename to "src/assets/serendipity/serendipity/pet/\351\234\262\345\233\255\344\272\213.png" diff --git "a/src/assets/serendipity/serendipity/\351\235\222\350\215\211\346\255\214.png" "b/src/assets/serendipity/serendipity/pet/\351\235\222\350\215\211\346\255\214.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\235\222\350\215\211\346\255\214.png" rename to "src/assets/serendipity/serendipity/pet/\351\235\222\350\215\211\346\255\214.png" diff --git "a/src/assets/serendipity/serendipity/\351\243\216\351\233\250\346\204\217.png" "b/src/assets/serendipity/serendipity/pet/\351\243\216\351\233\250\346\204\217.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\243\216\351\233\250\346\204\217.png" rename to "src/assets/serendipity/serendipity/pet/\351\243\216\351\233\250\346\204\217.png" diff --git "a/src/assets/serendipity/serendipity/\351\270\240\351\233\200\350\256\260.png" "b/src/assets/serendipity/serendipity/pet/\351\270\240\351\233\200\350\256\260.png" similarity index 100% rename from "src/assets/serendipity/serendipity/\351\270\240\351\233\200\350\256\260.png" rename to "src/assets/serendipity/serendipity/pet/\351\270\240\351\233\200\350\256\260.png" diff --git a/src/plugins/jx3/awesome/__init__.py b/src/plugins/jx3/awesome/__init__.py index 19d3e45f7..70c335dd9 100644 --- a/src/plugins/jx3/awesome/__init__.py +++ b/src/plugins/jx3/awesome/__init__.py @@ -3,6 +3,7 @@ from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment as ms from nonebot.params import CommandArg +from src.tools.config import Config from src.tools.utils.num import check_number from src.tools.utils.file import get_content_local @@ -12,7 +13,7 @@ @cheater.handle() async def _(event: GroupMessageEvent, args: Message = CommandArg()): - if args.extract_plain_text() == "": + if args.extract_plain_text() == "" or not Config.jx3.api.enable: return uin = args.extract_plain_text() if not check_number(uin): diff --git a/src/plugins/jx3/serendipity/__init__.py b/src/plugins/jx3/serendipity/__init__.py index caa252351..8ff6cecbc 100644 --- a/src/plugins/jx3/serendipity/__init__.py +++ b/src/plugins/jx3/serendipity/__init__.py @@ -3,11 +3,13 @@ from nonebot.params import CommandArg from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment as ms +from src.tools.config import Config from src.tools.utils.file import get_content_local from src.tools.utils.request import get_content -from .v1 import * -from .v2 import * +from .v1 import serendipity_ as v1_serendipity, statistical_, global_serendipity, global_statistical, get_preposition +from .v2 import getImage_v2 as v2_serendipity +from .v3 import get_serendipity_image_v3 as v3_serendipity jx3_cmd_serendipity = on_command("jx3_serendipity", aliases={"奇遇v1", "查询v1"}, force_whitespace=True, priority=5) @@ -19,7 +21,7 @@ async def _(event: GroupMessageEvent, args: Message = CommandArg()): Example:-奇遇 幽月轮 哭包猫@唯我独尊 """ - if args.extract_plain_text() == "": + if args.extract_plain_text() == "" or not Config.jx3.api.enable: return arg = args.extract_plain_text().split(" ") if len(arg) not in [1, 2]: @@ -30,7 +32,7 @@ async def _(event: GroupMessageEvent, args: Message = CommandArg()): elif len(arg) == 2: server = arg[0] id = arg[1] - data = await serendipity_(server, id, group_id=str(event.group_id)) + data = await v1_serendipity(server, id, group_id=str(event.group_id)) if isinstance(data, list): await jx3_cmd_serendipity.finish(data[0]) else: @@ -58,13 +60,41 @@ async def _(event: GroupMessageEvent, args: Message = CommandArg()): elif len(arg) == 2: server = arg[0] id = arg[1] - data = await getImage_v2(server, id, str(event.group_id), True) + data = await v2_serendipity(server, id, str(event.group_id), True) if isinstance(data, list): await serendipity_v2.finish(data[0]) elif isinstance(data, str): data = get_content_local(data) await serendipity_v2.finish(ms.image(data)) +serendipity_v3 = on_command("jx3_serendipity_v3", aliases={"奇遇v3", "查询v3"}, force_whitespace=True, priority=5) + + +@serendipity_v3.handle() +async def _(event: GroupMessageEvent, args: Message = CommandArg()): + """ + 获取个人奇遇记录: + + Example:-奇遇v3 幽月轮 哭包猫@唯我独尊 + """ + if args.extract_plain_text() == "": + return + arg = args.extract_plain_text().split(" ") + if len(arg) not in [1, 2]: + await serendipity_v3.finish("唔……参数不正确哦,请检查后重试~") + if len(arg) == 1: + server = None + id = arg[0] + elif len(arg) == 2: + server = arg[0] + id = arg[1] + data = await v3_serendipity(server, id, str(event.group_id)) + if isinstance(data, list): + await serendipity_v3.finish(data[0]) + elif isinstance(data, str): + data = get_content_local(data) + await serendipity_v3.finish(ms.image(data)) + pet_serendipity = on_command("jx3_pet_serendipity", aliases={"宠物奇遇"}, force_whitespace=True, priority=5) @@ -86,7 +116,7 @@ async def _(event: GroupMessageEvent, args: Message = CommandArg()): elif len(arg) == 2: server = arg[0] id = arg[1] - data = await getImage_v2(server, id, str(event.group_id), False) + data = await v2_serendipity(server, id, str(event.group_id), False) if isinstance(data, list): await pet_serendipity.finish(data[0]) elif isinstance(data, str): diff --git a/src/plugins/jx3/serendipity/v2.py b/src/plugins/jx3/serendipity/v2.py index 9408117ff..86aa1296e 100644 --- a/src/plugins/jx3/serendipity/v2.py +++ b/src/plugins/jx3/serendipity/v2.py @@ -7,12 +7,13 @@ from src.tools.basic.server import server_mapping from src.tools.utils.path import ASSETS, CACHE, VIEWS from src.tools.generate import get_uuid, generate +from src.tools.utils.request import get_api from src.tools.utils.time import convert_time from src.tools.utils.file import read, write from src.plugins.jx3.bind import get_player_local_data -from .without_jx3api import * +from .without_jx3api import JX3Serendipity import os @@ -44,6 +45,7 @@ async def getImage_v2(server: Optional[str], name: str, group_id: str, type: boo return [PROMPT.PlayerNotExist] if Config.jx3.api.enable: serendipity_data = await get_api(f"{Config.jx3.api.url}/data/luck/adventure?server={server}&name={name}&ticket={ticket}&token={token}") + serendipity_data = serendipity_data["data"] else: serendipity_data = await Serendipity.integration(server, name) data = serendipity_data @@ -51,6 +53,7 @@ async def getImage_v2(server: Optional[str], name: str, group_id: str, type: boo # 注:暂时忽略宠物奇遇,不做统计 tables = [] current_time = int(datetime.now().timestamp()) + type_map = ["common", "peerless", "pet"] for i in data: if type and i["level"] >= 3: # 绝世+普通 continue @@ -58,7 +61,7 @@ async def getImage_v2(server: Optional[str], name: str, group_id: str, type: boo continue serendity_name = i["name"] flag = ASSETS + "/serendipity/vector/peerless.png" if i["level"] == 2 else "" - icon = ASSETS + "/serendipity/serendipity/" + serendity_name + ".png" + icon = ASSETS + "/serendipity/serendipity/" + type_map[i["level"]-1] + "/" + serendity_name + ".png" if not os.path.exists(icon): continue if i["time"] != 0: diff --git a/src/plugins/jx3/serendipity/v3.py b/src/plugins/jx3/serendipity/v3.py new file mode 100644 index 000000000..59cea3312 --- /dev/null +++ b/src/plugins/jx3/serendipity/v3.py @@ -0,0 +1,142 @@ +from datetime import datetime +from pathlib import Path +from typing import Optional, Dict, List +from jinja2 import Template + +from src.tools.config import Config +from src.tools.basic.prompts import PROMPT +from src.tools.basic.server import server_mapping +from src.tools.utils.path import ASSETS, CACHE, VIEWS +from src.tools.generate import get_uuid, generate +from src.tools.utils.time import convert_time, get_relate_time, get_current_time +from src.tools.utils.file import read, write + +from src.plugins.jx3.bind import get_player_local_data, Player + +from .without_jx3api import JX3Serendipity + +import os + +template: str = """ + +
+ {{ name }}.png +
{{ msg }}
+
+""" + +class JX3Serendipities: + def __init__(self, data: list): + self.data = data + + + @property + def common(self): + new = [] + for serendipity in self.data: + if serendipity["level"] == 1: + new.append(serendipity) + return new + + @property + def pet(self): + new = [] + for serendipity in self.data: + if serendipity["level"] == 3: + new.append(serendipity) + return new + + @property + def peerless(self): + new = [] + for serendipity in self.data: + if serendipity["level"] == 2: + new.append(serendipity) + return new + +async def check_role(server: str, name: str) -> bool: + player_data: Player = await get_player_local_data(role_name=name, server_name=server) + if player_data.format_jx3api()["code"] != 200: + return False + return True + +def generate_table(local_data, comparison_data, path_map, template): + table_list = [] + cache_table = [] + + for serendipity in local_data: + status = serendipity["name"] in [item["name"] for item in comparison_data] + corresponding = {} + for item in comparison_data: + if item["name"] == serendipity["name"]: + corresponding = item + + cache_table.append( + Template(template).render( + **{ + "image_path": ASSETS + "/serendipity/serendipity/" + path_map[int(serendipity["level"]) - 1] + "/" + serendipity["name"] + ".png", + "name": serendipity["name"], + "status": "yes" if status else "no", + "msg": "尚未触发" if not status else "遗忘的时间" if corresponding["time"] == 0 else convert_time(corresponding["time"], "%Y-%m-%d %H:%M:%S") + "
" + get_relate_time(get_current_time(), corresponding["time"]) + } + ) + ) + + if len(cache_table) == 5: + table_list.append( + "\n" + "\n".join(cache_table) + "\n" + ) + cache_table = [] + + if len(cache_table) != 0: + table_list.append( + "\n" + "\n".join(cache_table) + "\n" + ) + return table_list + +async def get_serendipity_image_v3(server: Optional[str], name: str, group_id: Optional[str] = ""): + server = server_mapping(server, group_id) + if not server: + return [PROMPT.ServerNotExist] + player_exist = await check_role(server, name) + if not player_exist: + return [PROMPT.PlayerNotExist] + + data: list = await JX3Serendipity().integration(server, name) + data_obj = JX3Serendipities(data) + + common: List[dict] = data_obj.common + peerless: List[dict] = data_obj.peerless + pet: List[dict] = data_obj.pet + + local_common: List[dict] = [{"name": serendipity[:-4], "level": 1} for serendipity in os.listdir(ASSETS + "/serendipity/serendipity/common/")] + local_peerless: List[dict] = [{"name": serendipity[:-4], "level": 2} for serendipity in os.listdir(ASSETS + "/serendipity/serendipity/peerless/")] + local_pet: List[dict] = [{"name": serendipity[:-4], "level": 3} for serendipity in os.listdir(ASSETS + "/serendipity/serendipity/pet/")] + + path_map: List[str] = ["common", "peerless", "pet"] + + common_table = generate_table(local_common, common, path_map, template) + peerless_table = generate_table(local_peerless, peerless, path_map, template) + pet_table = generate_table(local_pet, pet, path_map, template) + + font = ASSETS + "/font/custom.ttf" + html = read(VIEWS + "/jx3/serendipity/v3.html") + html = Template(html).render( + **{ + "font": font, + "name": name, + "server": server, + "total": f"{len(data)}/{len(local_common + local_peerless + local_pet)}", + "peerless": len(peerless), + "pet": len(pet), + "table_content_peerless": "\n".join(peerless_table), + "table_content_common": "\n".join(common_table), + "table_content_pet": "\n".join(pet_table) + } + ) + final_html = CACHE + "/" + get_uuid() + ".html" + write(final_html, html) + final_path = await generate(final_html, False, ".total", False) + if not isinstance(final_path, str): + return + return Path(final_path).as_uri() diff --git a/src/plugins/jx3/serendipity/without_jx3api.py b/src/plugins/jx3/serendipity/without_jx3api.py index 5b19c7624..c3777c225 100644 --- a/src/plugins/jx3/serendipity/without_jx3api.py +++ b/src/plugins/jx3/serendipity/without_jx3api.py @@ -1,12 +1,14 @@ from src.tools.config import Config from src.tools.utils.request import post_url, get_api, get_url from src.tools.basic.jx3 import gen_ts, gen_xsk, format_body +from src.tools.utils.path import ASSETS from src.plugins.jx3.bind import get_player_local_data, Player from src.plugins.majsoul.koromo import sort_list_of_dicts import json import re +import os ticket = Config.jx3.api.ticket device_id = ticket.split("::")[-1] @@ -29,7 +31,9 @@ def __init__(self): def get_serendipity_level(self, serendipity_name: str) -> int: if serendipity_name.find("宠物奇缘") != -1: serendipity_level = 3 - elif serendipity_name in ["昆吾余火", "浮光织梦", "塞外西风", "入蛟宫", "追魂骨", "千秋铸", "万灵当歌", "流年如虹", "侠行囧途", "争铸吴钩", "兔江湖", "济苍生", "塞外宝驹", "阴阳两界", "三尺青锋", "三山四海"]: + elif serendipity_name in [serendipity[:-4] for serendipity in os.listdir(ASSETS + "/serendipity/serendipity/pet")]: + serendipity_level = 3 + elif serendipity_name in [serendipity[:-4] for serendipity in os.listdir(ASSETS + "/serendipity/serendipity/peerless")]: serendipity_level = 2 else: serendipity_level = 1 @@ -115,7 +119,6 @@ async def get_jx3pet_data(self, server: str, name: str): } ) self.jx3pet = serendipities - print(self.jx3pet) async def integration(self, server: str, name: str): await self.get_tuilan_data(server, name) diff --git a/src/tools/utils/time.py b/src/tools/utils/time.py index 527efed18..1b35f0443 100644 --- a/src/tools/utils/time.py +++ b/src/tools/utils/time.py @@ -5,12 +5,7 @@ import time import datetime -def convert_time(timestamp: int, format: str = "%Y年%m月%d日 %H:%M:%S") -> Union[str, bool]: - if check_number(timestamp): - try: - timestamp = int(timestamp) - except: - return False +def convert_time(timestamp: int, format: str = "%Y年%m月%d日 %H:%M:%S") -> str: """ 时间转换,自适应时间长度。 """ @@ -25,10 +20,10 @@ class TimeLengthError(OSError): dt = time.strftime(format, time_local) return dt -def get_current_time(): +def get_current_time() -> int: return int(datetime.datetime.now().timestamp()) -def get_relate_time(current, goal): +def get_relate_time(current: int, goal: int) -> str: current_time = int(current) timeGet_int = int(goal) datetime_1 = datetime.datetime.fromtimestamp(current_time) diff --git a/src/views/jx3/serendipity/v3.html b/src/views/jx3/serendipity/v3.html new file mode 100644 index 000000000..e4ecff1f4 --- /dev/null +++ b/src/views/jx3/serendipity/v3.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + {{ table_content_peerless }} + + + + {{ table_content_common }} + + + + {{ table_content_pet }} + +
{{ name }}·{{ server }}
共计:{{ total }} 番奇遇(绝世 {{ peerless }}/宠物 {{ pet }})
绝世奇遇
珍奇奇遇
宠物奇遇
+ + + + \ No newline at end of file