Last active 1454466510

Get lyrics from genius.com (remade because I pushed the token :P)

genius.py Raw
1#!/usr/bin/env python3
2# reqs: requests, beautifulsoup4
3from bs4 import BeautifulSoup as Soup
4from requests import get
5from argparse import ArgumentParser
6import sys
7
8CLIENT_ACCESS_TOKEN = "" # generate at https://genius.com/api-clients
9
10def main():
11 parser = ArgumentParser(prog="genius")
12 parser.add_argument("term", help="Search term")
13 parser.add_argument("-n", help="Select different result number (defaults to 1)", type=int, default=1)
14 args = parser.parse_args()
15 data = get("https://api.genius.com/search", headers={"Authorization": "Bearer " + CLIENT_ACCESS_TOKEN}, params={"q": args.term}).json()
16 if not data["response"]["hits"]:
17 print("No results", file=sys.stderr)
18 return 1
19 if len(data["response"]["hits"]) < args.n:
20 print("Not enough results ({} returned)".format(len(data["response"]["hits"])), file=sys.stderr)
21 return 2
22 result = data["response"]["hits"][args.n-1]["result"]
23 print("{0}{1} result: {title} by {primary_artist[name]}".format(args.n,
24 "st" if args.n == 1 else
25 "nd" if args.n == 2 else
26 "rd" if args.n == 3 else "th",
27 **result), file=sys.stderr)
28 soup = Soup(get("http://genius.com" + result["path"], "html.parser").text)
29 print(soup.find('lyrics').text)
30 return 0
31
32if __name__ == "__main__":
33 try:
34 sys.exit(main())
35 except KeyboardInterrupt:
36 print("Aborting", file=sys.stderr)
37