Ejemplo n.º 1
0
    def check_plugin(self, plugin_id, artist, title, lyric_hashes):
        logging.basicConfig(format='%(asctime)s %(levelname)s [%(module)s] %(message)s', level=logging.DEBUG)

        self.is_skipped(plugin_id)

        retry_delay = int(os.getenv('PRISMRIVER_TEST_RETRY_DELAY', '120'))
        retry_count = int(os.getenv('PRISMRIVER_TEST_RETRY_COUNT', '2'))

        config = self.get_search_config(plugin_id)

        step = 0
        result = search(artist, title, config)
        while not result and step < retry_count:
            config.cache_web_ttl_sec = 0  # force test to re-download pages instead of getting them from cache
            delay = retry_delay * (step + 1)
            logging.debug('Empty search result, wait for {} sec. before retry'.format(delay))
            sleep(delay)
            result = search(artist, title, config)
            step += 1

        self.assertEqual(1, len(result), 'Wrong songs count')
        self.assertEqual(len(lyric_hashes), len(result[0].lyrics), 'Wrong lyrics count')

        index = 0
        for lyric_hash in lyric_hashes:
            logging.debug('Lyric #{}:\n'.format(index) + result[0].lyrics[index])
            self.assertEqual(lyric_hash, self.get_md5(result[0].lyrics[index]),
                             'Different text in #{} lyrics'.format(index))
            index += 1
Ejemplo n.º 2
0
    def check_plugin(self, plugin_id, artist, title, lyric_hashes):
        logging.basicConfig(
            format='%(asctime)s %(levelname)s [%(module)s] %(message)s',
            level=logging.DEBUG)

        self.is_skipped(plugin_id)

        retry_delay = int(os.getenv('PRISMRIVER_TEST_RETRY_DELAY', '120'))
        retry_count = int(os.getenv('PRISMRIVER_TEST_RETRY_COUNT', '0'))

        config = self.get_search_config(plugin_id)

        step = 0
        result = search(artist, title, config)
        while not result and step < retry_count:
            config.cache_web_ttl_sec = 0  # force test to re-download pages instead of getting them from cache
            delay = retry_delay * (step + 1)
            logging.debug(
                'Empty search result, wait for {} sec. before retry'.format(
                    delay))
            sleep(delay)
            result = search(artist, title, config)
            step += 1

        self.assertEqual(1, len(result), 'Wrong songs count')
        self.assertEqual(len(lyric_hashes), len(result[0].lyrics),
                         'Wrong lyrics count')

        index = 0
        for lyric_hash in lyric_hashes:
            logging.debug('Lyric #{}:\n'.format(index) +
                          result[0].lyrics[index])
            self.assertEqual(lyric_hash, self.get_md5(result[0].lyrics[index]),
                             'Different text in #{} lyrics'.format(index))
            index += 1
Ejemplo n.º 3
0
    def run(self):
        start_time = time.time()

        songs = []
        for item in self.meta:
            item_songs = main.search(item[0], item[1], self.config)
            songs.extend(item_songs)

        total_time = time.time() - start_time

        self.resultReady.emit(self.worker_id, self.meta[0][0], self.meta[0][1], songs, total_time, self.background)
Ejemplo n.º 4
0
def run():
    parser = util.init_args_parser()

    parser.add_argument('--list',
                        action='store_true',
                        help='list available search plugins')
    parser.add_argument(
        '--song',
        action='store_true',
        help='search for song information by artist and title (default action)'
    )
    parser.add_argument('--cleanup',
                        action='store_true',
                        help='remove outdated files from cache')

    parser.add_argument(
        "-f",
        "--format",
        type=str,
        default='txt',
        help="lyrics output format (txt (default), json, json_ascii)")

    parser.add_argument(
        "-o",
        "--output",
        type=str,
        default='%ARTIST% - %TITLE%\nSource: %PLUGIN_NAME%\n\n%LYRICS%',
        help="output template for txt format. Available parameters: "
        "%%TITLE%% - song title, "
        "%%ARTIST%% - song artist, "
        "%%LYRICS%% - song lyrics, "
        "%%PLUGIN_ID%% - plugin id, "
        "%%PLUGIN_NAME%% - plugin name "
        "(default value: %%ARTIST%% - %%TITLE%%\\nSource: %%PLUGIN_NAME%%\\n\\n%%LYRICS%%)"
    )

    params = parser.parse_args()

    util.init_logging(params.quiet, params.verbose, params.log)
    util.log_debug_info(params)

    config = util.init_search_config(params)
    util.log_config_info(config)

    if params.list:
        list_plugins()
    elif params.cleanup:
        main.cleanup_cache(config)
    else:
        result = main.search(params.artist, params.title, config)

        if result:
            print(format_output(result, params.format, params.output))
Ejemplo n.º 5
0
def run():
    parser = util.init_args_parser()

    parser.add_argument('--list', action='store_true', help='list available search plugins')
    parser.add_argument('--song', action='store_true',
                        help='search for song information by artist and title (default action)')
    parser.add_argument('--cleanup', action='store_true', help='remove outdated files from cache')

    parser.add_argument("-f", "--format", type=str, default='txt',
                        help="lyrics output format (txt (default), json, json_ascii)")

    parser.add_argument("-o", "--output", type=str, default='%ARTIST% - %TITLE%\nSource: %PLUGIN_NAME%\n\n%LYRICS%',
                        help="output template for txt format. Available parameters: "
                             "%%TITLE%% - song title, "
                             "%%ARTIST%% - song artist, "
                             "%%LYRICS%% - song lyrics, "
                             "%%PLUGIN_ID%% - plugin id, "
                             "%%PLUGIN_NAME%% - plugin name "
                             "(default value: %%ARTIST%% - %%TITLE%%\\nSource: %%PLUGIN_NAME%%\\n\\n%%LYRICS%%)"
                        )

    params = parser.parse_args()

    util.init_logging(params.quiet, params.verbose, params.log)
    util.log_debug_info(params)

    config = util.init_search_config(params)
    util.log_config_info(config)

    if params.list:
        list_plugins()
    elif params.cleanup:
        main.cleanup_cache(config)
    else:
        result = main.search(params.artist, params.title, config)

        if result:
            print(format_output(result, params.format, params.output))