Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.1
picard
addrelease.py
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File addrelease.py of Package picard
# -*- coding: utf-8 -*- PLUGIN_NAME = u"Add Cluster As Release" PLUGIN_AUTHOR = u"Lukáš Lalinský, Philip Jägenstedt" PLUGIN_DESCRIPTION = "" PLUGIN_VERSION = "0.2" PLUGIN_API_VERSIONS = ["0.9.0", "0.10", "0.15.0"] from picard.cluster import Cluster from picard.util import webbrowser2 from picard.ui.itemviews import BaseAction, register_cluster_action import codecs import os import tempfile HTML_HEAD = """<!doctype html> <meta charset="UTF-8"> <title>Add Cluster As Release</title> <form action="http://musicbrainz.org/release/add" method="post"> """ HTML_INPUT = """<input type="hidden" name="%s" value="%s"> """ HTML_TAIL = """<input type="submit" value="Add Release"> </form> <script>document.forms[0].submit()</script> """ HTML_ATTR_ESCAPE = { "&": "&", '"': """ } class AddClusterAsRelease(BaseAction): NAME = "Add Cluster As Release..." def callback(self, objs): if len(objs) != 1 or not isinstance(objs[0], Cluster): return cluster = objs[0] (fd, fp) = tempfile.mkstemp(suffix=".html") f = codecs.getwriter("utf-8")(os.fdopen(fd, "w")) def esc(s): return "".join(HTML_ATTR_ESCAPE.get(c, c) for c in s) # add a global (release-level) name-value def nv(n, v): f.write(HTML_INPUT % (esc(n), esc(v))) f.write(HTML_HEAD) nv("artist_credit.names.0.artist.name", cluster.metadata["artist"]) nv("name", cluster.metadata["album"]) for i, file in enumerate(cluster.files): try: i = int(file.metadata["tracknumber"]) - 1 except: pass try: m = int(file.metadata["discnumber"]) - 1 except: m = 0 # add a track-level name-value def tnv(n, v): nv("mediums.%d.track.%d.%s" % (m, i, n), v) tnv("name", file.metadata["title"]) if file.metadata["artist"] != cluster.metadata["artist"]: tnv("artist_credit.names.0.name", file.metadata["artist"]) tnv("length", str(file.metadata.length)) f.write(HTML_TAIL) f.close() webbrowser2.open("file://"+fp) register_cluster_action(AddClusterAsRelease())
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor