예제 #1
0
파일: lrcdb.py 프로젝트: ihacklog/osdlyrics
 def assign(self, metadata, uri):
     """ Assigns a uri of lyrics to tracks represented by metadata
     """
     uri = ensure_unicode(uri)
     c = self._conn.cursor()
     if metadata.location:
         location = normalize_location(metadata.location)
     else:
         location = ''
     if self._find_by_location(metadata):
         logging.debug('Assign lyric file %s to track of location %s' % (uri, location))
         c.execute(LrcDb.UPDATE_LYRIC, (uri, location,))
     else:
         title = ensure_unicode(metadata.title) if metadata.title is not None else ''
         artist = ensure_unicode(metadata.artist) if metadata.artist is not None else ''
         album = ensure_unicode(metadata.album) if metadata.album is not None else ''
         try:
             tracknum = int(metadata.tracknum)
             if tracknum < 0:
                 tracknum = 0
         except:
             tracknum = 0
         logging.debug('Assign lyrics file %s to track %s. %s - %s in album %s @ %s' % (uri, tracknum, artist, title, album, location))
         c.execute(LrcDb.ASSIGN_LYRIC, (title, artist, album, tracknum, location, uri))
     self._conn.commit()
     c.close()
예제 #2
0
 def assign(self, metadata, uri):
     """ Assigns a uri of lyrics to tracks represented by metadata
     """
     uri = ensure_unicode(uri)
     c = self._conn.cursor()
     if metadata.location:
         location = normalize_location(metadata.location)
     else:
         location = ''
     if self._find_by_location(metadata):
         logging.debug('Assign lyric file %s to track of location %s' % (uri, location))
         c.execute(LrcDb.UPDATE_LYRIC, (uri, location,))
     else:
         title = ensure_unicode(metadata.title) if metadata.title is not None else ''
         artist = ensure_unicode(metadata.artist) if metadata.artist is not None else ''
         album = ensure_unicode(metadata.album) if metadata.album is not None else ''
         try:
             tracknum = int(metadata.tracknum)
             if tracknum < 0:
                 tracknum = 0
         except:
             tracknum = 0
         logging.debug('Assign lyrics file %s to track %s. %s - %s in album %s @ %s' % (uri, tracknum, artist, title, album, location))
         c.execute(LrcDb.ASSIGN_LYRIC, (title, artist, album, tracknum, location, uri))
     self._conn.commit()
     c.close()
예제 #3
0
파일: lrcdb.py 프로젝트: ihacklog/osdlyrics
def query_param_from_metadata(metadata):
    """
    Generate query dict from metadata
    """
    param = {
        METADATA_TITLE: ensure_unicode(metadata.title) if metadata.title is not None else '',
        METADATA_ARTIST: ensure_unicode(metadata.artist) if metadata.artist is not None else '',
        METADATA_ALBUM: ensure_unicode(metadata.album) if metadata.album is not None else '',
        }
    try:
        tracknum = int(metadata.tracknum)
        if tracknum < 0:
            tracknum = 0
    except:
        tracknum = 0
    param[METADATA_TRACKNUM] = tracknum
    return param
예제 #4
0
def query_param_from_metadata(metadata):
    """
    Generate query dict from metadata
    """
    param = {
        METADATA_TITLE: ensure_unicode(metadata.title) if metadata.title is not None else '',
        METADATA_ARTIST: ensure_unicode(metadata.artist) if metadata.artist is not None else '',
        METADATA_ALBUM: ensure_unicode(metadata.album) if metadata.album is not None else '',
        }
    try:
        tracknum = int(metadata.tracknum)
        if tracknum < 0:
            tracknum = 0
    except:
        tracknum = 0
    param[METADATA_TRACKNUM] = tracknum
    return param
예제 #5
0
파일: lrcdb.py 프로젝트: ihacklog/osdlyrics
def normalize_location(location):
    """
    Normalize location of metadata to URI form

    >>> normalize_location('/path/to/file')
    u'file:///path/to/file'
    >>> normalize_location(u'/path/to/file')
    u'file:///path/to/file'
    >>> normalize_location('file:///path/to/file')
    u'file:///path/to/file'
    >>> normalize_location('/\xe6\x96\x87\xe4\xbb\xb6/\xe8\xb7\xaf\xe5\xbe\x84')
    u'file:///%E6%96%87%E4%BB%B6/%E8%B7%AF%E5%BE%84'
    >>> normalize_location(u'/\u6587\u4ef6/\u8def\u5f84')
    u'file:///%E6%96%87%E4%BB%B6/%E8%B7%AF%E5%BE%84'
    """
    if location and location[0] == '/':
        location = 'file://' + urllib.pathname2url(ensure_utf8(location))
    location = ensure_unicode(location)
    return location
예제 #6
0
def normalize_location(location):
    """
    Normalize location of metadata to URI form

    >>> normalize_location('/path/to/file')
    u'file:///path/to/file'
    >>> normalize_location(u'/path/to/file')
    u'file:///path/to/file'
    >>> normalize_location('file:///path/to/file')
    u'file:///path/to/file'
    >>> normalize_location('/\xe6\x96\x87\xe4\xbb\xb6/\xe8\xb7\xaf\xe5\xbe\x84')
    u'file:///%E6%96%87%E4%BB%B6/%E8%B7%AF%E5%BE%84'
    >>> normalize_location(u'/\u6587\u4ef6/\u8def\u5f84')
    u'file:///%E6%96%87%E4%BB%B6/%E8%B7%AF%E5%BE%84'
    """
    if location and location[0] == '/':
        location = 'file://' + urllib.pathname2url(ensure_utf8(location))
    location = ensure_unicode(location)
    return location