• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python util.tagsplit函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中quodlibet.util.tagsplit函数的典型用法代码示例。如果您正苦于以下问题:Python tagsplit函数的具体用法?Python tagsplit怎么用?Python tagsplit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了tagsplit函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: Menu

    def Menu(self, header, browser, library):
        songs = self.get_selected_songs()
        if not songs: return

        can_filter = browser.can_filter

        menu = browser.Menu(songs, self, library)

        def Filter(t):
            # Translators: The substituted string is the name of the
            # selected column (a translated tag name).
            b = qltk.MenuItem(
                _("_Filter on %s") % util.tag(t, True), gtk.STOCK_INDEX)
            b.connect_object('activate', self.__filter_on, t, songs, browser)
            return b

        header = util.tagsplit(header)[0]

        if can_filter("artist") or can_filter("album") or can_filter(header):
            menu.preseparate()

        if can_filter("artist"):
            menu.prepend(Filter("artist"))
        if can_filter("album"):
            menu.prepend(Filter("album"))
        if (header not in ["artist", "album"] and can_filter(header)):
            menu.prepend(Filter(header))

        ratings = RatingsMenuItem(songs, library)
        menu.preseparate()
        menu.prepend(ratings)
        menu.show_all()
        return menu
开发者ID:silkecho,项目名称:glowing-silk,代码行数:33,代码来源:songlist.py


示例2: get_sort_tag

def get_sort_tag(tag):
    """Returns a tag that can be used for sorting for the given column tag.

    Returns '' if the default sort key should be used.
    """

    replace_order = {
        "~#track": "",
        "~#disc": "",
        "~length": "~#length"
    }

    if tag == "~title~version":
        tag = "title"
    elif tag == "~album~discsubtitle":
        tag = "album"

    if tag.startswith("<"):
        for key, value in replace_order.iteritems():
            tag = tag.replace("<%s>" % key, "<%s>" % value)
        tag = Pattern(tag).format
    else:
        tags = util.tagsplit(tag)
        sort_tags = []
        for tag in tags:
            tag = replace_order.get(tag, tag)
            tag = TAG_TO_SORT.get(tag, tag)
            if tag not in sort_tags:
                sort_tags.append(tag)
        if len(sort_tags) > 1:
            tag = "~" + "~".join(sort_tags)

    return tag
开发者ID:lebauce,项目名称:quodlibet,代码行数:33,代码来源:songlist.py


示例3: __tag

 def __tag(self, node, scope, qscope, tags, queries, text_formatter):
     text = []
     if isinstance(node, TextNode):
         if text_formatter:
             text.append("a(_format(%r))" % node.text)
         else:
             text.append("a(%r)" % node.text)
     elif isinstance(node, ConditionNode):
         var = self.__get_query(text, scope, qscope, node.expr, queries)
         ic = self.__tag(node.ifcase, dict(scope), dict(qscope), tags, queries, text_formatter)
         ec = self.__tag(node.elsecase, dict(scope), dict(qscope), tags, queries, text_formatter)
         if not ic and not ec:
             text.pop(-1)
         elif ic:
             text.append("if %s:" % var)
             text.extend(ic)
             if ec:
                 text.append("else:")
                 text.extend(ec)
         else:
             text.append("if not %s:" % var)
             text.extend(ec)
     elif isinstance(node, TagNode):
         tags.extend(util.tagsplit(node.tag))
         var = self.__get_value(text, scope, node.tag)
         text.append("a(%s)" % var)
     elif isinstance(node, PatternNode):
         for child in node.children:
             for line in self.__tag(child, scope, qscope, tags, queries, text_formatter):
                 text.append("  " + line)
     return text
开发者ID:MikeiLL,项目名称:quodlibet,代码行数:31,代码来源:_pattern.py


示例4: __get_sort_tag

    def __get_sort_tag(self, tag):
        replace_order = {
            "~#track": "",
            "~#disc": "",
            "~length": "~#length"
        }

        if tag == "~title~version":
            tag = "title"
        elif tag == "~album~discsubtitle":
            tag = "album"

        if tag.startswith("<"):
            for key, value in replace_order.iteritems():
                tag = tag.replace("<%s>" % key, "<%s>" % value)
            tag = Pattern(tag).format
        else:
            tags = util.tagsplit(tag)
            sort_tags = []
            for tag in tags:
                tag = replace_order.get(tag, tag)
                tag = TAG_TO_SORT.get(tag, tag)
                if tag not in sort_tags:
                    sort_tags.append(tag)
            if len(sort_tags) > 1:
                tag = "~" + "~".join(sort_tags)

        return tag
