コード例 #1
0
ファイル: funcs.py プロジェクト: keithgg/puddletag
def number_tracks(tags, offset, numtracks, restartdirs, padlength, split_field='__dirpath', output_field='track', by_group=False):
    """Numbers the selected tracks sequentially in the range
    between the indexes.
    The first item of indices is the starting track.
    The second item of indices is the number of tracks."""

    if not split_field:
        QMessageBox.critical(parent, translate("Autonumbering Wizard", 'Field empty...'),
                             translate("Autonumbering Wizard",
                                       "The field specified to use as a directory splitter was invalid. "
                                       "Please check your values."))
        return

    if not output_field:
        QMessageBox.critical(parent, translate("Autonumbering Wizard", 'Field empty...'),
                             translate("Autonumbering Wizard",
                                       "The output field specified was invalid. "
                                       "Please check your values."))
        return

    if restartdirs: #Restart dir numbering
        folders = OrderedDict()
        for tag_index, tag in enumerate(tags):
            key = findfunc.parsefunc(split_field, tag)
            if not isinstance(key, basestring):
                key = tag.stringtags().get(split_field)
            
            if key in folders:
                folders[key].append(tag_index)
            else:
                folders[key] = [tag_index]
    else:
        folders = {'fol': [i for i, t in enumerate(tags)]}


    taglist = {}
    for group_num, tags in enumerate(folders.itervalues()):
        if numtracks == -2:
            total = len(tags)
        elif numtracks is -1:
            total = None
        elif numtracks >= 0:
            total = numtracks
        for trknum, index in enumerate(tags):
            if by_group:
                trknum = group_num + offset
            else:
                trknum += offset
                
            text = _pad(trknum, total, padlength)
            taglist[index] = {output_field: text}

    taglist = [v for k,v in sorted(taglist.items(), key=lambda x: x[0])]

    emit('writeselected', taglist)
コード例 #2
0
ファイル: audio_filter.py プロジェクト: korala1968/tago
def parse_arg(audio, text):
    if not isinstance(text, basestring):
        return text
    if text[0] == u'%' and text[-1] == u'%':
        return to_string(audio.get(text[1:-1], u''))
    elif text in FIELDS:
        return to_string(audio.get(text, u''))
    else:
        if text[0] == u'"' and text[-1] == u'"':
            text = text[1:-1]
        return findfunc.parsefunc(text, audio)
    return u""
コード例 #3
0
ファイル: audio_filter.py プロジェクト: keithgg/puddletag
def parse_arg(audio, text):
    if not isinstance(text, basestring):
        return text
    if text[0] == u'%' and text[-1] == u'%':
        return to_string(audio.get(text[1:-1], u''))
    elif text in FIELDS:
        return to_string(audio.get(text, u''))
    else:
        if text[0] == u'"' and text[-1] == u'"':
            text = text[1:-1]
        return findfunc.parsefunc(text, audio)
    return u""
コード例 #4
0
ファイル: funcs.py プロジェクト: korala1968/tago
def number_tracks(tags,
                  offset,
                  numtracks,
                  restartdirs,
                  padlength,
                  split_field='__dirpath',
                  output_field='track',
                  by_group=False):
    """Numbers the selected tracks sequentially in the range
    between the indexes.
    The first item of indices is the starting track.
    The second item of indices is the number of tracks."""

    if not split_field:
        QMessageBox.critical(
            parent, translate("Autonumbering Wizard", 'Field empty...'),
            translate(
                "Autonumbering Wizard",
                "The field specified to use as a directory splitter was invalid. "
                "Please check your values."))
        return

    if not output_field:
        QMessageBox.critical(
            parent, translate("Autonumbering Wizard", 'Field empty...'),
            translate(
                "Autonumbering Wizard",
                "The output field specified was invalid. "
                "Please check your values."))
        return

    if restartdirs:  #Restart dir numbering
        folders = OrderedDict()
        for tag_index, tag in enumerate(tags):
            key = findfunc.parsefunc(split_field, tag)
            if not isinstance(key, basestring):
                key = tag.stringtags().get(split_field)

            if key in folders:
                folders[key].append(tag_index)
            else:
                folders[key] = [tag_index]
    else:
        folders = {'fol': [i for i, t in enumerate(tags)]}

    taglist = {}
    for group_num, tags in enumerate(folders.itervalues()):
        if numtracks == -2:
            total = len(tags)
        elif numtracks is -1:
            total = None
        elif numtracks >= 0:
            total = numtracks
        for trknum, index in enumerate(tags):
            if by_group:
                trknum = group_num + offset
            else:
                trknum += offset

            text = _pad(trknum, total, padlength)
            taglist[index] = {output_field: text}

    taglist = [v for k, v in sorted(taglist.items(), key=lambda x: x[0])]

    emit('writeselected', taglist)
コード例 #5
0
def inline_display(pattern, tags):
    return parsefunc(pattern, tags)
コード例 #6
0
ファイル: releasewidget.py プロジェクト: korala1968/tago
def inline_display(pattern, tags):
    return parsefunc(pattern, tags)