Skip to content

Commit 4b2b1f0

Browse files
committed
music stuff
1 parent c32dd45 commit 4b2b1f0

2 files changed

Lines changed: 42 additions & 28 deletions

File tree

pythonbits/bb.py

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from textwrap import dedent
99
from collections import namedtuple, abc
1010
from concurrent.futures.thread import ThreadPoolExecutor
11+
from datetime import timedelta
1112

1213
import pymediainfo
1314
import 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']

pythonbits/musicbrainz.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ def find_release_group(release_title, artist=None):
2424
results = musicbrainzngs.search_release_groups(
2525
release_title, artist=artist, limit=10)['release-group-list']
2626
table_data = [('Index', 'Artist', 'Title', 'Type')]
27-
#max_width = table.column_max_width(2)
27+
# max_width = table.column_max_width(2)
2828
for i, r in enumerate(results):
29-
#title = '\n'.join(wrap(r['title'], max_width))
29+
# title = '\n'.join(wrap(r['title'], max_width))
3030
table_data.append((i, r['artist-credit-phrase'],
3131
r['title'], r.get('type', '?')))
3232

3333
print(terminaltables.SingleTable(table_data).table)
3434
while True:
35-
choice = raw_input(
35+
choice = input(
3636
"Select the release group (or enter a different query): ")
3737
try:
3838
choice = int(choice)
@@ -56,8 +56,8 @@ def find_release(release_title, artist=None):
5656
'rgid:'+release_group['id'])['release-list']
5757

5858
table_data = [
59-
('Index', 'Title', '# Tracks', 'Date', 'CC', 'Label', 'Status', 'Format'),
60-
]
59+
('Index', 'Title', '# Tracks', 'Date', 'CC', 'Label', 'Status',
60+
'Format'), ]
6161

6262
for i, r in enumerate(results):
6363
try:
@@ -71,13 +71,14 @@ def find_release(release_title, artist=None):
7171

7272
print(terminaltables.SingleTable(table_data).table)
7373
while True:
74-
choice = raw_input(
74+
choice = input(
7575
"Select the exact release, if known: ")
7676
try:
7777
choice = results[int(choice)]
7878
except (IndexError, ValueError):
7979
if choice == '':
8080
return release_group, None
8181
else:
82-
return release_group, choice
83-
82+
release = musicbrainzngs.get_release_by_id(
83+
choice['id'], includes=['media', 'recordings'])['release']
84+
return release_group, release

0 commit comments

Comments
 (0)