1+ from requests import get
2+ from bs4 import BeautifulSoup as bs
3+ from re import search
4+ from datetime import datetime
5+ from babel .dates import format_datetime
6+ from json import dump
7+
8+ pynews = {}
9+
10+ with open ("bibliotecas.list" ) as f :
11+ libs = f .read ().split ("\n " )
12+
13+ for lib in libs :
14+ hist_page = get (f"https://pypi.org/project/{ lib .lower ()} /#history" )
15+ html = bs (hist_page .text , "html.parser" )
16+ title = html .title .decode ()
17+ title = title [title .find (">" ) + 1 : title .find (" " )].title ()
18+
19+ div_release = html .find (
20+ "div" ,
21+ {"class" : "release release--latest release--current" }
22+ )
23+ if div_release :
24+ p_date = div_release .find (
25+ "p" ,
26+ {"class" : "release__version-date" }
27+ )
28+
29+ p_ver = div_release .find (
30+ "p" ,
31+ {"class" : "release__version" }
32+ )
33+ else :
34+ continue
35+
36+ if p_date and p_ver :
37+ str_release = p_date .text .strip ()
38+ str_version = p_ver .text .strip ()
39+ else :
40+ continue
41+
42+ last_release = datetime .strptime (str_release , "%b %d, %Y" )
43+ if last_release .month == datetime .now ().month :
44+ ver_page = get (f"https://pypi.org/project/{ lib } /{ str_version } " )
45+ html = bs (ver_page .text , "html.parser" )
46+ project_page = html .find ("a" , {"class" : "vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" })["href" ]
47+
48+ pynews [title ] = {
49+ "release" : format_datetime (
50+ last_release ,
51+ format = "dd.MMMM.yyyy" ,
52+ locale = "pt_BR"
53+ ).title ().replace ("." , " de " ),
54+ "version" : str_version ,
55+ "project_page" : project_page
56+ }
57+
58+ with open ("pynews.json" , "w" ) as f :
59+ dump (pynews , f )
60+
61+ print ("Pynews executado com sucesso!" )
62+
0 commit comments