Skip to content

Commit

Permalink
Get MusicBrainz search logging workflow working
Browse files Browse the repository at this point in the history
  • Loading branch information
mutantmonkey committed Dec 16, 2023
1 parent 8dd8d42 commit 0a150d0
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 46 deletions.
26 changes: 13 additions & 13 deletions trackman/api/v1/track.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ def get(self):
db.func.lower(models.Track.label) == db.func.lower(label))

# This means there was a bad search, stop searching
# FIXME: MusicBrainz cannot search on label
if somesearch is False:
return {
'success': False,
Expand All @@ -206,22 +207,21 @@ def get(self):

# Search MusicBrainz
mb_results = musicbrainzngs.search_recordings(**musicbrainz_search)
for result in mb_results['recording-list']:

for release in result['recording']['release-list']:
for recording in mb_results['recording-list']:
for release in recording['release-list']:
t = models.Track(
title=result['recording']['title'],
album=result['title'],
artist=result['artist-credit-phrase'],
recording_mbid=result['recording']['id'],
release_mbid=result['release']['id'],
releasegroup_mbid=result['release']['release-group']['id'])

artist_credits = result.get('artist-credit', [])
title=recording['title'],
album=release['title'],
artist=recording['artist-credit-phrase'],
label="Not Available")
t.recording_mbid = recording['id']
t.release_mbid = release['id']
t.releasegroup_mbid = release['release-group']['id']

artist_credits = recording.get('artist-credit', [])
if len(artist_credits) == 1:
t.artist_mbid = artist_credits[0]['artist']['id']
results.append(t)
pass
results.append(t.serialize())

# # Search local database
# tracks = tracks.limit(8).all()
Expand Down
20 changes: 14 additions & 6 deletions trackman/api/v1/tracklog.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import dateutil.parser
import uuid
from flask import session
from flask_restful import abort
from trackman import db, models
Expand Down Expand Up @@ -324,15 +325,22 @@ def put(self):
abort(400, success=False, errors=form.errors,
message="The track information you entered did not validate. Common reasons for this include missing or improperly entered information, especially the label. Please try again. If you continue to get this message after several attempts, and you're sure the information is correct, please contact the IT staff for help.")

track = find_or_add_track(models.Track(
search_track = models.Track(
form.title.data,
form.artist.data,
form.album.data,
form.label.data,
artist_mbid=form.artist_mbid.data,
release_mbid=form.release_mbid.data,
releasegroup_mbid=form.releasegroup_mbid.data,
recording_mbid=form.recording_mbid.data))
form.label.data)
if len(form.artist_mbid.data) > 0:
search_track.artist_mbid = uuid.UUID(form.artist_mbid.data)
if len(form.release_mbid.data) > 0:
search_track.release_mbid = uuid.UUID(form.release_mbid.data)
if len(form.releasegroup_mbid.data) > 0:
search_track.releasegroup_mbid = uuid.UUID(
form.releasegroup_mbid.data)
if len(form.recording_mbid.data) > 0:
search_track.recording_mbid = uuid.UUID(form.recording_mbid.data)

track = find_or_add_track(search_track)
djset_id = form.djset_id.data

if djset_id != session['djset_id']:
Expand Down
14 changes: 12 additions & 2 deletions trackman/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,9 +419,19 @@ def cleanup_dj_list():


def find_or_add_track(track):
if track.recording_mbid is not None:
if (track.recording_mbid is not None and
(track.release_mbid is not None or
track.releasegroup_mbid is not None)):
match = Track.query.filter(
Track.recording_mbid == track.recording_mbid).first()
Track.recording_mbid == track.recording_mbid)

if track.release_mbid is not None:
match = match.filter(Track.release_mbid == track.release_mbid)
if track.releasegroup_mbid is not None:
match = match.filter(
Track.releasegroup_mbid == track.releasegroup_mbid)