开发者ID:silkecho,项目名称:glowing-silk,代码行数:28,代码来源:songlist.py


示例5: __cols_changed

 def __cols_changed(self, view, browser):
     for header in view.get_columns():
         tag = header.header_name
         for t in util.tagsplit(tag):
             if t in browser.headers:
                 header.set_visible(True)
                 break
         else: header.set_visible(False)
开发者ID:silkecho,项目名称:glowing-silk,代码行数:8,代码来源:browser.py


示例6: header_tag_split

def header_tag_split(header):
    """Split a pattern or a tied tag into separate tags"""

    if "<" in header:
        try:
            return list(Pattern(header).tags)
        except ValueError:
            return []
    else:
        return util.tagsplit(header)
开发者ID:lebauce,项目名称:quodlibet,代码行数:10,代码来源:songlist.py


示例7: get

 def get(self, key, default="", connector=" - "):
     if key[:1] == "~" and '~' in key[1:]:
         return connector.join(map(self.get, util.tagsplit(key)))
     elif key[:1] == "~" and key[-4:-3] == ":":
         func = key[-3:]
         key = key[:-4]
         return "%s<%s>" % (util.tag(key), func)
     elif key in self:
         return self[key]
     return util.tag(key)
开发者ID:akdor1154,项目名称:quodlibet,代码行数:10,代码来源:prefs.py


示例8: list_separate

 def list_separate(self, key):
     """For tied tags return the list union of the display,sort values
        otherwise just do list_sort
     """
     if key[:1] == "~" and "~" in key[1:]: # tied tag
         vals = [self.list_sort(tag) for tag in util.tagsplit(key)]
         r = [j for i in vals for j in i]
         return r
     else:
         return self.list_sort(key)
开发者ID:elfalem,项目名称:quodlibet,代码行数:10,代码来源:_audio.py


示例9: __hide_headers

 def __hide_headers(self, activator=None):
     for column in self.songlist.get_columns():
         if self.browser.headers is None:
             column.set_visible(True)
         else:
             for tag in util.tagsplit(column.header_name):
                 if tag in self.browser.headers:
                     column.set_visible(True)
                     break
             else: column.set_visible(False)
开发者ID:silkecho,项目名称:glowing-silk,代码行数:10,代码来源:quodlibetwindow.py


示例10: __init__

    def __init__(self, row_pattern):
        parts = re.split(r"(?<!\\):", row_pattern)
        parts = list(map(lambda p: p.replace(r"\:", ":"), parts))

        is_numeric = lambda s: s[:2] == "~#" and "~" not in s[2:]
        is_pattern = lambda s: '<' in s
        f_round = lambda s: (isinstance(s, float) and "%.2f" % s) or s

        disp = (len(parts) >= 2 and parts[1]) or r"[i](<~#tracks>)[/i]"
        cat = parts[0]

        if is_pattern(cat):
            title = util.pattern(cat, esc=True, markup=True)
            try:
                pc = XMLFromPattern(cat)
            except ValueError:
                pc = XMLFromPattern("")
            tags = pc.tags
            format = pc.format_list
            has_markup = True
        else:
            title = util.tag(cat)
            tags = util.tagsplit(cat)
            has_markup = False
            if is_numeric(cat):

                def format(song):
                    v = text_type(f_round(song(cat)))
                    return [(v, v)]
            else:
                format = lambda song: song.list_separate(cat)

        if is_pattern(disp):
            try:
                pd = XMLFromPattern(disp)
            except ValueError:
                pd = XMLFromPattern("")
            format_display = pd.format
        else:
            if is_numeric(disp):
                format_display = lambda coll: text_type(f_round(coll(disp)))
            else:
                format_display = lambda coll: util.escape(coll.comma(disp))

        self.title = title
        self.tags = set(tags)
        self.format = format
        self.format_display = format_display
        self.has_markup = has_markup
