#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-3.0-only
"""An example Melody plugin (docs/plugins.md): the album chosen, looked up on
a site in the browser. One action per site; the site is the argument."""
import json
import subprocess
import sys
from urllib.parse import quote, quote_plus

SITES = {
    "musicbrainz": lambda artist, album: "https://musicbrainz.org/search?type=release_group"
    "&method=advanced&query=" + quote_plus('releasegroup:"%s" AND artist:"%s"' % (album, artist)),
    "discogs": lambda artist, album: "https://www.discogs.com/search/?type=master&q="
    + quote_plus("%s %s" % (artist, album)),
    "bandcamp": lambda artist, album: "https://bandcamp.com/search?item_type=a&q="
    + quote_plus("%s %s" % (artist, album)),
    "rateyourmusic": lambda artist, album: "https://rateyourmusic.com/search?searchtype=l"
    "&searchterm=" + quote_plus("%s %s" % (artist, album)),
    "allmusic": lambda artist, album: "https://www.allmusic.com/search/albums/"
    + quote("%s %s" % (artist, album)),
}

site = sys.argv[1] if len(sys.argv) == 2 else ""
if site not in SITES:
    print("usage: search " + "|".join(SITES), file=sys.stderr)
    sys.exit(2)
album = json.load(sys.stdin)["albums"][0]
artist, title = album["artist"], album["album"]
if not (artist or title):
    print("the album has neither artist nor title", file=sys.stderr)
    sys.exit(1)
opener = "open" if sys.platform == "darwin" else "xdg-open"
subprocess.Popen([opener, SITES[site](artist, title)],
                 stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
