Exemplo n.º 1
0
 def __init__(self):
     super(save_and_rewrite_header, self).__init__()
     register_file_action(self)
     register_track_action(self)
     register_album_action(self)
     register_cluster_action(self)
     register_clusterlist_action(self)
Exemplo n.º 2
0
	def __init__(self):
		super(NiCeFileAction, self).__init__()
		register_file_action(self)
		register_track_action(self)
		register_album_action(self)
		register_cluster_action(self)
		register_clusterlist_action(self)
 def __init__(self):
     super(save_and_rewrite_header, self).__init__()
     register_file_action(self)
     register_track_action(self)
     register_album_action(self)
     register_cluster_action(self)
     register_clusterlist_action(self)
Exemplo n.º 4
0
        if len(artists) > 1:
            url += "?hasmultipletrackartists=1&artistid=1"
        else:
            url += "?hasmultipletrackartists=0&artistid=2"
        url += "&artistedit=1&artistname=%s" % QtCore.QUrl.toPercentEncoding(
            cluster.metadata["artist"])
        url += "&releasename=%s" % QtCore.QUrl.toPercentEncoding(
            cluster.metadata["album"])
        tracks = 0
        for i, file in enumerate(cluster.files):
            try:
                i = int(file.metadata["tracknumber"]) - 1
            except:
                pass
            tracks = max(tracks, i + 1)
            url += "&track%d=%s" % (
                i, QtCore.QUrl.toPercentEncoding(file.metadata["title"]))
            url += "&tracklength%d=%s" % (i,
                                          QtCore.QUrl.toPercentEncoding(
                                              format_time(
                                                  file.metadata.length)))
            if len(artists) > 1:
                url += "&tr%d_artistedit=1" % i
            url += "&tr%d_artistname=%s" % (
                i, QtCore.QUrl.toPercentEncoding(file.metadata["artist"]))
        url += "&tracks=%d" % tracks
        webbrowser2.open(url)


register_cluster_action(AddClusterAsRelease())
Exemplo n.º 5
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search Game Music Revolution"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search Game Music Revolution"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action

class SearchGameMusicRevolution(BaseAction):
    NAME = "Search with Game Music Revolution"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.gmronline.com/results.asp?display=0&go=Go+Find+It&searchType=Title&browseType=Title&results=25&search="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchGameMusicRevolution())
register_album_action(SearchGameMusicRevolution())
Exemplo n.º 6
0
class FixTrackNumsUsingSeq(BaseAction):
    NAME = 'Fix track numbers using sequence'

    def callback(self, objs):
        log.debug('[FixTrackNumsUsingSeq]')

        for cluster in objs:
            if not isinstance(cluster, Cluster) or not cluster.files:
                continue

            for i, f in enumerate(cluster.files):
                if not f or not f.metadata:
                    log.debug('No file/metadata for [%i]' % (i))
                    continue

                new_track = str(i + 1)

                if 'title' in f.metadata and f.metadata['title']:
                    log.debug('Change [%s]=>[%s]' %
                              (f.metadata['title'], new_track))

                f.metadata['tracknumber'] = new_track
                f.metadata.changed = True
                f.update(signal=True)

            cluster.update()


register_cluster_action(FixTrackNumsUsingTitles())
register_cluster_action(FixTrackNumsUsingSeq())
Exemplo n.º 7
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search Discogs for Release (codebase 4.1)"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search Discogs"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action

class SearchDiscogs(BaseAction):
    NAME = "Search Discogs"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.discogs.com/search?type=all&q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += "+"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        url += "&btn=Search"
        webbrowser2.open(url)
register_cluster_action(SearchDiscogs())
register_album_action(SearchDiscogs())
Exemplo n.º 8
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search SoundtrackINFO"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search SoundtrackINFO"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = [
    "0.9.0", "0.10", "0.11", "0.12", "0.13", "0.14", "0.15", "0.16"
]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchSoundtrackINFO(BaseAction):
    NAME = "Search with SoundtrackINFO"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.soundtrackinfo.com/search.asp?q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)


register_cluster_action(SearchSoundtrackINFO())
register_album_action(SearchSoundtrackINFO())
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search SoundtrackCollector"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search SoundtrackCollector"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchSoundtrackCollector(BaseAction):
    NAME = "Search with SoundtrackCollector"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.soundtrackcollector.com/catalog/search.php?searchon=all&searchtext="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchSoundtrackCollector())
