'Fetch and store lyrics for a single item. If ``write``, then the
lyrics will also be written to the file itself.'

def fetch_item_lyrics(self, lib, item, write, force):

    if ((not force) and item.lyrics):
        self._log.info(u'lyrics    already    present:    {0}', item)
        return
    lyrics = None
    for (artist, titles) in search_pairs(item):
        lyrics = [self.get_lyrics(artist, title) for title in titles]
        if any(lyrics):
            break
    lyrics = u'\n\n---\n\n'.join([l for l in lyrics if l])
    if lyrics:
        self._log.info(u'fetched    lyrics:    {0}', item)
        if (HAS_LANGDETECT and self.config['bing_client_secret'].get()):
            lang_from = langdetect.detect(lyrics)
            if ((self.config['bing_lang_to'].get() != lang_from) and ((not self.config['bing_lang_from']) or (lang_from in self.config['bing_lang_from'].as_str_seq()))):
                lyrics = self.append_translation(lyrics, self.config['bing_lang_to'])
    else:
        self._log.info(u'lyrics    not    found:    {0}', item)
        fallback = self.config['fallback'].get()
        if fallback:
            lyrics = fallback
        else:
            return
    item.lyrics = lyrics
    if write:
        item.try_write()
    item.store()
