python - Methods within my while Loop not working -
i'm making simple script looks see if favourite youtuber casey neistat has uploaded new video. want script loop on , on see if there new video or not. however, whenever run program continually says there new video, though should recognize there has been no changes 'output.txt' file contains links videos. new python , programming in general, , might simple fix more experienced recognize.
my code follows:
import bs4 import requests import re root_url = 'https://www.youtube.com/' index_url = root_url + 'user/caseyneistat/videos' def getneistatnewvideo(): response = requests.get(index_url) soup = bs4.beautifulsoup(response.text) return [a.attrs.get('href') in soup.select('div.yt-lockup-thumbnail a[href^=/watch]')] def mainloop(): while true: results = str(getneistatnewvideo()) past_results = str(open("output.txt")) if results == past_results: print("no new videos @ time") return true else: print("there new video!") print('...') print('writing new text file') print('...') f = open("output.txt", "w") f.write(results) print('...') print('done writing new text file') print('...') return true mainloop()
calling open(output.txt)
returns file object, not the text within file. calling str
on file object gives description of object, not text. need like
output = open('output.txt') past_results = output.read()
also, looks you're calling str
on output of getneistatnewvideo
list, not want do. guess format of output.txt
bunch of links on separate lines. if that's case, want
results = "\n".join(getneistatnewvideo())
which give single string each link on it's own line. should print output of str
calls see like. so, reason says there new because
results == past_results
is false because of reasons outlined
Comments
Post a Comment