register_album_action(SearchSoundtrackCollector())
Exemplo n.º 10
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search Game Music Revolution (codebase 4.1)"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search Game Music Revolution"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action

class SearchGameMusicRevolution(BaseAction):
    NAME = "Search with Game Music Revolution"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.gmronline.com/results.asp?display=0&go=Go+Find+It&searchType=Title&browseType=Title&results=25&search="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchGameMusicRevolution())
register_album_action(SearchGameMusicRevolution())
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search SoundtrackINFO"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search SoundtrackINFO"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action

class SearchSoundtrackINFO(BaseAction):
    NAME = "Search with SoundtrackINFO"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.soundtrackinfo.com/search.asp?q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchSoundtrackINFO())
register_album_action(SearchSoundtrackINFO())
Exemplo n.º 12
0
from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action
from picard.ui.itemviews import BaseAction, register_file_action
from picard.metadata import register_track_metadata_processor

class SearchAMGR(BaseAction):
    NAME = "Search AMG for Release"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://wc10.allmusic.com/cg/amg.dll?P=amg&opt1=2&sql="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchAMGR())
register_album_action(SearchAMGR())

class SearchAMGA(BaseAction):
    NAME = "Search AMG for Artist"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://wc09.allmusic.com/cg/amg.dll?P=amg&opt1=1&sql="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        webbrowser2.open(url)
register_cluster_action(SearchAMGA())
register_album_action(SearchAMGA())

class SearchAMGT(BaseAction):
    NAME = "Search AMG for Track"
    def callback(self, objs):
Exemplo n.º 13
0
        # Delete all the files from the cluster.  Use the temp list as the
        # file reference to avoid iterator related problems.
        for file in files:
            cluster.remove_file(file)

        # Sort the list.
        files.sort(key=lambda file: (file.metadata["artist"], file.metadata["title"]))

        # Copy all the data back to the cluster
        for file in files:
            cluster.add_file(file)

        # Remove the placeholder
        cluster.remove_file(tmpFile)

register_cluster_action(SortFilesByArtist())



class SortFilesByTitle(BaseAction):
    NAME = "Sort Files by Title"

    def callback(self, objs):
        if len(objs) != 1 or not isinstance(objs[0], Cluster):
            return
        cluster = objs[0]

        # Temporary list for sorting.  Working on the original cluster file
        # list doesn't seem to work.
        files = []
Exemplo n.º 14
0
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore, QtGui
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action, register_album_action, register_file_action, BaseTreeView
from picard.metadata import register_track_metadata_processor

class SearchAMGR(BaseAction):
    NAME = "Search AMG for Release"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.allmusic.com/search/album/"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchAMGR())
register_album_action(SearchAMGR())

class SearchAMGA(BaseAction):
    NAME = "Search AMG for Artist"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.allmusic.com/search/artist/"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["albumartist"])
        webbrowser2.open(url)
register_cluster_action(SearchAMGA())
register_album_action(SearchAMGA())

class SearchAMGTc(BaseAction):
    NAME = "Search AMG (non-classical music) for Track"
    def callback(self, objs):
Exemplo n.º 15
0
                           urlencode(textencoding.asciipunct(artist)))
    url_query.addQueryItem('title', urlencode(textencoding.asciipunct(album)))
    i = 1
    for track in tracks:
        url_query.addQueryItem('track' + str(i),
                               urlencode(textencoding.asciipunct(track)))
        i += 1
    url.setQuery(url_query)
    return url.toString(QUrl.FullyEncoded)


class PaperCdCase(BaseAction):
    NAME = 'Create paper CD case'

    def callback(self, objs):
        for obj in objs:
            if isinstance(obj, Album) or isinstance(obj, Cluster):
                artist = obj.metadata['albumartist']
                album = obj.metadata['album']
                if isinstance(obj, Album):
                    tracks = [track.metadata['title'] for track in obj.tracks]
                else:
                    tracks = [file.metadata['title'] for file in obj.files]
                url = build_papercdcase_url(artist, album, tracks)
                webbrowser2.open(url)