match = match.first()
else:
match = Track.query.filter(
db.func.lower(Track.artist) == db.func.lower(track.artist),
Expand Down
8 changes: 7 additions & 1 deletion trackman/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,17 @@ class Track(db.Model):
release_mbid = db.Column(UUIDType())
releasegroup_mbid = db.Column(UUIDType())

def __init__(self, title, artist, album, label):
def __init__(self, title, artist, album, label, artist_mbid=None,
recording_mbid=None, release_mbid=None,
releasegroup_mbid=None):
self.title = title
self.artist = artist
self.album = album
self.label = label
self.artist_mbid = artist_mbid
self.recording_mbid = recording_mbid
self.release_mbid = release_mbid
self.releasegroup_mbid = releasegroup_mbid

def serialize(self):
return {
Expand Down
53 changes: 29 additions & 24 deletions trackman/static/js/trackman.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ var clockspan = "<span class='oi oi-timer'></span>";
var playlisttrue = "<span class='oi oi-check green'></span>";
var playlistfalse = "";

// origin: 0 if newly entered, 1 if from history

function getParentIfSpan(target) {
if($(target).prop("tagName") == "SPAN") {
return $(target).parent();
Expand Down Expand Up @@ -274,13 +272,7 @@ Trackman.prototype.logQueued = function(element) {
this.updatePlaylist();
};

// Delete it from the queue if it's there
if(track['origin'] == 1) {
this.logTrack(track, postLog);
}
else if(track['origin'] == 0) {
this.createTrack(track, postLog);
}
this.logTrack(track, postLog);
};

Trackman.prototype.clearQueue = function() {
Expand Down Expand Up @@ -312,7 +304,6 @@ Trackman.prototype.queueTrack = function(ev) {
if(!inst.validateTrack(track)) {
return false;
}
track['origin'] = 0;
inst.queue.push(track);

inst.saveQueue();
Expand Down Expand Up @@ -378,7 +369,6 @@ Trackman.prototype.queueFromList = function(tracks) {
for(i in tracks) {
var track = tracks[i];
if(this.validateTrack(track)) {
track['origin'] = 0;
this.queue.push(track);
}
}
Expand Down Expand Up @@ -436,18 +426,35 @@ Trackman.prototype.initPlaylist = function() {

Trackman.prototype.logTrack = function(track, callback) {
if(this.djsetId != null) {
data = {
"djset_id": this.djsetId,
"artist": track['artist'],
"album": track['album'],
"title": track['title'],
"label": track['label'],
"vinyl": track['vinyl'],
"request": track['request'],
"new": track['new'],
"rotation": track['rotation'],
};
if(typeof track['recording_mbid'] != "undefined") {
data['recording_mbid'] = track['recording_mbid'];
}
if(typeof track['release_mbid'] != "undefined") {
data['release_mbid'] = track['release_mbid'];
}
if(typeof track['releasegroup_mbid'] != "undefined") {
data['releasegroup_mbid'] = track['releasegroup_mbid'];
}
if(typeof track['artistt_mbid'] != "undefined") {
data['artist_mbid'] = track['artist_mbid'];
}

$.ajax({
url: this.baseUrl + "/api/tracklog",
data: {
"track_id": track['id'],
"djset_id": this.djsetId,
"vinyl": track['vinyl'],
"request": track['request'],
"new": track['new'],
"rotation": track['rotation'],
},
url: this.baseUrl + "/api/tracklog/add",
data: data,
context: this,
type: "POST",
type: "PUT",
success: callback,
error: function(jqXHR, statusText, errorThrown) {
if(jqXHR.responseJSON['onair'] == false) {
Expand Down Expand Up @@ -515,14 +522,14 @@ Trackman.prototype.createTrack = function(track, callback) {
});
};

// FIXME: combine this with logTrack
Trackman.prototype.logNewTrack = function(ev) {
var inst = ev.data.instance;

var track = inst.getFormData();
if(!inst.validateTrack(track)) {
return false;
}
track['origin'] = 0;
function post_log(data) {
if(data['success'] == false) {
alert(data['message']);
Expand Down Expand Up @@ -746,7 +753,6 @@ Trackman.prototype.searchHistory = function() {
results = data['results'];
inst.searchResults = [];
for (var i = 0; i < results.length; i++) {
results[i]['origin'] = 1;
inst.searchResults.push(results[i])
}
inst.updateHistory();
Expand Down Expand Up @@ -1214,7 +1220,6 @@ Trackman.prototype.inlineEditTrack = function(ev) {
}

track['id'] = id;
track['origin'] = 0;
inst.queue[id] = track;

row.replaceWith(inst.renderTrackRow(track, 'queue'));
Expand Down

0 comments on commit 0a150d0

Please sign in to comment.