Skip to content

Commit 6f008fe

Browse files
committed
music changes
add templating for table add basic release and album description
1 parent a1687cb commit 6f008fe

2 files changed

Lines changed: 74 additions & 24 deletions

File tree

pythonbits/bb.py

Lines changed: 71 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,10 @@ def copy(source, target):
135135
'Choices are {}'.format(pref_method,
136136
list(method_map.keys())))
137137
try:
138-
category = self._category
138+
# todo fix this, proper category mapping,
139+
# e.g. 'music' <-> bb.MusicSubmission
140+
category = ('music' if isinstance(self, AudioSubmission)
141+
else 'movie')
139142
except AttributeError:
140143
log.warning("{} does not have a category attribute",
141144
type(self).__name__)
@@ -1003,7 +1006,7 @@ def _render_tags(self):
10031006
'rid': tags.get('musicbrainz_albumid', [None])[0],
10041007
'format': type(tags).__name__,
10051008
'bitrate': tags.info.bitrate,
1006-
'bitrate_mode': tags.info.bitrate_mode,
1009+
'bitrate_mode': getattr(tags.info, 'bitrate_mode', None),
10071010
'bits_per_sample': getattr(tags.info, 'bits_per_sample',
10081011
None),
10091012
'encoder_settings': getattr(tags.info, 'encoder_settings',
@@ -1017,7 +1020,8 @@ def _render_release(self):
10171020
log.info('Found MusicBrainz release in tags')
10181021
release = mb.musicbrainzngs.get_release_by_id(
10191022
tags['rid'],
1020-
includes=['release-groups', 'media', 'recordings'])['release']
1023+
includes=['release-groups', 'media', 'recordings',
1024+
'url-rels',])['release']
10211025
rg = mb.musicbrainzngs.get_release_group_by_id(
10221026
release['release-group']['id'],
10231027
includes=['tags', 'artist-credits'])['release-group']
@@ -1034,8 +1038,9 @@ def _render_release(self):
10341038
# identify self:
10351039
# - num tracks todo
10361040
# - scan for mb tags
1037-
#print('rg', rg)
1038-
#print('r', release)
1041+
print('rg', rg)
1042+
print('r', release)
1043+
# todo: assert # of tracks equal
10391044

10401045
return release, rg
10411046

@@ -1067,38 +1072,76 @@ def _render_year(self):
10671072

10681073
@form_field('tags')
10691074
def _render_form_tags(self):
1070-
_defaults = ['acoustic','alternative','ambient','blues','classic.rock',
1071-
'classical','country','dance','dubstep','electronic',
1072-
'experimental','folk','funk','hardcore','heavy.metal',
1073-
'hip.hop','indie','indie.pop','instrumental','jazz',
1074-
'metal','pop','post.hardcore','post.rock',
1075-
'progressive.rock','psychedelic','punk','reggae','rock',
1076-
'soul','trance','trip.hop']
1077-
1078-
return self['summary']['tags']
1075+
_defaults = ['acoustic', 'alternative', 'ambient', 'blues',
1076+
'classic.rock', 'classical', 'country', 'dance',
1077+
'dubstep', 'electronic', 'experimental', 'folk', 'funk',
1078+
'hardcore', 'heavy.metal', 'hip.hop', 'indie',
1079+
'indie.pop', 'instrumental', 'jazz', 'metal', 'pop',
1080+
'post.hardcore', 'post.rock', 'progressive.rock',
1081+
'psychedelic', 'punk', 'reggae', 'rock', 'soul', 'trance',
1082+
'trip.hop']
1083+
tags = self['summary']['tags']
1084+
return list(set(format_tag(tag) for tag in tags))
10791085

10801086
def _render_section_information(self):
1081-
pass
1087+
release, rg = self['release']
1088+
urls = release['url-relation-list']
1089+
return dedent("""\
1090+
[b]Title[/b]: {title} ({links})
1091+
[b]Artist(s)[/b]: {artist}
1092+
[b]MusicBrainz[/b]: [url]{releasegroup}[/url]
1093+
[b]Type[/b]: {type}
1094+
[b]Original release[/b]: {firstrel}""").format(
1095+
title=rg['title'],
1096+
artist=rg['artist-credit-phrase'],
1097+
links=", ".join(bb.link(u['type'], u['target']) for u in urls),
1098+
releasegroup="https://musicbrainz.org/release-group/" + rg['id'],
1099+
type=rg['type'],
1100+
firstrel=rg['first-release-date'],
1101+
)
10821102

10831103
def _render_section_tracklist(self):
10841104
s = ""
10851105
for title, tracks in self['tracklist']:
10861106
s += title
1087-
s += "[table]"
1088-
for i, tt, l in tracks:
1089-
s += "[tr]"
1090-
s += "[td]" + i + "[/td]"
1091-
s += "[td]" + tt + "[/td]"
1092-
s += "[td]" + str(l) + "[/td]"
1093-
s += "[/tr]"
1094-
s += "[/table]"
1107+
s += bb.table("".join(bb.tr(bb.td(i) +
1108+
bb.td(tt) +
1109+
bb.td(str(l).split(".")[0]))
1110+
for i, tt, l in tracks))
1111+
10951112
return s
10961113

10971114
@form_field('album_desc')
10981115
def _render_description(self):
1099-
sections = [("Information", self['section_information']),
1116+
sections = [("Information", self['section_information']),]
1117+
1118+
description = "\n".join(bb.section(*s) for s in sections)
1119+
description += bb.release
1120+
1121+
return description
1122+
1123+
@form_field('release_desc')
1124+
def _render_release_desc(self):
1125+
release, rg = self['release']
1126+
tags = self['tags']
1127+
s = dedent("""\
1128+
[b]MusicBrainz[/b]: [url]{release}[/url]
1129+
[b]Status[/b]: {status}
1130+
[b]Release[/b]: {thisrel} ({country})""").format(
1131+
release="https://musicbrainz.org/release/" + release['id'],
1132+
status=release['status'],
1133+
thisrel=release['date'],
1134+
country=release['country'],
1135+
)
1136+
1137+
if tags['encoder_settings']:
1138+
s += "\n[b]Encoder settings[/b]: " + tags['encoder_settings']
1139+
1140+
1141+
sections = [("Release Information", s),
11001142
("Track list", self['section_tracklist'])]
11011143

1144+
11021145
description = "\n".join(bb.section(*s) for s in sections)
11031146
description += bb.release
11041147

@@ -1111,3 +1154,7 @@ def _render_artist(self):
11111154
@form_field('title')
11121155
def _render_title(self):
11131156
return self['summary']['title']
1157+
1158+
@form_field('scene', 'checkbox')
1159+
def _render_scene(self):
1160+
return False

pythonbits/templating.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ def tag_enc(tag_name):
2626
size = tag_enc('size')
2727
quote = tag_enc('quote')
2828
spoiler = tag_enc('spoiler')
29+
table = tag_enc('table')
30+
tr = tag_enc('tr')
31+
td = tag_enc('td')
2932
mi = tag_enc('mediainfo')
3033
s1 = partial(size, tv=1)
3134
s2 = partial(size, tv=2) # default

0 commit comments

Comments
 (0)