Newer
Older
import pandas
from UltraStarSongFileParser import UltraStarSongFileParser
import requests
from bs4 import BeautifulSoup
class TXTDownloader:
self.txtparser = UltraStarSongFileParser()
self.cache = cache
def download(self, url: str, artist: str, song: str, spotify_uri: str, gap: str, video_gap: str, start: str, end: str, language: str, year: str):
if (Path(self.outdir) / f"{artist} - {song}.txt").is_file() and self.cache:
return
url = url.replace("detail", "gettxt")
with requests.Session() as s:
page = s.post(url, data={'wd': 1}, cookies={'PHPSESSID': self.sessid})
soup = BeautifulSoup(page.content, 'html.parser')
txt = soup.find(name="textarea").text
Path(self.outdir).mkdir(parents=True, exist_ok=True)
with open(Path(self.outdir) / f"{artist} - {song}.txt", "w", encoding="utf-8") as f:
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
self.fix_file(Path(self.outdir) / f"{artist} - {song}.txt", artist, song, spotify_uri, gap, video_gap, start, end, language, year)
def fix_file(self, file: Path, artist: str, song: str, spotify_uri: str, gap: str, video_gap: str, start: str, end: str, language: str, year: str):
txt = self.txtparser.parse_file(str(file), encoding="utf-8")
txt.mp3 = str(file.with_suffix(".mp3").relative_to(file.parent))
txt.video = str(file.with_suffix(".mp4").relative_to(file.parent))
txt.cover = str(file.with_suffix(".jpg").relative_to(file.parent))
if type(gap) == str and gap != " ":
txt.gap = gap
if type(video_gap) == str and video_gap != " ":
txt.videogap = video_gap
if type(start) == str and start != " ":
txt.start = start
if type(end) == str and end != " ":
txt.end = end
if type(language) == str and language != " ":
txt.language = language
if type(artist) == str and artist != " ":
txt.artist = artist
if type(song) == str and song != " ":
txt.title = song
if type(year) == str and year != " ":
txt.year = year
txt.songid = spotify_uri
txt.dump(file)