示例#1
0
    def getCDDB(cddbdiscid):
        """
        Fetch basic metadata from gnudb.org's mirror of freedb's CDDB.

        Freedb's official CDDB isn't used anymore because it's going to be
        shut down on 31/03/2020.

        See: https://web.archive.org/web/20200331093822/http://www.freedb.org/
        See: https://hydrogenaud.io/index.php?topic=118682

        :param cddbdiscid: list of id, tracks, offsets, seconds
        :rtype: str
        """
        # FIXME: convert to nonblocking?
        try:
            md = freedb.perform_lookup(cddbdiscid, 'gnudb.gnudb.org', 80)
            logger.debug('CDDB query result: %r', md)
            return [item['DTITLE'] for item in md if 'DTITLE' in item] or None

        except ValueError as e:
            logger.warning("CDDB protocol error: %s", e)

        except IOError as e:
            # FIXME: for some reason errno is a str ?
            if e.errno == 'socket error':
                logger.warning("CDDB network error: %r", (e, ))
            else:
                raise

        return None
示例#2
0
    def getCDDB(self, cddbdiscid):
        """
        @param cddbdiscid: list of id, tracks, offsets, seconds

        @rtype: str
        """
        # FIXME: convert to nonblocking?
        try:
            md = freedb.perform_lookup(cddbdiscid, 'freedb.freedb.org', 80)
            logger.debug('CDDB query result: %r', md)
            return [item['DTITLE'] for item in md if 'DTITLE' in item] or None

        except IOError as e:
            # FIXME: for some reason errno is a str ?
            if e.errno == 'socket error':
                self._stdout.write("Warning: network error: %r\n" % (e, ))
            else:
                raise

        return None
示例#3
0
    def getCDDB(cddbdiscid):
        """
        :param cddbdiscid: list of id, tracks, offsets, seconds

        :rtype: str
        """
        # FIXME: convert to nonblocking?
        try:
            md = freedb.perform_lookup(cddbdiscid, 'freedb.freedb.org', 80)
            logger.debug('CDDB query result: %r', md)
            return [item['DTITLE'] for item in md if 'DTITLE' in item] or None

        except ValueError as e:
            logger.warning("CDDB protocol error: %s", e)

        except IOError as e:
            # FIXME: for some reason errno is a str ?
            if e.errno == 'socket error':
                logger.warning("CDDB network error: %r", (e, ))
            else:
                raise

        return None