track_quality.py 1017 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from enum import Enum
  2. class DeezerTrackQuality(Enum):
  3. #AAC_64 = 1
  4. #MP3_64 = 2
  5. MP3_128 = 1
  6. #MP3_256 = 4
  7. MP3_320 = 3
  8. FLAC = 9
  9. @staticmethod
  10. def from_raw_data(raw_data):
  11. bindings = {
  12. #"FILESIZE_AAC_64": "AAC_64",
  13. #"FILESIZE_MP3_64": "MP3_64",
  14. "FILESIZE_MP3_128": "MP3_128",
  15. #"FILESIZE_MP3_256": "MP3_256",
  16. "FILESIZE_MP3_320": "MP3_320",
  17. "FILESIZE_FLAC": "FLAC"
  18. }
  19. track_qualities = list(map(
  20. lambda k: bindings[k],
  21. filter(
  22. lambda k: k in bindings and raw_data[k] != 0 and raw_data[k] != "0",
  23. raw_data.keys(),
  24. )
  25. ))
  26. return track_qualities
  27. @staticmethod
  28. def get_file_format(quality):
  29. if isinstance(quality, DeezerTrackQuality):
  30. quality = quality.name
  31. formats = {
  32. ".aac": ['AAC_64'],
  33. ".mp3": ['MP3_64', 'MP3_128', 'MP3_256', 'MP3_320'],
  34. ".flac": ['FLAC']
  35. }
  36. for format in formats.keys():
  37. qualities = formats[format]
  38. if quality in qualities:
  39. return format