mirror of
https://github.com/zhaarey/AppleMusicDecrypt.git
synced 2025-10-23 15:11:06 +00:00
fix: speed up decryption
This commit is contained in:
@@ -24,12 +24,12 @@ async def decrypt(info: SongInfo, keys: list[str], manifest: Datum, device: Devi
|
|||||||
else:
|
else:
|
||||||
logger.info(f"Using device {device.serial} to decrypt song: {manifest.attributes.artistName} - {manifest.attributes.name}")
|
logger.info(f"Using device {device.serial} to decrypt song: {manifest.attributes.artistName} - {manifest.attributes.name}")
|
||||||
try:
|
try:
|
||||||
reader, writer = await asyncio.open_connection(device.host, device.fridaPort)
|
reader, writer = await asyncio.open_connection(device.host, device.fridaPort, limit=2**14)
|
||||||
except ConnectionRefusedError:
|
except ConnectionRefusedError:
|
||||||
logger.warning(f"Failed to connect to device {device.serial}, re-injecting")
|
logger.warning(f"Failed to connect to device {device.serial}, re-injecting")
|
||||||
device.restart_inject_frida()
|
device.restart_inject_frida()
|
||||||
raise RetryableDecryptException
|
raise RetryableDecryptException
|
||||||
decrypted = bytes()
|
decrypted = []
|
||||||
last_index = 255
|
last_index = 255
|
||||||
for sample in info.samples:
|
for sample in info.samples:
|
||||||
if last_index != sample.descIndex:
|
if last_index != sample.descIndex:
|
||||||
@@ -59,10 +59,11 @@ async def decrypt(info: SongInfo, keys: list[str], manifest: Datum, device: Devi
|
|||||||
else:
|
else:
|
||||||
logger.error(f"Failed to decrypt song: {manifest.attributes.artistName} - {manifest.attributes.name}")
|
logger.error(f"Failed to decrypt song: {manifest.attributes.artistName} - {manifest.attributes.name}")
|
||||||
raise DecryptException
|
raise DecryptException
|
||||||
decrypted += result
|
now += 1
|
||||||
|
decrypted.append(result)
|
||||||
writer.write(bytes([0, 0, 0, 0]))
|
writer.write(bytes([0, 0, 0, 0]))
|
||||||
writer.close()
|
writer.close()
|
||||||
return decrypted
|
return bytes().join(decrypted)
|
||||||
|
|
||||||
|
|
||||||
async def decrypt_sample(writer: asyncio.StreamWriter, reader: asyncio.StreamReader, sample: SampleInfo) -> bytes:
|
async def decrypt_sample(writer: asyncio.StreamWriter, reader: asyncio.StreamReader, sample: SampleInfo) -> bytes:
|
||||||
|
|||||||
Reference in New Issue
Block a user