2017-07-17 6 views
1

Telegram documentationをアップロードすると、ファイルのIDについては、次の言葉:電報APIファイル

ファイルのバイナリコンテンツは、その後の部分に分割されます。全ての部品は、同じサイズ(PART_SIZE)および以下の条件を は 満たされなければならないしている必要があります:1024 = 0(1キロバイトで割り切れる)

524288パーセントのPART_SIZE = 0(512キロバイトで割り切れるでなければならない

PART_SIZE%とpart_size)

のサイズがpart_sizeより小さい場合、最後の部分はこれらの条件を満たす必要はありません。各部分には、0から2,999の範囲の値を持つ file_partのシーケンス番号が必要です。

マイコード:

def check_conditions(file_name): 
    b = False 
    file_binary_data = open("D:\\" + file_name, "br").read() 
    length = len(bytearray(file_binary_data)) 
    print(file_name + ", size: " + str(length) + " bytes") 
    for i in range(1, 3000): 
     part = length // i 
     if part % 1024 == 0 and 524288 % part == 0: 
      print("i: " + str(i) + " | part size: " + str(part)) 
      b = True 
    if not b: 
     print("No mathces") 
    print() 

check_conditions("The White Stripes - Truth Doesn't Make A Noise.mp3") 
check_conditions("Depeche Mode - Precious.mp3") 
check_conditions("Placebo - Meds.mp3") 

出力:

The White Stripes - Truth Doesn't Make A Noise.mp3, size: 7782220 bytes 
No mathces 

Depeche Mode - Precious.mp3, size: 10298248 bytes 
i: 1257 | part size: 8192 
i: 2514 | part size: 4096 

Placebo - Meds.mp3, size: 11808625 bytes 
No mathces 

間違いがありますか?または、すべてが大丈夫なら、満たしていないファイルをどうすればいいですか?

答えて

1

あなたは間違っています。

ファイルを同じサイズに分割するだけです。

"ホワイト・ストライプス - 真実はNoise.mp3をしない"、サイズ:7782220 バイト

(すなわち524288。)あなたは512KのMAXピースのサイズを使用していると言う、その後、あなたは、単に持っている:

524288分の7782220 = 14 REM

442188は、そこであなたは14点の512Kバイトの作品と442188バイトの最後のピースを持っています。

他のファイルに同じロジックを適用します。

関連する問題