paperCdCase = PaperCdCase()
register_album_action(paperCdCase)
register_cluster_action(paperCdCase)
Exemplo n.º 16
0
                                                      cluster.metadata[tag])

            log.debug(
                "cluster name is %s by %s" %
                (cluster.metadata['album'], cluster.metadata['albumartist']))

            for i, file in enumerate(cluster.files):

                log.debug(
                    "%s: Trying to unmangle file - original metadata %s" %
                    (PLUGIN_NAME, file.orig_metadata))

                for tag in _decode_tags:

                    if not (tag in file.metadata):
                        continue

                    unmangled_tag = self.unmangle(tag, file.metadata[tag])

                    file.orig_metadata[tag] = unmangled_tag
                    file.metadata[tag] = unmangled_tag

                    file.orig_metadata.changed = True
                    file.metadata.changed = True
                    file.update(signal=True)

            cluster.update()


register_cluster_action(DecodeCyrillic())
Exemplo n.º 17
0
    def callback(self, objs):
        for cluster in objs:
            if not isinstance(cluster, Cluster):
                continue
            for tag in _decode_tags:
                if not (tag in cluster.metadata):
                    continue
                cluster.metadata[tag] = self.unmangle(tag,
                                                      cluster.metadata[tag])
            log.debug(
                "cluster name is %s by %s" %
                (cluster.metadata['album'], cluster.metadata['albumartist']))
            for file in cluster.files:
                log.debug(
                    "%s: Trying to unmangle file - original metadata %s" %
                    (PLUGIN_NAME, file.orig_metadata))
                for tag in _decode_tags:
                    if not (tag in file.metadata):
                        continue
                    unmangled_tag = self.unmangle(tag, file.metadata[tag])
                    file.orig_metadata[tag] = unmangled_tag
                    file.metadata[tag] = unmangled_tag
                    file.orig_metadata.changed = True
                    file.metadata.changed = True
                    file.update(signal=True)
            cluster.update()


register_cluster_action(DecodeGreek())
Exemplo n.º 18
0
from picard.ui.itemviews import BaseAction, register_cluster_action


class SearchAmazonCA(BaseAction):
    NAME = "Search Amazon.ca"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.amazon.ca/s/?url=search-alias%3Dpopular&field-keywords="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)


register_cluster_action(SearchAmazonCA())
register_album_action(SearchAmazonCA())


class SearchAmazonCOM(BaseAction):
    NAME = "Search Amazon.com"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.amazon.com/s/?url=search-alias%3Dpopular&field-keywords="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)

# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search the Lortel Archives"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search the Lortel Archives"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = [
    "0.9.0", "0.10", "0.11", "0.12", "0.13", "0.14", "0.15", "0.16"
]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchLortelArchives(BaseAction):
    NAME = "Search the Lortel Archives"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.lortel.org/LLA_archive/index.cfm?keyword="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        url += "&COMMITT=YES&search_by=ALL&Go.x=0&Go.y=0"
        webbrowser2.open(url)


register_cluster_action(SearchLortelArchives())
register_album_action(SearchLortelArchives())
Exemplo n.º 20
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search SoundtrackCollector for Release (codebase 4.1)"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search SoundtrackCollector"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchSoundtrackCollector(BaseAction):
    NAME = "Search with SoundtrackCollector"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.soundtrackcollector.com/catalog/search.php?searchon=all&searchtext="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)


register_cluster_action(SearchSoundtrackCollector())
register_album_action(SearchSoundtrackCollector())
Exemplo n.º 21
0
    def update_list(self, current_item=None):
        current_row = -1
        self.ui.list_providers.clear()
        for counter, provider_id in enumerate(self.providers):
            item = QtWidgets.QListWidgetItem()
            item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
            item.setText(self.providers[provider_id]['name'])
            item.setCheckState(QtCore.Qt.Checked if provider_id == self.provider else QtCore.Qt.Unchecked)
            item.setData(QtCore.Qt.UserRole, provider_id)
            self.ui.list_providers.addItem(item)
            if current_item and provider_id == current_item:
                current_row = counter
        current_row = max(current_row, 0)
        self.ui.list_providers.setCurrentRow(current_row)
        self.ui.list_providers.sortItems()

    def save(self):
        self._set_settings(config.setting)

    def _set_settings(self, settings):
        settings[KEY_PROVIDER] = self.provider.strip()
        settings[KEY_EXTRA] = self.additional_words.strip()
        settings[KEY_PROVIDERS] = self.providers or DEFAULT_PROVIDERS.copy()


