From 09b1a45768c6f9604143652f050a18c7496a3e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 17 Feb 2025 09:24:01 +0800 Subject: [PATCH] 'commit' --- ...enerateMarkdown.py => A1_GenerateMarkdown.py} | 11 ++++------- AI/{D1_Start.py => A1_Start.py} | 0 ...D2_MarkdownToPptx.py => A2_MarkdownToPptx.py} | 0 ...D3_MarkdownToDocx.py => A3_MarkdownToDocx.py} | 0 AI/{T1_Mp4ToWav.py => B1_Mp4ToWav.py} | 0 AI/{T1_Start.py => B1_Start.py} | 6 +++--- AI/{T2_WavToText.py => B2_WavToText.py} | 0 AI/{T3_TextSummarize.py => B3_TextSummarize.py} | 0 ...Handwriting.py => C1_RecognizeHandwriting.py} | 0 AI/{R2_CheckZuoWen.py => C2_CheckZuoWen.py} | 1 - AI/{D_Config.py => Config.py} | 0 .../D1_GenerateMarkdown.cpython-310.pyc | Bin 4307 -> 0 bytes AI/__pycache__/D2_MarkdownToPptx.cpython-310.pyc | Bin 695 -> 0 bytes AI/__pycache__/D3_MarkdownToDocx.cpython-310.pyc | Bin 1722 -> 0 bytes AI/__pycache__/D_Config.cpython-310.pyc | Bin 310 -> 0 bytes AI/__pycache__/T1_Mp4ToWav.cpython-310.pyc | Bin 1318 -> 0 bytes AI/__pycache__/T2_WavToText.cpython-310.pyc | Bin 5540 -> 0 bytes AI/__pycache__/T3_TextSummarize.cpython-310.pyc | Bin 5856 -> 0 bytes 18 files changed, 7 insertions(+), 11 deletions(-) rename AI/{D1_GenerateMarkdown.py => A1_GenerateMarkdown.py} (93%) rename AI/{D1_Start.py => A1_Start.py} (100%) rename AI/{D2_MarkdownToPptx.py => A2_MarkdownToPptx.py} (100%) rename AI/{D3_MarkdownToDocx.py => A3_MarkdownToDocx.py} (100%) rename AI/{T1_Mp4ToWav.py => B1_Mp4ToWav.py} (100%) rename AI/{T1_Start.py => B1_Start.py} (88%) rename AI/{T2_WavToText.py => B2_WavToText.py} (100%) rename AI/{T3_TextSummarize.py => B3_TextSummarize.py} (100%) rename AI/{R1_RecognizeHandwriting.py => C1_RecognizeHandwriting.py} (100%) rename AI/{R2_CheckZuoWen.py => C2_CheckZuoWen.py} (97%) rename AI/{D_Config.py => Config.py} (100%) delete mode 100644 AI/__pycache__/D1_GenerateMarkdown.cpython-310.pyc delete mode 100644 AI/__pycache__/D2_MarkdownToPptx.cpython-310.pyc delete mode 100644 AI/__pycache__/D3_MarkdownToDocx.cpython-310.pyc delete mode 100644 AI/__pycache__/D_Config.cpython-310.pyc delete mode 100644 AI/__pycache__/T1_Mp4ToWav.cpython-310.pyc delete mode 100644 AI/__pycache__/T2_WavToText.cpython-310.pyc delete mode 100644 AI/__pycache__/T3_TextSummarize.cpython-310.pyc diff --git a/AI/D1_GenerateMarkdown.py b/AI/A1_GenerateMarkdown.py similarity index 93% rename from AI/D1_GenerateMarkdown.py rename to AI/A1_GenerateMarkdown.py index 9ef354c8..bf271837 100644 --- a/AI/D1_GenerateMarkdown.py +++ b/AI/A1_GenerateMarkdown.py @@ -1,15 +1,12 @@ # -*- coding: utf-8 -*- -import os import time -import uuid -from typing import Iterator, Optional +from typing import Iterator -import dashscope from dashscope import Generation from dashscope.api_entities.dashscope_response import DashScopeAPIResponse -from D_Config import * -from D2_MarkdownToPptx import * -from D3_MarkdownToDocx import * + +from A3_MarkdownToDocx import * +from Config import * class MarkdownGenerator: diff --git a/AI/D1_Start.py b/AI/A1_Start.py similarity index 100% rename from AI/D1_Start.py rename to AI/A1_Start.py diff --git a/AI/D2_MarkdownToPptx.py b/AI/A2_MarkdownToPptx.py similarity index 100% rename from AI/D2_MarkdownToPptx.py rename to AI/A2_MarkdownToPptx.py diff --git a/AI/D3_MarkdownToDocx.py b/AI/A3_MarkdownToDocx.py similarity index 100% rename from AI/D3_MarkdownToDocx.py rename to AI/A3_MarkdownToDocx.py diff --git a/AI/T1_Mp4ToWav.py b/AI/B1_Mp4ToWav.py similarity index 100% rename from AI/T1_Mp4ToWav.py rename to AI/B1_Mp4ToWav.py diff --git a/AI/T1_Start.py b/AI/B1_Start.py similarity index 88% rename from AI/T1_Start.py rename to AI/B1_Start.py index b514f982..6a35f918 100644 --- a/AI/T1_Start.py +++ b/AI/B1_Start.py @@ -1,6 +1,6 @@ -from T1_Mp4ToWav import * -from T2_WavToText import * -from T3_TextSummarize import * +from B1_Mp4ToWav import * +from B2_WavToText import * +from B3_TextSummarize import * if __name__ == '__main__': # 1、根据云校的视频课程下载视频文件 diff --git a/AI/T2_WavToText.py b/AI/B2_WavToText.py similarity index 100% rename from AI/T2_WavToText.py rename to AI/B2_WavToText.py diff --git a/AI/T3_TextSummarize.py b/AI/B3_TextSummarize.py similarity index 100% rename from AI/T3_TextSummarize.py rename to AI/B3_TextSummarize.py diff --git a/AI/R1_RecognizeHandwriting.py b/AI/C1_RecognizeHandwriting.py similarity index 100% rename from AI/R1_RecognizeHandwriting.py rename to AI/C1_RecognizeHandwriting.py diff --git a/AI/R2_CheckZuoWen.py b/AI/C2_CheckZuoWen.py similarity index 97% rename from AI/R2_CheckZuoWen.py rename to AI/C2_CheckZuoWen.py index a4e244b8..30c744c2 100644 --- a/AI/R2_CheckZuoWen.py +++ b/AI/C2_CheckZuoWen.py @@ -1,5 +1,4 @@ import os -import json import re from typing import Iterator from openai import OpenAI diff --git a/AI/D_Config.py b/AI/Config.py similarity index 100% rename from AI/D_Config.py rename to AI/Config.py diff --git a/AI/__pycache__/D1_GenerateMarkdown.cpython-310.pyc b/AI/__pycache__/D1_GenerateMarkdown.cpython-310.pyc deleted file mode 100644 index 18be17d249b3e6e6cfc851420e74c00c73471347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4307 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 Fe*r2Gs3`yd diff --git a/AI/__pycache__/D3_MarkdownToDocx.cpython-310.pyc b/AI/__pycache__/D3_MarkdownToDocx.cpython-310.pyc deleted file mode 100644 index 69bdd16b746cb14677240e4533a272a8a4e58791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1722 zcmZWp-A@!(6u{z${yiCkj;>wAh}IU6?%`?BJ}Qab}fRL9nV*DGC;B_Z$kkP^?r6{bg36ZqSmT z6db@0bk2mwt&%3)ZnP9=$--Xv-M>Ky-#b>au3dPq( zF(pEQop=Us>=V33*lWB~Ruka6HMWbpwl08lKhT4UG!tiyfgEr+) zb!wc~Fgk{4<|tB;AcKc7k{`ri`s!v3u%e$x4LTSN8-VkgZ=6W;KAMtR?y)dU51XQe zw)kdZ;~QrP%?uk~8>jFolxy|U1WuiWwtD~J+J(8UnCfuxn?pr@lG>-NXli_Q`A*~h zZ_)W5SMMzyvpI#SXnH0cTjiZ1FIKagnaO7x555o2&aPb^dj;TbJ$x|MY|@m%#AS_M5=Md%UY%R} zV|i`)de@%r&sXowN7rYg+5?H2M8}I|m$}&k%Xk z59codXms&T^zD^!eCZ_^*Xwh*U1F}gdoMfzM!S;HCS;t=@aC8{X_s~-8nVTO2=90WT3l(Lc(LsI1g08P7CiN za28$t6^IBY7L$WLS~=IK-(8zt0N%s9zlRI8#>`nbc64q$T(}&~&&Z`X!}+Y&CWCD{ z3ruAa$hGUU>lc1#)a%|(m`D=z^3Kj&hQrlIfzD2sUEv1Xw{RaQuHbTAFpCCy(Q%|s z|4(k9aLbHuYmxyoYhb15!M4%elCLW{U5g)BWi>Esc`^+_o~ zmBTDZ0a-RLRNaAJ5Pu7HJ$`>*zL&c2OiuP5E?Wa%*w#Sro`b#nJ}7KHxNdtNl*Qf7 zV6dZPTVF9QOJ+gXakZ3=-8=|$r-|DzQFWZb>QmL&g;gbu)0hyI5KOQNAHkU?8G~RG ztIxM7yYMz_j*w^k9Wc)+o!wlO9g|Cn14G7LDfexVDh3^hjw`Ulx65_4&$cVEX?%_* w@wQwxKd#!;tFTWojNErYm?#6G5j_s(3CQP!kY~C=okONjNSb*Is3r!Ygb95iytu2T`LY2qCaUXA`5@B;=#GYyCBr{+%ss zto#dB?h1kf^ByzId&5lYICGHkar9n35`a%t{0~hQXEKLF2?$7P;3Opk7-8BgdDc-| z0qQGA4Q8Mrc_w)#*+laWTlyl2fQ9FF&G|57!jvK4!NaN#9kOyl4(3cWZG%fHTb z5=Ti){mtzg^y=1M_}=%AGaQshb|YQFwkb1jllk<#ZHlT~cUxhf@D`_?RicN2e!RA94_Bc!wQCvegAxRC_NseF?m*SYlsccA8fuS1Gyh>wK zTT^l}#nUL8cn(Z7nZ;b5Dmn`CsoKTIR0&N772Yt zs>qZ;m$u;&jkJTP3=G+mL%p(%G4ka9u`pE~#gndKaY49rf+lH-_JIzfm6EGU^R%N@ zVxAIu?%$R$ax{9%lOXbd2k~!142)(GeQO%Y2(a;$MT}NejGAdc4ti=Ov7e;r0}NR3 zDX?DvdR6^W6`W|bgn^q{xsH+Oz#H;j;{|#eEurjb_ixBdA_L98cRkoz_gi~crpAMt z>(Bmr*m?4Mu>Iq+KOfIt`aIZg`|X_wxbs!8d+(&Z7w%qHBr}}p9DVD5efM~8?Tw2^ zhyKx82<)jBKqn?dZT+3YVDp#G!B#im8+1=W0S&n4S2ujiu4e9dS|pyPNcZih3L%gDexAh zF4(x?fAa%mswroNFJ^iy{+;`s2Y123rP5q=(j5g(l#<~4--68}e*+S{)j520e9-E& z?sV_=-JyTu=irZ@Knc`rA0t5HYS}K(GUKxC7odTzFe%;3_2B=K4#2hT(uo)Fp!W2NCh99DA$Zh)0r^c1`Q$E7?U9`Q^W+X z0m>z!k3jr=xkR^eVQ{@pIW~Sp>@2`up8M!Rp4zh}tL8r|H%gzHjZ*&7C;6GN!WC0C^kq z=dgA)g@-Wtm%R(@EMekVn9M3H4N`my&O)s`7iN$Rf+~cC=j@r@5m@bmx=G!daS@&m ZWS@aaLn%xYg5_5P0uVy}AyWUV{{U60t_c7D diff --git a/AI/__pycache__/T2_WavToText.cpython-310.pyc b/AI/__pycache__/T2_WavToText.cpython-310.pyc deleted file mode 100644 index c0d705333326a5693465451a128f79654650e15f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5540 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 xdGQ@ANP