telegram: Improve metadata for documents: files and videos
patch 3c6a7e6e9f4c7cae2781b33d0a23e1ea92c0e060
Author: E. Bosch <presidev@AT@gmail.com>
Date: Wed Feb 9 23:52:06 CET 2022
* telegram: Improve metadata for documents: files and videos
hunk ./telegram.py 13
-from utils import sanitize_filename, remove_slash, remove_http_s
+from utils import sanitize_filename, remove_slash, remove_http_s, get_human_size, get_human_duration
hunk ./telegram.py 344
- elif message.video: media_type = 'video'
+ elif message.video:
+ size = get_human_size(message.media.document.size)
+ attrib = next(x for x in message.media.document.attributes if isinstance(x, tgty.DocumentAttributeVideo))
+ dur = get_human_duration(attrib.duration)
+ media_type = 'video:{},{}'.format(size, dur)
hunk ./telegram.py 352
- elif message.document: media_type = 'file'
-
+ elif message.document:
+ size = get_human_size(message.media.document.size)
+ media_type = 'file:{}'.format(size)
hunk ./utils.py 64
+
+def get_human_size(size):
+ human_units = ('', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
+
+ def get_human_size_values(size, unit_pos=0):
+ aux = size / 1024.0
+ if aux > 1: return get_human_size_values(aux, unit_pos + 1)
+ else: return size, human_units[unit_pos]
+
+ if size <= 1237940039285380274899124224: # 1024Y
+ num, unit = get_human_size_values(size)
+ else:
+ num = size / 1208925819614629174706176 # 1Y
+ unit = 'Y'
+
+ fs = '{:.1f}{}' if num < 10 else '{:.0f}{}'
+
+ return fs.format(num, unit)
+
+def get_human_duration(duration):
+ res = ''
+ x, s = divmod(duration, 60)
+ h, m = divmod(x, 60)
+
+ if h > 0: res = str(h) + 'h'
+ if m > 0: res += str(m) + 'm'
+ if s > 0: res += str(s) + 's'
+ return res