register_cluster_action(SearchEngineLookupTest())
register_options_page(SearchEngineLookupOptionsPage)
register_album_action(AlbumCoverArtLookup())
register_track_action(TrackCoverArtLookup())
Exemplo n.º 22
0
        for field in ['artist', 'album']:
            f = cluster.metadata[field]
            f = f.encode(source, 'backslashreplace')
            f = f.decode(target, 'replace')
            cluster.metadata[field] = f
        cluster.update()

    def callback(self, objs):
        dialog = EncodingDialog(self.tagger.window)
        if dialog.exec_():
            for o in objs:
                if isinstance(o, Cluster):
                    self.convert(dialog.source, dialog.target, o)

register_cluster_action(ConvertClusterEncoding())

class ResetFileEncoding(BaseAction):
    NAME = "Reset Encoding..."

    def reset(self, file):
        for field in ['title', 'artist', 'album']:
            file.metadata[field] = file.orig_metadata[field]
        file.update()

    def callback(self, objs):
        for o in objs:
            if isinstance(o, File):
                self.reset(o)

register_file_action(ResetFileEncoding())
Exemplo n.º 23
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"CopyToClip"
PLUGIN_AUTHOR = u"Noobie"
PLUGIN_DESCRIPTION = "Copies artist,title and length of all unmatched files to the clipboard"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["1.0", "1.1"]

import re
from PyQt4 import QtCore, QtGui
from picard.ui.itemviews import BaseAction, register_cluster_action


class CopyToClip(BaseAction):
    NAME = "Copy metadata to &Clipboard..."

    def callback(self,obj):
        clipboard = QtGui.QApplication.clipboard()
        clip = ""
        files = self.tagger.unmatched_files.files
        for index in range(len(files)):
            clip += "%s %s - %s (%s)" % (files[index].metadata["tracknumber"] if files[index].metadata["tracknumber"], files[index].metadata["artist"], files[index].metadata["title"], files[index].metadata["~length"])
            clip +='\n'
        clipboard.setText(clip)




action = CopyToClip()
register_cluster_action(action)
Exemplo n.º 24
0
PLUGIN_NAME = u"Search Discogs for Release"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search Discogs"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = [
    "0.9.0", "0.10", "0.11", "0.12", "0.13", "0.14", "0.15", "0.16"
]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchDiscogs(BaseAction):
    NAME = "Search Discogs"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.discogs.com/search?type=all&q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += "+"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        url += "&btn=Search"
        webbrowser2.open(url)


register_cluster_action(SearchDiscogs())
register_album_action(SearchDiscogs())
Exemplo n.º 25
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search FilmMuziek.be"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search FilmMuziek.be"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchFilmMusic(BaseAction):
    NAME = "Search with FilmMuziek.be"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.filmmuziek.be/search.cgi?Match=0&Realm=All&Terms="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchFilmMusic())
register_album_action(SearchFilmMusic())
Exemplo n.º 26
0
                'url'  : u"http://www.ebay.co.uk/sch/i.html?_nkw="},
    'us' : {
                'name' : u"United States",
                'url'  : u"http://www.ebay.com/sch/i.html?_nkw="},
    'uy' : {
                'name' : u"Uruguay (Mercado Libre)",
                'url'  : u"http://listado.mercadolibre.com.uy/"},
    've' : {
                'name' : u"Venezuela (Mercado Libre)",
                'url'  : u"http://listado.mercadolibre.com.ve/"},
    'vn' : {
                'name' : u"Vietnam",
                'url'  : u"http://chodientu.vn/ebay-browse-keyword-"}
}


for tld in ['ar','au','at','be1','be2','br','ca1','ca2','cl','co','cr','cz','dk','do','ec','fi','fr','de','gr','hk','hu','in','ie','it','my','mx','nl','no','pa','pe','ph','pl','pt1','pt2','ru','sg','kr','es','se','ch','tw','th','tr','uk','us','uy','ve','vn']:
    class SearcheBay(BaseAction):
        NAME = "Search eBay " + urls[tld]['name']
        def callback(self, objs, tld=tld):
            cluster = objs[0]
            url = urls[tld]['url']
            url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
            if tld == 'es':
                url += '.htm'
            if tld == 'vn':
                url += '.html'
            webbrowser2.open(url)
    register_cluster_action(SearcheBay())
    register_album_action(SearcheBay())
