-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimport_setlist.py
More file actions
96 lines (78 loc) · 2.81 KB
/
Copy pathimport_setlist.py
File metadata and controls
96 lines (78 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import sys
import json
import argparse
from database import create_database_connection, upload_set
if __name__ == "__main__":
# Parse arguments
parser = argparse.ArgumentParser()
parser.add_argument('--files',
nargs='+',
help="json files to import")
parser.add_argument('--onlyqueue',
action="store_true",
help="only export the queue file, don't upload the songs")
parser.add_argument('--blacklistfile',
help="path to a txt file with links (one per line)")
args = parser.parse_args()
# Build Blacklist
blacklist = set()
if(args.blacklistfile):
with open(args.blacklistfile) as f:
for line in f:
blacklist.add(line.strip())
# Establish Database connection
if not args.onlyqueue:
try:
conn = create_database_connection()
except Exception as e:
print(e)
sys.exit()
# Load setlists
setlists = []
for path in args.files:
with open(path, "r+") as f:
data = json.loads(f.read().strip())
setlists.extend(data)
# Remove duplicates
clean_sets = []
clean_set_sources = []
for setlist in setlists:
if not(setlist["source"] in clean_set_sources):
clean_set_sources.append(setlist["source"])
clean_sets.append(setlist)
print("Removed %s duplicates from list." % (len(setlists) - len(clean_set_sources)))
queue = []
for index, set in enumerate(clean_sets):
if not args.onlyqueue:
print("Uploading %s of %s - %s" % (index, len(clean_sets), set["set_title"]))
try:
upload_set(conn, set)
except Exception as e:
print("Could not upload set because of %s" % e)
cursor = conn.cursor()
cursor.execute("ROLLBACK")
conn.commit()
continue
# Load urls
urls = []
if(set["previous_set"]):
urls.append(set["previous_set"])
if(setlist["next_set"]):
urls.append(set["next_set"])
for link in set["artist_links"]:
urls.append(link)
for link in set["related_links"]:
urls.append(link)
# Remove duplicates and already scraped ones
clean_urls = []
for url in urls:
if(url not in clean_set_sources and url not in clean_urls and url not in blacklist):
clean_urls.append(url)
# Add urls to queue
queue.extend(clean_urls)
if(len(clean_urls) > 0):
print("Added %s links to queue" % len(clean_urls))
# Save queue
with open("queue.txt", "w") as f:
for url in queue:
f.write(str(url) + "\n")