-
Notifications
You must be signed in to change notification settings - Fork 0
/
sourceforge.py
57 lines (42 loc) · 1.59 KB
/
sourceforge.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/python3
import re
import requests
import xmltodict
from pprint import pprint
from datetime import datetime
from appveyor import FatherApi
from utils import Url
class SourceforgeApi(FatherApi):
rss_source="https://sourceforge.net/projects/%s/rss?path=/"
download_site="https://download.sourceforge.net/"
def __init__(self,project_name):
self.project_name = project_name
self.rssurl=self.rss_source%project_name
self.download_prefix=Url.join(self.download_site,project_name)
def getFileList(self):
req=self.requests_obj.get(self.rssurl)
for file in xmltodict.parse(req.text)["rss"]["channel"]["item"]:
dt=datetime.strptime(file["pubDate"],"%a, %d %b %Y %H:%M:%S UT")
yield {
"file":file["title"],
"date":dt
}
def getDlUrl(self,keyword=[], no_keyword=[], filetype="7z",index=0):
match=0
for file_info in self.getFileList():
if self.filename_check(file_info["file"],keyword,no_keyword,filetype):
if match==index:
dlurl=Url.join(self.download_prefix,file_info["file"].lstrip("/"))
self.version=str(file_info["date"])
return dlurl
else:
match+=1
def getVersion(self):
return self.version
if __name__=="__main__":
jj=SourceforgeApi("sevenzip")
print(jj.getDlUrl(filetype="exe"))
print(jj.getVersion())
#jb=JsonConfig("./tt.json")
#jb.data=dict(jj)
#jb.dumpconfig()