dotfiles/scripts/bin/installers/blackmagic-parser.py

50 lines
1.7 KiB
Python

import json
import os
import re
import urllib.request
# getJSONData returns JSON data from Blackmagic Design's website.
def getJSONData():
with urllib.request.urlopen('https://www.blackmagicdesign.com/api/support/us/downloads.json') as url:
return json.loads(url.read().decode())
# getDownloads() returns a list of downloads.
def getDownloads():
return getJSONData()['downloads']
# getResolveStudioDownloads() returns a list of DaVinci Resolve Studio downlaods.
def getResolveStudioDownloads():
return [d for d in getDownloads() if 'davinci-resolve-and-fusion' in d['relatedFamilies'][0] and
'Studio' in d['name'] and 'Resolve' in d['name']]
# filterOnlyLinuxSupport() filters a list of downloads to only ones that
# support Linux.
def filterOnlyLinuxSupport(downloads):
return [d for d in downloads if 'Linux' in d['platforms']]
# getLinuxURL() returns the Linux download info.
def getLinuxURL(download):
return download['urls']['Linux'][0]
# getURLId() returns the download id.
def getURLId(url):
return url['downloadId']
# getURLVersion() returns the url version number.
def getURLVersion(url):
if 'Beta' in url['downloadTitle']:
beta = re.search('Beta \\d+', url['downloadTitle'])
if beta:
beta = re.search('\\d+', beta.group()).group()
else:
beta = '99'
return '{}.{}.{}.{}'.format(url['major'], url['minor'], url['releaseNum'], beta)
# getDownloadId() returns downlaod id hash.
def getDownloadId(download):
return download['id']
for d in filterOnlyLinuxSupport(getResolveStudioDownloads()):
linux = getLinuxURL(d)
print(getURLVersion(linux), getURLId(linux), getDownloadId(d))