电报API文件上传

时间:2017-07-17 15:07:57

标签: python telegram

Telegram documentation说明以下关于文件ID:

  

然后将文件的二进制内容拆分为多个部分。所有部分必须   具有相同的大小(part_size)并且必须满足以下条件   满足:

     

part_size%1024 = 0(可被1KB整除)

     

524288%part_size = 0(512KB必须可被part_size整除)

     

最后一部分并不一定要满足这些条件   size小于part_size。每个部分都应该有一个序列号,   file_part,取值范围为0到2,999。

我的代码:

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 个答案:

答案 0 :(得分:1)

你弄错了。

您只需将文件分成相同大小的片段。

  

“白色条纹 - 真相不会产生噪音.mp3”,大小:7782220   字节

假设您使用的是最大尺寸为512k(即524288),那么您只需:

7782220/524288 = 14 rem 442188

因此,您有14个512k字节,最后一个442188个字节。

将相同的逻辑应用于其他文件。