开发者ID:Muges,项目名称:quodlibet,代码行数:49,代码来源:util.py


示例11: list_separate

 def list_separate(self, key, connector=" - "):
     """Similar to list, but will return a list of all combinations
     for tied tags instead of one comma separated string"""
     if key[:1] == "~" and "~" in key[1:]:
         vals = \
             filter(None,
             map(lambda x: isinstance(x, basestring) and x or str(x),
             map(lambda x: (isinstance(x, float) and "%.2f" % x) or x,
             (self(tag) for tag in util.tagsplit(key)))))
         vals = (val.split("\n") for val in vals)
         r = [[]]
         for x in vals:
             r = [i + [y] for y in x for i in r]
         return map(connector.join, r)
     else:
         return self.list(key)
开发者ID:pyromaniac2k,项目名称:quodlibet,代码行数:16,代码来源:_audio.py


示例12: get

 def get(self, key, default=u"", connector=u" - "):
     if not self.songs:
         return default
     if key[:1] == "~" and "~" in key[1:]:
         if not isinstance(default, basestring): return default
         keys = util.tagsplit(key)
         v = map(self.__get_cached_value, keys)
         def default_funct(x):
             if x is None: return default
             return x
         v = map(default_funct , v)
         v = map(lambda x: (isinstance(x, float) and "%.2f" % x) or x, v)
         v = map(lambda x: isinstance(x, basestring) and x or str(x), v)
         return  connector.join(filter(None, v)) or default
     else:
         value = self.__get_cached_value(key)
         if value is None:
             return default
         return value
开发者ID:silkecho,项目名称:glowing-silk,代码行数:19,代码来源:collection.py


示例13: list_separate

    def list_separate(self, key, connector=" - "):
        """Similar to list, but will return a list of all combinations
        for tied tags instead of one comma separated string.

        In case of tied tags the result will be unicode, otherwise
        it returns the same as list()
        """

        if key[:1] == "~" and "~" in key[1:]:
            vals = []
            for v in map(self.__call__, util.tagsplit(key)):
                v = decode_value(key, v)
                if v:
                    vals.append(v.split("\n"))
            r = [[]]
            for x in vals:
                r = [i + [y] for y in x for i in r]
            return map(connector.join, r)
        else:
            return self.list(key)
开发者ID:vrasidas,项目名称:quodlibet,代码行数:20,代码来源:_audio.py


示例14: set_all_column_headers

    def set_all_column_headers(cls, headers):
        config.set("settings", "headers", " ".join(headers))
        try: headers.remove("~current")
        except ValueError: pass
        cls.headers = headers
        for listview in cls.instances():
            listview.set_column_headers(headers)

        star = list(Query.STAR)
        for header in headers:
            if "<" in header:
                try:
                    tags = Pattern(header).tags
                except ValueError:
                    continue
            else:
                tags = util.tagsplit(header)
            for tag in tags:
                if not tag.startswith("~#") and tag not in star:
                    star.append(tag)
        SongList.star = star
开发者ID:silkecho,项目名称:glowing-silk,代码行数:21,代码来源:songlist.py


示例15: __tag

 def __tag(self, node, scope, tags):
     text = []
     if isinstance(node, TextNode):
         text.append('a("%s")' % self.__escape(node.text))
     elif isinstance(node, ConditionNode):
         tag = self.__put_tag(text, scope, node.tag)
         ic = self.__pattern(node.ifcase, dict(scope), tags)
         ec = self.__pattern(node.elsecase, dict(scope), tags)
         if not ic and not ec:
             text.pop(-1)
         elif ic:
             text.append('if %s:' % scope[tag])
             text.extend(ic)
             if ec:
                 text.append('else:')
                 text.extend(ec)
         else:
             text.append('if not %s:' % scope[tag])
             text.extend(ec)
     elif isinstance(node, TagNode):
         tags.update(util.tagsplit(node.tag))
         tag = self.__put_tag(text, scope, node.tag)
         text.append('a(%s)' % scope[tag])
     return text
开发者ID:silkecho,项目名称:glowing-silk,代码行数:24,代码来源:_pattern.py


