Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion unicode-normalisation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
PLUGIN_AUTHOR = ''
PLUGIN_DESCRIPTION = 'Adds $nfc(text) and $nfd(text) functions for converting strings to NFC or NFD'
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["1.0"]
PLUGIN_API_VERSIONS = ["1.0", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7"]

from picard.script import register_script_function
import unicodedata
Expand Down
77 changes: 35 additions & 42 deletions use-pseudo-releases.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
PLUGIN_NAME = 'Fetch latin script tracklists using translation/transliteration relationships'
PLUGIN_AUTHOR = ''
PLUGIN_DESCRIPTION = '''Fetch latin script tracklists using translation/transliteration relationships'''
PLUGIN_VERSION = '0.1'
PLUGIN_API_VERSIONS = ['0.12', '0.15', '0.16', '1.1']
PLUGIN_VERSION = '0.2'
PLUGIN_API_VERSIONS = ['2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7']

from functools import partial
from picard.metadata import register_album_metadata_processor, register_track_metadata_processor
from picard.album import Album
from picard.util import partial
from picard.mbxml import release_to_metadata, artist_credit_from_node
from PyQt4.QtCore import QUrl
from picard.mbjson import artist_credit_from_node
from picard.config import Config

script = "Latn"
Expand All @@ -22,76 +20,71 @@ def _pseudo_release_downloaded(album, metadata, original_id, document, http, err

try:
if error:
album.log.error("%r", unicode(http.errorString()))
album.log.error("%r", http.errorString())
else:
try:
release_node = document.metadata[0].release[0]
if release_node.text_representation[0].script[0].text != script:
if document["text-representation"]["script"] != script:
return

album_latin = release_node.title[0].text
album_latin = document["title"]
metadata["album"] = album_latin
tracks['album'] = album_latin

artistcredit, tmp = artist_credit_from_node(release_node.artist_credit[0], config)
artistcredit, _, _, _ = artist_credit_from_node(document['artist-credit'])
metadata["albumartist"] = artistcredit
tracks["artist"] = artistcredit

mediumpos = 1
tracks["mediums"] = {}
for i, node in enumerate(release_node.medium_list[0].medium):
for medium in document["media"]:
mediumpos = medium["position"]
try:
tracks["mediums"][ mediumpos ] = release_node.medium_list[0].medium[i].title[0].text
tracks["media"][mediumpos] = medium["title"]
except: pass

tracks[mediumpos] = {}
trackpos = 1
for j, node in enumerate(release_node.medium_list[0].medium[i].track_list[0].track):
for track in medium["tracks"]:
trackpos = track["position"]
title = ""
try:
title = node.title[0].text
title = track["title"]
except:
title = node.recording[0].title[0].text
title = track["recording"]["title"]

tartist = ""
try:
tartist, tmp = artist_credit_from_node(node.artist_credit[0], config)
tartist, _, _, _ = artist_credit_from_node(track["artist-credit"])
except:
tartist, tmp = artist_credit_from_node(node.recording[0].artist_credit[0], config)
tartist, _, _, _ = artist_credit_from_node(track["recording"]["artist-credit"])

tracks[ mediumpos ][ trackpos ] = {};
tracks[ mediumpos ][ trackpos ]["artist"] = tartist
tracks[mediumpos][trackpos] = {}
tracks[mediumpos][trackpos]["artist"] = tartist

tracks[ mediumpos ][ trackpos ]["title"] = title;
tracks[ mediumpos ][ trackpos ]["mbid"] = node.recording[0].id;

trackpos = trackpos + 1
mediumpos = mediumpos + 1
except:
tracks[mediumpos][trackpos]["title"] = title
tracks[mediumpos][trackpos]["mbid"] = track["recording"]["id"]
except Exception as e:
error = True
album.log.error("some error occurred :(")
album.log.error("some error occurred: %s", e)
finally:
album._requests -= 1
album._finalize_loading(None)

def fetch_transliterations(album, metadata, release_node):
def fetch_transliterations(album, metadata, release):
global tracks
tracks = {}
tracks['has_transliteration'] = False

if metadata['releasestatus'] != 'pseudo-release' and metadata['script'] != script:
if release_node.children.has_key('relation_list'):
for relation_list in release_node.relation_list:
if relation_list.target_type == 'release':
for relation in relation_list.relation:
try:
direction = relation.direction if hasattr(relation, 'direction') else ''
if (relation.type == 'transl-tracklisting' and direction != 'backward'):
album._requests += 1
album.tagger.xmlws.get_release_by_id(relation.target[0].text,
partial(_pseudo_release_downloaded, album, metadata, relation.target[0].text),
['recordings', 'artist-credits'])
except AttributeError: pass
for relation in release['relations']:
if relation['target-type'] == 'release':
try:
direction = relation.get('direction', '')
if (relation["type"] == 'transl-tracklisting' and direction != 'backward'):
album._requests += 1
album.tagger.mb_api.get_release_by_id(relation['release']['id'],
partial(_pseudo_release_downloaded, album, metadata, relation['release']['id']),
['recordings', 'artist-credits'])
except AttributeError: pass

register_album_metadata_processor(fetch_transliterations)

Expand All @@ -109,7 +102,7 @@ def set_transliterations(tagger, metadata, track, release):
except: pass
metadata["albumartist"] = tracks["artist"]
try:
if tracks[ int(metadata['discnumber']) ][ int(metadata['tracknumber']) ]["mbid"] == metadata["musicbrainz_trackid"]:
if tracks[ int(metadata['discnumber']) ][ int(metadata['tracknumber']) ]["mbid"] == metadata["musicbrainz_recordingid"]:
metadata['title'] = tracks[ int(metadata['discnumber']) ][ int(metadata['tracknumber']) ]["title"]
else:
tagger.log.error("MBID for %s (%s) does not match MBID for %s (%s).", tracks[ int(metadata['discnumber']) ][ int(metadata['tracknumber']) ]["title"], tracks[ int(metadata['discnumber']) ][ int(metadata['tracknumber']) ]["mbid"], metadata['title'], metadata["musicbrainz_trackid"])
Expand Down