Exemplo n.º 27
0
        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())
Exemplo n.º 28
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search CastAlbums.org for Release"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search CastAlbums.org"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_album_action
from picard.ui.itemviews import BaseAction, register_cluster_action


class SearchCastAlbums(BaseAction):
    NAME = "Search with CastAlbums.org"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.castalbums.org/shows/search/"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchCastAlbums())
register_album_action(SearchCastAlbums())
Exemplo n.º 29
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search CastAlbums.org for Release (codebase 4.1)"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search CastAlbums.org"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_album_action
from picard.ui.itemviews import BaseAction, register_cluster_action


class SearchCastAlbums(BaseAction):
    NAME = "Search with CastAlbums.org"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.castalbums.org/shows/search/"
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)


register_cluster_action(SearchCastAlbums())
register_album_action(SearchCastAlbums())
Exemplo n.º 30
0
    },
    'vn': {
        'name': u"Vietnam",
        'url': u"http://chodientu.vn/ebay-browse-keyword-"
    }
}

for tld in [
        'ar', 'au', 'at', 'be1', 'be2', 'br', 'ca1', 'ca2', 'cl', 'co', 'cr',
        'cz', 'dk', 'do', 'ec', 'fi', 'fr', 'de', 'gr', 'hk', 'hu', 'in', 'ie',
        'it', 'my', 'mx', 'nl', 'no', 'pa', 'pe', 'ph', 'pl', 'pt1', 'pt2',
        'ru', 'sg', 'kr', 'es', 'se', 'ch', 'tw', 'th', 'tr', 'uk', 'us', 'uy',
        've', 'vn'
]:

    class SearcheBay(BaseAction):
        NAME = "Search eBay " + urls[tld]['name']

        def callback(self, objs, tld=tld):
            cluster = objs[0]
            url = urls[tld]['url']
            url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
            if tld == 'es':
                url += '.htm'
            if tld == 'vn':
                url += '.html'
            webbrowser2.open(url)

    register_cluster_action(SearcheBay())
    register_album_action(SearcheBay())
Exemplo n.º 31
0
        artists = set()
        for i, file in enumerate(cluster.files):
            artists.add(file.metadata["artist"])

        tracks = []
        for i, file in enumerate(cluster.files):
            try:
                i = int(file.metadata["tracknumber"])
            except:
                i += 1

            if len(artists) > 1:
                tracks.append((i, "%s. %s - %s (%s)" % (
                    i,
                    file.metadata["title"],
                    file.metadata["artist"],
                    format_time(file.metadata.length))))
            else:
                tracks.append((i, "%s. %s (%s)" % (
                    i,
                    file.metadata["title"],
                    format_time(file.metadata.length))))

        clipboard = QtGui.QApplication.clipboard()
        clipboard.setText("\n".join(map(lambda x: x[1], sorted(tracks))))


register_cluster_action(CopyClusterToClipboard())

Exemplo n.º 32
0
from picard.metadata import register_track_metadata_processor


class SearchGoogle(BaseAction):
    NAME = "Search with Google"

    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.google.com/search?hl=en&q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)


register_cluster_action(SearchGoogle())
register_album_action(SearchGoogle())


