· 8 years ago · Dec 20, 2017, 11:10 AM
1import os.path #et kontrollida, kas fail on olemas
2import json #et dictionary lugeda faili sisse
3import requests #et linki saada
4from bs4 import BeautifulSoup #html koodi lugeda
5import smtplib #emaili saatmine
6
7def kontrolliFilmiDicti(failinimi):
8 if os.path.exists(failinimi):
9 fail = open(failinimi, 'r',encoding='utf-8')
10 filmiDict = json.loads(fail.read())
11 fail.close()
12 #kui faili pole, siis teeme tühja faili
13 else:
14 filmiDict = {}
15 return filmiDict
16
17def saadaMeil(saatjaMeil, saatjaParool, saajaMeil):
18 msg2 = ''
19 for film in filmid:
20 nimi = film.select_one('.list-item-desc-title a').text
21 kpv = film.select_one('.event-releaseDate b').text
22 zanrid = film.select_one('.genre-names b').text
23 youtubeLink = film.select_one('.btn-group a')
24
25 if youtubeLink:
26 youtube = youtubeLink.get('href') #päris youtube link
27 else:
28 youtube = None
29
30 uuid = film.select_one('.list-item-desc-title a').get('href') #url id, et eristada filme lihtsalt
31
32 if uuid not in filmiDict:
33 if youtube:
34 msg2 += ('\n\n Apollos on uus film: ' + nimi + ', mis esilinastub ' + str(kpv) + ' ja mille traileri link on: ' + str(youtube) + '. Filmi zanr on: ' + zanrid + '.')
35 else:
36 msg2 += ('\n\n Apollos on uus film: ' + nimi + ', mis esilinastub ' + str(kpv) + '. Filmi zanr on: ' + zanrid + '.')
37 filmiDict[uuid] = {"nimi":nimi, "kuupäev":kpv, "zanr":zanrid, "treiler":youtube}
38 msg1 = 'Tere!\n'
39 msg3 = '\n\nHead filmielamust!'
40 msg = msg1 + msg2 + msg3
41 if msg2 != '':
42 server = smtplib.SMTP('smtp.gmail.com', 587)
43 server.starttls()
44 server.login(saatjaMeil, saatjaParool)
45 server.sendmail(saatjaMeil, saajaMeil, msg.encode('utf-8'))
46 server.quit()
47
48#Loeme andmed sisse html koodina
49linkApollo = requests.get('https://www.apollokino.ee/soon')
50supp = BeautifulSoup(linkApollo.text, 'html.parser')
51#Otsime koha üles, kus asuvad meie filmid ja nende info
52filmid = supp.select(".ContentBlockComingSoon .EventList-container > div")
53#kontrollime, kas fail on juba olemas ja loeme faili sisse juhul, kui see on olemas
54kontrolliFilmiDicti('filmid.txt')
55
56#NB! Saatja meil peab olema @gmail.com lõpuga!
57saadaMeil('lehtmetslane@gmail.com', 'mees123GG', 'meeliste@mail.com')
58
59json_string = json.dumps(filmiDict) #teeb dictionary oma jamaks, et see ilusti stringina faili panna
60
61fail = open('filmid.txt', 'w', encoding='utf-8')
62fail.write(json_string)
63fail.close()