The Feast of the Broken Heart

The Feast of the Broken Heart is the third studio album by Hercules and Love Affair, released in 2014.[1]

The Feast of the Broken Heart
Studio album by
Released2014 (2014)

Track listing

  1. "Hercules Theme 2014" (Andrew Butler / Gustaph / Rouge Mary)
  2. "My Offence" (Andrew Butler / Krystle Warren)
  3. "I Try to Talk to You" (Andrew Butler / John Grant)
  4. "That's Not Me" (Andrew Butler / Gustaph)
  5. "Think" (Andrew Butler / Rouge Mary)
  6. "5:43 to Freedom" (Andrew Butler / Rouge Mary)
  7. "The Light" (Andrew Butler)
  8. "Liberty" (Andrew Butler / John Grant / Gustaph)
  9. "The Key" (Andrew Butler / Rouge Mary)

Track listing adapted from Allmusic.[2]

Reception

Allmusic's Andy Kellman and The Guardian's Lanre Bakare rated the album four out of five stars.[2][3]

The New York Times called it "a subtle stylistic departure from Butler's earlier releases."[4]

gollark: Yes; it's *very hard* to go around editing the FS API such that other stuff isn't affected.
gollark: ```pythonfrom requests_futures.sessions import FuturesSessionimport concurrent.futures as futuresimport randomtry: import cPickle as pickleexcept ImportError: import pickletry: words_to_synonyms = pickle.load(open(".wtscache")) synonyms_to_words = pickle.load(open(".stwcache"))except: words_to_synonyms = {} synonyms_to_words = {}def add_to_key(d, k, v): d[k] = d.get(k, set()).union(set(v))def add_synonyms(syns, word): for syn in syns: add_to_key(synonyms_to_words, syn, [word]) add_to_key(words_to_synonyms, word, syns)def concat(list_of_lists): return sum(list_of_lists, [])def add_words(words): s = FuturesSession(max_workers=100) future_to_word = {s.get("https://api.datamuse.com/words", params={"ml": word}): word for word in words} future_to_word.update({s.get("https://api.datamuse.com/words", params={"ml": word, "v": "enwiki"}): word for word in words}) for future in futures.as_completed(future_to_word): word = future_to_word[future] try: data = future.result().json() except Exception as exc: print(f"{exc} fetching {word}") else: add_synonyms([w["word"] for w in data], word)def getattr_hook(obj, key): results = list(synonyms_to_words.get(key, set()).union(words_to_synonyms.get(key, set()))) if len(results) > 0: return obj.__getattribute__(random.choice(results)) else: raise AttributeError(f"Attribute {key} not found.")def wrap(obj): add_words(dir(obj)) obj.__getattr__ = lambda key: getattr_hook(obj, key)wrap(__builtins__)raise __builtins__.quibble()```
gollark: table.deepcopy, table.shallowcopy, table.slice, table.filter, table.map
gollark: Same with many other utility thingies.
gollark: Not really. They could have table.copy but they don't.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.