| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- from helper import console
- import re
- class EmptyAttr:
- def __str__(self):
- return ''
- def __format__(self, format_spec):
- return ''.__format__(format_spec)
- def __getattr__(self, item):
- return None
- def __getitem__(self, item):
- return None
- def __eq__(self, other):
- if other is None or other is Empty:
- return True
- return False
- Empty = EmptyAttr()
- class Item:
- def __init__(self, site):
- self.site = site
- self.title = Empty
- self.artist = Empty
- self.original_url = Empty
- self.download_url = None
- self.url_formatted = False
- self.tag_item = None
- self.size = Empty
- self.duration = Empty
- self.bitrate = Empty
- self.bytes = None
- self.duration_seconds = None
- # self.calculate_duration_seconds()
- # self.calculate_bytes()
- # self.calculate_bitrate()
- def format_original_url(self):
- if not self.url_formatted:
- self.download_url = self.original_url = self.site.format_url(self.original_url)
- console.output('Setting original URL to: {0}'.format(self.original_url), console.DBG_INFO)
- self.url_formatted = True
- def set_title(self, title):
- self.title = title
- def set_artist(self, artist):
- self.artist = artist
- def set_original_url(self, url):
- self.original_url = url
- def set_duration_string(self, duration):
- self.duration = duration
- self.calculate_duration_seconds()
- def set_size_string(self, size):
- self.size = size
- self.calculate_bytes()
- self.calculate_bitrate()
- def set_download_url(self, url):
- console.output('Setting download url to: {0}'.format(url), console.DBG_INFO)
- self.download_url = url
- def set_bytes(self, bytes):
- self.bytes = bytes
- def link_tag_item(self, tagitem):
- self.tag_item = tagitem
- def calculate_duration_seconds(self):
- if self.duration is not Empty:
- _split = self.duration.split(':')
- minutes = int(_split[0])
- seconds = int(_split[1])
- self.duration_seconds = (minutes * 60) + seconds
- def calculate_bytes(self):
- if self.size is not Empty:
- match = re.search('\d+\.?\d+', self.size)
- if match is not None:
- mbytes = float(match.group())
- self.bytes = mbytes * 1048576 # 1024^2 -> MB to B
- def calculate_bitrate(self):
- if self.duration_seconds is not None and self.bytes is not None:
- self.bitrate = self.bytes / self.duration_seconds / 1024 * 8 # bytes / seconds / 1024 * 8
|