示例16: __call__

    def __call__(self, key, default=u"", connector=" - "):
        """Return a key, synthesizing it if necessary. A default value
        may be given (like dict.get); the default default is an empty
        unicode string (even if the tag is numeric).

        If a tied tag ('a~b') is requested, the 'connector' keyword
        argument may be used to specify what it is tied with.

        For details on tied tags, see the documentation for util.tagsplit."""

        if key[:1] == "~":
            key = key[1:]
            if "~" in key:
                # FIXME: decode ~filename etc.
                if not isinstance(default, basestring): return default
                return connector.join(
                    filter(None,
                    map(lambda x: isinstance(x, basestring) and x or str(x),
                    map(lambda x: (isinstance(x, float) and "%.2f" % x) or x,
                    map(self.__call__, util.tagsplit("~" + key)))))) or default
            elif key == "#track":
                try: return int(self["tracknumber"].split("/")[0])
                except (ValueError, TypeError, KeyError): return default
            elif key == "#disc":
                try: return int(self["discnumber"].split("/")[0])
                except (ValueError, TypeError, KeyError): return default
            elif key == "length":
                length = self.get("~#length")
                if length is None: return default
                else: return util.format_time(length)
            elif key == "#rating":
                return dict.get(self, "~" + key, const.DEFAULT_RATING)
            elif key == "rating":
                return util.format_rating(self("~#rating"))
            elif key == "people":
                join = "\n".join
                people = filter(None, map(self.__call__, PEOPLE))
                if not people: return default
                people = join(people).split("\n")
                index = people.index
                return join([person for (i, person) in enumerate(people)
                        if index(person) == i])
            elif key == "peoplesort":
                join = "\n".join
                people = filter(None, map(self.__call__, PEOPLE_SORT))
                people = join(people).split("\n")
                index = people.index
                return (join([person for (i, person) in enumerate(people)
                              if index(person) == i]) or
                        self("~people", default, connector))
            elif key == "performers" or key == "performer":
                performers = {}
                for key in self.keys():
                    if key.startswith("performer:"):
                        role = key.split(":", 1)[1]
                        for value in self.list(key):
                            try:
                                performers[str(value)]
                            except:
                                performers[str(value)] = []
                            performers[str(value)].append(util.title(role))
                values = []
                if len(performers) > 0:
                    for performer in performers:
                        roles = ''
                        i = 0
                        for role in performers[performer]:
                            if i > 0:
                                roles += ', '
                            roles += role
                            i += 1
                        values.append("%s (%s)" % (performer, roles))
                values.extend(self.list("performer"))
                if not values: return default
                return "\n".join(values)
            elif key == "performerssort" or key == "performersort":
                values = []
                for key in self.keys():
                    if key.startswith("performersort:"):
                        role = key.split(":", 1)[1]
                        for value in self.list(key):
                            values.append("%s (%s)" % (value, role))
                values.extend(self.list("performersort"))
                return ("\n".join(values) or
                        self("~performers", default, connector))
            elif key == "basename":
                return os.path.basename(self["~filename"]) or self["~filename"]
            elif key == "dirname":
                return os.path.dirname(self["~filename"]) or self["~filename"]
            elif key == "uri":
                try: return self["~uri"]
                except KeyError:
                    return URI.frompath(self["~filename"])
            elif key == "format":
                return self.get("~format", self.format)
            elif key == "year":
                return self.get("date", default)[:4]
            elif key == "#year":
                try: return int(self.get("date", default)[:4])
                except (ValueError, TypeError, KeyError): return default
#.........这里部分代码省略.........
开发者ID:silkecho,项目名称:glowing-silk,代码行数:101,代码来源:_audio.py