class SearchGoogleTrack(BaseAction):
    NAME = "Search with Google"

    def callback(self, objs):
        file = objs[0]
        url = "http://www.google.com/search?hl=en&q="
        url += QtCore.QUrl.toPercentEncoding(file.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(file.metadata["album"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(file.metadata["title"])
        webbrowser2.open(url)
Exemplo n.º 33
0
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action
from picard.ui.itemviews import BaseAction, register_file_action
from picard.metadata import register_track_metadata_processor

class SearchGoogle(BaseAction):
    NAME = "Search with Google"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.google.com/search?hl=en&q="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        webbrowser2.open(url)
register_cluster_action(SearchGoogle())
register_album_action(SearchGoogle())

class SearchGoogleTrack(BaseAction):
    NAME = "Search with Google"
    def callback(self, objs):
        file = objs[0]
        url = "http://www.google.com/search?hl=en&q="
        url += QtCore.QUrl.toPercentEncoding(file.metadata["artist"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(file.metadata["album"])
        url += " "
        url += QtCore.QUrl.toPercentEncoding(file.metadata["title"])
        webbrowser2.open(url)
register_file_action(SearchGoogleTrack())
Exemplo n.º 34
0
        for file in files:
            cluster.remove_file(file)

        # Sort the list.
        files.sort(
            key=lambda file: (file.metadata["artist"], file.metadata["title"]))

        # Copy all the data back to the cluster
        for file in files:
            cluster.add_file(file)

        # Remove the placeholder
        cluster.remove_file(tmpFile)


register_cluster_action(SortFilesByArtist())


class SortFilesByTitle(BaseAction):
    NAME = "Sort Files by Title"

    def callback(self, objs):
        if len(objs) != 1 or not isinstance(objs[0], Cluster):
            return
        cluster = objs[0]

        # Temporary list for sorting.  Working on the original cluster file
        # list doesn't seem to work.
        files = []

        # Create a placeholder file to keep the cluster from being deleted
Exemplo n.º 35
0
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search by Times"
PLUGIN_AUTHOR = u"Faux"
PLUGIN_DESCRIPTION = ""
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0"]


from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action


class SearchByTimes(BaseAction):
	NAME = "Lookup by times..."

	def callback(self, objs):
		if len(objs) != 1 or not isinstance(objs[0], Cluster):
			return
		cluster = objs[0]

		url = "http://faux.no-ip.biz/mbreports/cueread2.php?"

		for i, file in enumerate(cluster.files):
			url += "%s=%s&" % (file.metadata["tracknumber"], file.metadata.length)

		webbrowser2.open(url)

register_cluster_action(SearchByTimes())
# -*- coding: utf-8 -*-

PLUGIN_NAME = u"Search the Lortel Archives"
PLUGIN_AUTHOR = u"Brian Schweitzer"
PLUGIN_DESCRIPTION = "Search the Lortel Archives"
PLUGIN_VERSION = "0.2"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10","0.11","0.12","0.13","0.14","0.15","0.16"]

from PyQt4 import QtCore
from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action
from picard.ui.itemviews import BaseAction, register_album_action


class SearchLortelArchives(BaseAction):
    NAME = "Search the Lortel Archives"
    def callback(self, objs):
        cluster = objs[0]
        url = "http://www.lortel.org/LLA_archive/index.cfm?keyword="
        url += QtCore.QUrl.toPercentEncoding(cluster.metadata["album"])
        url += "&COMMITT=YES&search_by=ALL&Go.x=0&Go.y=0"
        webbrowser2.open(url)
register_cluster_action(SearchLortelArchives())
register_album_action(SearchLortelArchives())
Exemplo n.º 37
0
PLUGIN_NAME = u"Search by Times"
PLUGIN_AUTHOR = u"Faux"
PLUGIN_DESCRIPTION = ""
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0"]

from picard.cluster import Cluster
from picard.util import webbrowser2
from picard.ui.itemviews import BaseAction, register_cluster_action


class SearchByTimes(BaseAction):
    NAME = "Lookup by times..."

    def callback(self, objs):
        if len(objs) != 1 or not isinstance(objs[0], Cluster):
            return
        cluster = objs[0]

        url = "http://faux.no-ip.biz/mbreports/cueread2.php?"

        for i, file in enumerate(cluster.files):
            url += "%s=%s&" % (file.metadata["tracknumber"],
                               file.metadata.length)

        webbrowser2.open(url)


register_cluster_action(SearchByTimes())
Exemplo n.º 38
0
        for file in files:
            m = file.metadata
            parser = ScriptParser()
            try:
                parser.eval(script, m)
            except:
                log.error(traceback.format_exc())
            m.strip_whitespace()


class SwapTagsDialog(QtGui.QDialog):
    def __init__(self, action, objs, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.action = action
        files = action.tagger.get_files_from_objects(objs)
        self.ui = Ui_SwapTagsDialog()
        self.ui.setupUi(self)
        self.ui.info.setText(u"Script will process %d files." % len(files))
        self.highlighter = TaggerScriptSyntaxHighlighter(self.ui.script_edit.document())
        self.ui.runButton.clicked.connect(self.call_script_processor)

    def call_script_processor(self):

        script = unicode(self.ui.script_edit.document().toPlainText())
        self.action.process(script)
        self.ui.info.setText(u"Done! Close the window and check the results!")
        self.ui.runButton.setEnabled(False)

register_cluster_action(SwapTags())