From d19f310e0c96c50de4a7f1b8e3d1eb8226c062fd Mon Sep 17 00:00:00 2001 From: Jens Timmerman Date: Sat, 10 Oct 2020 16:41:42 +0200 Subject: [PATCH] less cashing, fixes #2 --- vrtnu/vrtnu/VrtNuLayout.swift | 109 ++++++++++++++-------------------- 1 file changed, 46 insertions(+), 63 deletions(-) diff --git a/vrtnu/vrtnu/VrtNuLayout.swift b/vrtnu/vrtnu/VrtNuLayout.swift index 72bd0b1..e9c24bb 100644 --- a/vrtnu/vrtnu/VrtNuLayout.swift +++ b/vrtnu/vrtnu/VrtNuLayout.swift @@ -65,7 +65,7 @@ struct Episode: Hashable, Comparable{ self.name = episodeName self.season = season self.imageURL = imageURL - self.episodeurl = "https://www.vrt.be/vrtnu/a-z/" + season.show.showName + "/" + season.seasonName + "/" + episodeName + self.episodeurl = "https://www.vrt.be/vrtnu/a-z/" + season.show.showName + "/" + season.seasonName + "/" + episodeName self.metadataurl = URL(string: episodeurl + ".mssecurevideo.json")! self.title = title } @@ -122,7 +122,17 @@ struct Season: Hashable, Comparable{ let seasonURL: URL let seasonName: String - lazy var episodes: [Episode] = { + + init(show: Show, seasonName: String, title: String){ + self.show = show + self.title = title + self.seasonName = seasonName + print(seasonName) + print(show.showName) + self.seasonURL = URL(string: "https://www.vrt.be/vrtnu/a-z/" + show.showName + "/" + seasonName)! + } + + func getEpisodes() -> [Episode]{ //`set(re.findall('vrtnu/a-z/%s/%s/([^"]*)/' %(show, season),requests.get('https://www.vrt.be/vrtnu/a-z/%s/%s.lists.all-episodes/' % (show, season)).text))` let regexPattern = "vrtnu/a-z/" + show.showName + "/" + seasonName + "/([^\"]*)/" @@ -150,22 +160,6 @@ struct Season: Hashable, Comparable{ myepisodes.sort() return myepisodes - - - }() - - init(show: Show, seasonName: String, title: String){ - self.show = show - self.title = title - self.seasonName = seasonName - print(seasonName) - print(show.showName) - self.seasonURL = URL(string: "https://www.vrt.be/vrtnu/a-z/" + show.showName + "/" + seasonName)! - } - - func getEpisodes() -> [Episode]{ - var mutableself = self - return mutableself.episodes } } @@ -187,7 +181,17 @@ struct Show: Hashable, Comparable{ let imageURL: URL let vrtNu: VRTNu - lazy var seasons: [Season] = { + init(vrtNu: VRTNu, showName: String, title: String, imageURL: URL) { + self.showURL = URL(string: "https://www.vrt.be/vrtnu/a-z/" + showName)! + self.showName = showName + self.title = title + //TODO: get image urls for shows + self.imageURL = imageURL + self.vrtNu = vrtNu + + } + + func getSeasons() -> [Season]{ //`re.findall('value="#parsys_container_banner_%s_(.*)">' % show, requests.get('https://www.vrt.be/vrtnu/a-z/%s/' % show).text)` let regexPattern = "value=\"#parsys_container_banner_" + showName + "_(.*)\">" @@ -205,22 +209,6 @@ struct Show: Hashable, Comparable{ } myseasons.sort() return myseasons - }() - - - init(vrtNu: VRTNu, showName: String, title: String, imageURL: URL) { - self.showURL = URL(string: "https://www.vrt.be/vrtnu/a-z/" + showName)! - self.showName = showName - self.title = title - //TODO: get image urls for shows - self.imageURL = imageURL - self.vrtNu = vrtNu - - } - - func getSeasons() -> [Season]{ - var mutableself = self - return mutableself.seasons } } @@ -238,32 +226,9 @@ extension NSTextCheckingResult { struct VRTNu: Hashable { - lazy var shows: [Show] = { - let regexPattern = "a href=\"/vrtnu/a-z/(.*).relevant" - let imageregexPattern = "data-responsive-image=\".*(jpg|png)" - let titleregexPattern = ".relevant/\">(.*)" - - let data = Just.get("https://www.vrt.be/vrtnu/a-z/").text! - print(data) - - let output = parseData(data: data, regexPattern: regexPattern) - let imageoutput = parseData(data: data, regexPattern: imageregexPattern) - let titleoutput = parseData(data: data, regexPattern: titleregexPattern) - - var show: String - var title: String - var image: String - var myshows: [Show] - myshows = [] - for i in 0 ..< output.count{ - show = output[i].replacingOccurrences(of: ".relevant", with: "").replacingOccurrences(of: "a href=\"/vrtnu/a-z/", with: "") - image = imageoutput[i].replacingOccurrences(of: "https:", with: "").replacingOccurrences(of: "http:", with: "").replacingOccurrences(of: "data-responsive-image=\"", with: "https:") - title = titleoutput[i].replacingOccurrences(of: ".relevant/\">", with: "").replacingOccurrences(of: "", with: "") - myshows.append(Show(vrtNu: self, showName: show, title: title, imageURL: URL(string: image)!)) - } - myshows.sort() - return myshows - }() + let regexPattern = "a href=\"/vrtnu/a-z/(.*).relevant" + let imageregexPattern = "data-responsive-image=\".*(jpg|png)" + let titleregexPattern = ".relevant/\">(.*)" func getToken() -> String { ///token = session.post('https://media-services-public.vrt.be/vualto-video-aggregator-web/rest/external/v1/tokens', headers={'Content-Type': 'application/json'}, data=b'').json()['vrtPlayerToken'] @@ -318,7 +283,25 @@ struct VRTNu: Hashable { } func getShows() -> [Show]{ - var mutableself = self - return mutableself.shows + let data = Just.get("https://www.vrt.be/vrtnu/a-z/").text! + print(data) + + let output = parseData(data: data, regexPattern: regexPattern) + let imageoutput = parseData(data: data, regexPattern: imageregexPattern) + let titleoutput = parseData(data: data, regexPattern: titleregexPattern) + + var show: String + var title: String + var image: String + var myshows: [Show] + myshows = [] + for i in 0 ..< output.count{ + show = output[i].replacingOccurrences(of: ".relevant", with: "").replacingOccurrences(of: "a href=\"/vrtnu/a-z/", with: "") + image = imageoutput[i].replacingOccurrences(of: "https:", with: "").replacingOccurrences(of: "http:", with: "").replacingOccurrences(of: "data-responsive-image=\"", with: "https:") + title = titleoutput[i].replacingOccurrences(of: ".relevant/\">", with: "").replacingOccurrences(of: "", with: "") + myshows.append(Show(vrtNu: self, showName: show, title: title, imageURL: URL(string: image)!)) + } + myshows.sort() + return myshows } }