示例17: __call__

    def __call__(self, key, default=u"", connector=" - ", joiner=', '):
        """Return the value(s) for a key, synthesizing if necessary.
        Multiple values for a key are delimited by newlines.

        A default value may be given (like `dict.get`);
        the default default is an empty unicode string
        (even if the tag is numeric).

        If a tied tag ('a~b') is requested, the `connector` keyword
        argument may be used to specify what it is tied with.
        In case the tied tag contains numeric and file path tags, the result
        will still be a unicode string.
        The `joiner` keyword specifies how multiple *values* will be joined
        within that tied tag output, e.g.
            ~people~title = "Kanye West, Jay Z - New Day"

        For details on tied tags, see the documentation for `util.tagsplit`.
        """

        if key[:1] == "~":
            key = key[1:]
            if "~" in key:
                real_key = "~" + key
                values = []
                sub_tags = util.tagsplit(real_key)
                # If it's genuinely a tied tag (not ~~people etc), we want
                # to delimit the multi-values separately from the tying
                j = joiner if len(sub_tags) > 1 else "\n"
                for t in sub_tags:
                    vs = [decode_value(real_key, v) for v in (self.list(t))]
                    v = j.join(vs)
                    if v:
                        values.append(v)
                return connector.join(values) or default
            elif key == "#track":
                try:
                    return int(self["tracknumber"].split("/")[0])
                except (ValueError, TypeError, KeyError):
                    return default
            elif key == "#disc":
                try:
                    return int(self["discnumber"].split("/")[0])
                except (ValueError, TypeError, KeyError):
                    return default
            elif key == "length":
                length = self.get("~#length")
                if length is None:
                    return default
                else:
                    return util.format_time_display(length)
            elif key == "#rating":
                return dict.get(self, "~" + key, config.RATINGS.default)
            elif key == "rating":
                return util.format_rating(self("~#rating"))
            elif key == "people":
                return "\n".join(self.list_unique(PEOPLE)) or default
            elif key == "people:real":
                # Issue 1034: Allow removal of V.A. if others exist.
                unique = self.list_unique(PEOPLE)
                # Order is important, for (unlikely case): multiple removals
                for val in VARIOUS_ARTISTS_VALUES:
                    if len(unique) > 1 and val in unique:
                        unique.remove(val)
                return "\n".join(unique) or default
            elif key == "people:roles":
                return (self._role_call("performer", PEOPLE)
                        or default)
            elif key == "peoplesort":
                return ("\n".join(self.list_unique(PEOPLE_SORT)) or
                        self("~people", default, connector))
            elif key == "peoplesort:roles":
                # Ignores non-sort tags if there are any sort tags (e.g. just
                # returns "B" for {artist=A, performersort=B}).
                # TODO: figure out the "correct" behavior for mixed sort tags
                return (self._role_call("performersort", PEOPLE_SORT)
                        or self("~peoplesort", default, connector))
            elif key in ("performers", "performer"):
                return self._prefixvalue("performer") or default
            elif key in ("performerssort", "performersort"):
                return (self._prefixvalue("performersort") or
                        self("~" + key[-4:], default, connector))
            elif key in ("performers:roles", "performer:roles"):
                return (self._role_call("performer") or default)
            elif key in ("performerssort:roles", "performersort:roles"):
                return (self._role_call("performersort")
                        or self("~" + key.replace("sort", ""), default,
                                connector))
            elif key == "basename":
                return os.path.basename(self["~filename"]) or self["~filename"]
            elif key == "dirname":
                return os.path.dirname(self["~filename"]) or self["~filename"]
            elif key == "uri":
                try:
                    return self["~uri"]
                except KeyError:
                    return fsn2uri(self["~filename"])
            elif key == "format":
                return self.get("~format", text_type(self.format))
            elif key == "codec":
                codec = self.get("~codec")
#.........这里部分代码省略.........
开发者ID:elfalem,项目名称:quodlibet,代码行数:101,代码来源:_audio.py


示例18: test_two_synth_start

 def test_two_synth_start(self):
     self.failUnlessEqual(
         util.tagsplit("~~people~album"), ["~people", "album"])
开发者ID:brunob,项目名称:quodlibet,代码行数:3,代码来源:test_util.py


示例19: test_two_numeric

 def test_two_numeric(self):
     self.failUnlessEqual(util.tagsplit("~#foo~~#bar"), ["~#foo", "~#bar"])
开发者ID:brunob,项目名称:quodlibet,代码行数:2,代码来源:test_util.py


示例20: test_synth

 def test_synth(self):
     self.failUnlessEqual(util.tagsplit("~foo~~bar"), ["foo", "~bar"])
开发者ID:brunob,项目名称:quodlibet,代码行数:2,代码来源:test_util.py



注:本文中的quodlibet.util.tagsplit函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python util.title函数代码示例发布时间:2022-05-26
下一篇:
Python util.tag函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap