Esempio n. 1
0
 def test_tag_query_quoting(s):
     pat = Pattern('<album=The only way|matched|not matched>')
     s.assertEquals(pat.format(s.g), 'not matched')
     pat = Pattern("<album=\"The 'only' way!\"|matched|not matched>")
     s.assertEquals(pat.format(s.g), 'matched')
Esempio n. 2
0
 def test_same2(s):
     fpat = FileFromPattern('<~filename>')
     pat = Pattern('<~filename>')
     s.assertEquals(fpat.format_list(s.a), set([fpat.format(s.a)]))
     s.assertEquals(pat.format_list(s.a), set([pat.format(s.a)]))
Esempio n. 3
0
 def test_conditional_other_number_dot_title(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>. <title>')
     s.assertEquals(pat.format(s.a), '5/6. Title5')
     s.assertEquals(pat.format(s.b), '6. Title6')
     s.assertEquals(pat.format(s.c), '00. test/subdir')
Esempio n. 4
0
 def test_number_dot_genre(s):
     pat = Pattern('<tracknumber>. <genre>')
     s.assertEquals(pat.format(s.a), '5/6. ')
     s.assertEquals(pat.format(s.b), '6. ')
     s.assertEquals(pat.format(s.c), '. /, /')
Esempio n. 5
0
    def test_both(self):
        pat = "<foo|<~bar~fuu> - <fa>|<bar>>"
        self.failUnlessEqual(Pattern(pat).tags, ["bar", "fuu", "fa"])

        pat = "<foo|<~bar~fuu> - <fa>|<quux>>"
        self.failUnlessEqual(Pattern(pat).tags, ["bar", "fuu", "fa", "quux"])
Esempio n. 6
0
 def test_recnumber_dot_title(s):
     pat = Pattern('\<<tracknumber>\>. <title>')
     s.assertEquals(pat.format(s.a), '<5/6>. Title5')
     s.assertEquals(pat.format(s.b), '<6>. Title6')
     s.assertEquals(pat.format(s.c), '<>. test/subdir')
Esempio n. 7
0
 def test_generated_and_not_generated(s):
     pat = Pattern('<~basename> <title>')
     res = pat.format(s.a)
     s.assertEquals(res,
                    os.path.basename(s.a["~filename"]) + " " + s.a["title"])
Esempio n. 8
0
 def test_empty(self):
     pat = Pattern("<nopenope>")
     self.assertEqual(pat.format_list(self.a), {("", "")})
Esempio n. 9
0
 def test_missing_value(self):
     pat = Pattern('<genre> - <artist>')
     self.assertEqual(pat.format_list(self.a),
                      {(" - Artist", " - Artist")})
     pat = Pattern('')
     self.assertEqual(pat.format_list(self.a), {("", "")})
Esempio n. 10
0
 def test_conditional_notfile(s):
     pat = Pattern('<tracknumber|<tracknumber>|00>')
     s.assertEquals(pat.format(s.a), '5/6')
     s.assertEquals(pat.format(s.b), '6')
     s.assertEquals(pat.format(s.c), '00')
Esempio n. 11
0
 def test_unicode_with_int(s):
     song = AudioFile({"tracknumber": "5/6",
         "title": b"\xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8')})
     pat = Pattern('<~#track>. <title>')
     s.assertEquals(pat.format(song),
         b"5. \xe3\x81\x99\xe3\x81\xbf\xe3\x82\x8c".decode('utf-8'))
Esempio n. 12
0
 def test_query_numeric(self):
     pat = Pattern("<#(foo=42)|42|other>")
     self.assertEqual(pat.format(AudioFile()), "other")
     self.assertEqual(pat.format(AudioFile({"foo": "42"})), "42")
Esempio n. 13
0
 def test_query_scope(self):
     pat = Pattern("<foo|<artist=Foo|x|y>|<artist=Foo|z|q>>")
     self.assertEqual(pat.format(self.f), "z")
Esempio n. 14
0
 def test_tag_query_disallowed_free_text(s):
     pat = Pattern("<The only way|matched|not matched>")
     s.assertEquals(pat.format(s.g), 'not matched')
Esempio n. 15
0
 def test_website_for_dirname(self):
     song = AudioFile(A_SONG)
     pat = Pattern("https://example.com/<~dirname>")
     url = self.mod.website_for(pat, song)
     # This is probably what the user wanted, ish
     assert url == "https://example.com//tmp/dir"
Esempio n. 16
0
 def test_string(s):
     pat = Pattern('display')
     s.assertEqual(pat.format_list(s.a), {("display", "display")})
Esempio n. 17
0
 def test_conditional_subdir(s):
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.assertEquals(pat.format(s.a), '/a/Title5')
     s.assertEquals(pat.format(s.b), '/a/Title6')
     s.assertEquals(pat.format(s.c), '/a//, //test/subdir')
Esempio n. 18
0
 def test_numeric(self):
     pat = Pattern("<~#rating>")
     self.assertEqual(pat.format(self.a), "0.50")
Esempio n. 19
0
 def test_generated(s):
     pat = Pattern('<~basename>')
     s.assertEquals(pat.format(s.a), os.path.basename(s.a["~filename"]))
Esempio n. 20
0
    def test_escape(self):
        pat = Pattern("a \\<foo\\|bla\\>")
        self.assertEqual(pat.format(self.a), "a <foo|bla>")

        pat = Pattern(r"a\\<foo>")
        self.assertEqual(pat.format(self.a), "a\\")
Esempio n. 21
0
 def test_number_dot_title_dot(s):
     pat = Pattern('<tracknumber>. <title>.')
     s.assertEquals(pat.format(s.a), '5/6. Title5.')
     s.assertEquals(pat.format(s.b), '6. Title6.')
     s.assertEquals(pat.format(s.c), '. test/subdir.')
Esempio n. 22
0
 def test_query_like_tag(self):
     pat = Pattern("<t=v>")
     self.assertEqual(pat.format(AudioFile({"t=v": "foo"})), "foo")
Esempio n. 23
0
 def test_empty(self):
     self.failUnlessEqual(Pattern("").tags, [])
Esempio n. 24
0
 def plugin_on_paused(self):
     pat_str = self.config_get(self.CFG_PAT_PAUSED, self.DEFAULT_PAT_PAUSED)
     pattern = Pattern(pat_str)
     self.status = pattern.format(self.song) if self.song else ""
     self._set_status(self.status)
Esempio n. 25
0
 def test_same(s):
     pat = Pattern('<~basename> <title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
     pat = Pattern('/a<genre|/<genre>>/<title>')
     s.failUnlessEqual(pat.format_list(s.a), set([pat.format(s.a)]))
Esempio n. 26
0
from quodlibet.qltk.x import Paned, Align, Button
from quodlibet.qltk.views import AllTreeView
from quodlibet.qltk import Icons
from quodlibet.qltk.image import scale, add_border_widget, \
    get_surface_for_pixbuf
from quodlibet.plugins.songsmenu import SongsMenuPlugin
from quodlibet.util.path import iscommand
from quodlibet.util.urllib import urlopen, Request

USER_AGENT = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) " \
    "Gecko/20101210 Iceweasel/3.6.13 (like Firefox/3.6.13)"

PLUGIN_CONFIG_SECTION = 'cover'
CONFIG_ENG_PREFIX = 'engine_'

SEARCH_PATTERN = Pattern(
    '<albumartist|<albumartist>|<artist>> - <album|<album>|<title>>')

REQUEST_LIMIT_MAX = 15


def get_encoding_from_socket(socket):
    content_type = socket.headers.get("Content-Type", "")
    p = [s.lower().strip() for s in content_type.split(";")]
    enc = [t.split("=")[-1].strip() for t in p if t.startswith("charset")]
    return (enc and enc[0]) or "utf-8"


def get_url(url, post=None, get=None):
    post_params = urlencode(post or {})
    get_params = urlencode(get or {})
    if get:
Esempio n. 27
0
    def test_missing_value(self):
        pat = Pattern('<genre> - <artist>')
        self.assertEqual(pat.format_list(self.a), set([" - Artist"]))

        pat = Pattern('')
        self.assertEqual(pat.format_list(self.a), set([""]))
Esempio n. 28
0
    def test_website_for(self):
        song = A_SONG
        pat = Pattern("https://example.com/<artist>/<title>")

        url = self.mod.website_for(pat, song)
        assert url == "https://example.com/barman/foo"
Esempio n. 29
0
 def test_conditional_other_other(s):
     # FIXME: was <tracknumber|a|b|c>.. but we can't put <>| in the format
     # string since it would break the XML pattern formater.
     s.assertEqual(Pattern('<tracknumber|a|b|c>').format(s.a), "")
Esempio n. 30
0
 def test_tag_query_escaping(s):
     pat = Pattern('<albumartist=Lee "Scratch" Perry|matched|not matched>')
     s.assertEquals(pat.format(s.g), 'matched')