1111import com .wmods .wppenhacer .xposed .core .Feature ;
1212import com .wmods .wppenhacer .xposed .core .components .FMessageWpp ;
1313import com .wmods .wppenhacer .xposed .core .devkit .Unobfuscator ;
14+ import com .wmods .wppenhacer .xposed .utils .DebugUtils ;
1415import com .wmods .wppenhacer .xposed .utils .ReflectionUtils ;
1516
1617import java .io .File ;
1920import de .robv .android .xposed .XC_MethodHook ;
2021import de .robv .android .xposed .XSharedPreferences ;
2122import de .robv .android .xposed .XposedBridge ;
23+ import de .robv .android .xposed .XposedHelpers ;
2224
2325public class AudioTranscript extends Feature {
2426
@@ -30,26 +32,38 @@ public AudioTranscript(@NonNull ClassLoader classLoader, @NonNull XSharedPrefere
3032 @ Override
3133 public void doHook () throws Throwable {
3234
35+ XposedHelpers .findAndHookMethod ("X.Agd" , classLoader , "C8L" , classLoader .loadClass ("X.9zA" ), classLoader .loadClass ("X.22R" ), classLoader .loadClass ("java.lang.String" ), classLoader .loadClass ("java.util.List" ),
36+ DebugUtils .getDebugMethodHook (false , false , true , false ));
37+
3338 if (!prefs .getBoolean ("assemblyai" , false ) || TextUtils .isEmpty (prefs .getString ("assemblyai_key" , "" )))
3439 return ;
3540
3641
3742 var transcribeMethod = Unobfuscator .loadTranscribeMethod (classLoader );
38- var unkTranscript = Unobfuscator .loadUnkTranscript (classLoader );
43+ var unkTranscriptClass = Unobfuscator .loadUnkTranscript (classLoader );
44+ Class <?> TranscriptionSegmentClass = Unobfuscator .loadTranscriptSegment (classLoader );
3945
4046 XposedBridge .hookMethod (transcribeMethod , new XC_MethodHook () {
4147 @ Override
4248 protected void beforeHookedMethod (MethodHookParam param ) throws Throwable {
49+ DebugUtils .debugArgs (param .args );
4350 var pttTranscriptionRequest = param .args [0 ];
4451 var fieldFMessage = ReflectionUtils .getFieldByExtendType (pttTranscriptionRequest .getClass (), FMessageWpp .TYPE );
4552 var fmessageObj = fieldFMessage .get (pttTranscriptionRequest );
4653 var fmessage = new FMessageWpp (fmessageObj );
4754 File file = fmessage .getMediaFile ();
4855 var callback = param .args [1 ];
56+ var mEnglishInstance = ReflectionUtils .getFieldByExtendType (unkTranscriptClass , unkTranscriptClass ).get (null );
4957 var onComplete = ReflectionUtils .findMethodUsingFilter (callback .getClass (), method -> method .getParameterCount () == 4 );
5058 String transcript = runTranscript (file );
51- var unkTranscriptInstance = unkTranscript .getField ("A00" ).get (null );
52- ReflectionUtils .callMethod (onComplete , callback , unkTranscriptInstance , fmessageObj , transcript , new ArrayList <>());
59+ var segments = new ArrayList <>();
60+ var words = transcript .split (" " );
61+ var totalLength = 0 ;
62+ for (var word : words ) {
63+ segments .add (XposedHelpers .newInstance (TranscriptionSegmentClass , totalLength , word .length (), 100 , -1 , -1 ));
64+ totalLength += word .length () + 1 ;
65+ }
66+ ReflectionUtils .callMethod (onComplete , callback , mEnglishInstance , fmessageObj , transcript , segments );
5367 param .setResult (null );
5468 }
5569 });
0 commit comments