88from textwrap import dedent
99from collections import namedtuple , abc
1010from concurrent .futures .thread import ThreadPoolExecutor
11+ from datetime import timedelta
1112
1213import pymediainfo
1314import mutagen
@@ -857,21 +858,23 @@ class MusicSubmission(AudioSubmission):
857858 default_fields = (AudioSubmission .default_fields + (
858859 'remaster' , 'remaster_year' , 'remaster_title' ))
859860 _form_type = 'Music'
860- ## submit
861- ## type
862- ## artist
863- ## title
864- # remaster_true (checkbox, special edition info) (!?!?!)
865- # -> remaster_year
866- # -> remaster_title (optional)
867- ## year
868- ## scene (checkbox)
869- ## format (select, options: MP3, FLAC, Ogg, AAC, DTS 5.1 Audio, 24bit FLAC)
870- ## bitrate (select, options: 192, V2 (VBR), 256, V0 (VBR), 320, Lossless, Other)
871- ## media (select, options: CD, DVD, Vinyl, Soundboard, DAT, Web)
872- ## image
873- # album_desc (!!!)
874- ## release_desc (optional)
861+ # # submit
862+ # # type
863+ # # artist
864+ # # title
865+ # remaster_true (checkbox, special edition info) (!?!?!)
866+ # -> remaster_year
867+ # -> remaster_title (optional)
868+ # # year
869+ # # scene (checkbox)
870+ # # format (select, options: MP3, FLAC, Ogg, AAC, DTS 5.1 Audio,
871+ # 24bit FLAC)
872+ # # bitrate (select, options: 192, V2 (VBR), 256, V0 (VBR), 320, Lossless,
873+ # Other)
874+ # # media (select, options: CD, DVD, Vinyl, Soundboard, DAT, Web)
875+ # # image
876+ # album_desc (!!!)
877+ # # release_desc (optional)
875878
876879 @form_field ('remaster_true' , 'checkbox' )
877880 def _render_remaster (self ):
@@ -890,7 +893,7 @@ def _render_remaster_title(self):
890893 @form_field ('format' )
891894 def _render_format (self ):
892895 # MP3, FLAC, Ogg, AAC, DTS 5.1 Audio, 24bit FLAC
893- choices = ('MP3' , 'FLAC' , 'Ogg' , 'AAC' , '24bit FLAC' )
896+ # choices = ('MP3', 'FLAC', 'Ogg', 'AAC', '24bit FLAC')
894897
895898 tl_format = {
896899 'MP3' : 'MP3' ,
@@ -942,6 +945,7 @@ def _render_media(self):
942945 def _render_mediainfo_path (self ):
943946 assert os .path .isdir (self ['path' ])
944947
948+ # get first file over 1 MiB
945949 for dp , dns , fns in os .walk (self ['path' ]):
946950 for fn in fns :
947951 full_path = os .path .join (dp , fn )
@@ -950,6 +954,8 @@ def _render_mediainfo_path(self):
950954 raise Exception ('No media file found' )
951955
952956 def _render_songlist (self ):
957+ # from musicbrainz release
958+
953959 return None
954960
955961 def _render_tags (self ):
@@ -960,7 +966,7 @@ def _render_tags(self):
960966 print (dir (tags .info ))
961967 try :
962968 print (tags .info .encoder_settings )
963- except :
969+ except AttributeError :
964970 pass
965971 log .debug (type (tags ))
966972 log .debug (tags .pprint ())
@@ -986,7 +992,7 @@ def _render_summary(self):
986992 log .info ('Found MusicBrainz release in tags' )
987993 release = mb .musicbrainzngs .get_release_by_id (
988994 tags ['rid' ],
989- includes = ['release-groups' , 'media' ])['release' ]
995+ includes = ['release-groups' , 'media' , 'recordings' ])['release' ]
990996 rg = mb .musicbrainzngs .get_release_group_by_id (
991997 release ['release-group' ]['id' ],
992998 includes = ['tags' , 'artist-credits' ])['release-group' ]
@@ -997,12 +1003,19 @@ def _render_summary(self):
9971003 query = self ['title_arg' ]
9981004 else :
9991005 query_artist = tags ['artist' ]
1000- query = tags ['title' ]
1006+ query = tags ['title' ]
10011007 rg , release = mb .find_release (query , artist = query_artist )
10021008
10031009 print ('rg' , rg )
10041010 print ('r' , release )
10051011
1012+ for medium in release ['medium-list' ]:
1013+ for track in medium ['track-list' ]:
1014+ print (track ['number' ],
1015+ track ['recording' ]['title' ],
1016+ timedelta (milliseconds = int (
1017+ track ['recording' ]['length' ])))
1018+
10061019 print (rg .keys ())
10071020 return {
10081021 'artist' : rg ['artist-credit-phrase' ],
@@ -1041,4 +1054,4 @@ def _render_artist(self):
10411054
10421055 @form_field ('title' )
10431056 def _render_title (self ):
1044- return self ['summary' ]['title' ]
1057+ return self ['summary' ]['title' ]
0 commit comments