Creative Commons JSON
Returns json instead of xml from creative commons api.
flask api that returns cc license depending on what licence is requested.
add svg/eps along with current png.
88x31 image currently - add 88x15 images.
add public domain/cc zero to the api
In [4]:
import requests
import json
import xmltodict
from flask import Flask, request
from flask_restful import Resource, Api
In [5]:
app = Flask(__name__)
In [6]:
api = Api(app)
In [7]:
@app.route('/')
def cclicence():
memename = request.json.get('memename')
return(requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial={}&derivatives=y'.format(request.args['commerical'])))
In [ ]:
@app.route('/cc', methods=['GET', 'POST'])
def query_example():
if request.method == 'POST': #this block is only entered when the form is submitted
countrycode = request.form.get('countrycode')
statecode = request.form.get('statecode')
courtcode = request.form.get('courtcode')
#<input type="radio" name="results" value="10" checked> 10<br>
vslist = list()
req = requests.get('http://www.austlii.edu.au/cgi-bin/feed/{}/cases/{}/{}/'.format(countrycode, statecode, courtcode))
#req = requests.get('http://www.austlii.edu.au/cgi-bin/feed/au/cases/nsw/NSWSC/')
bsreq = req.text
xreq = xmltodict.parse(bsreq)
lenchan = len(xreq['rss']['channel'])
dalens = len(xreq['rss']['channel']['item'])
for xr in range(0, dalens):
#print(xreq['rss']['channel']['item'][xr])
#print(xreq['rss']['channel']['item'][xr]['title'])
#print(xreq['rss']['channel']['item'][xr]['link'])
reqlink = xreq['rss']['channel']['item'][xr]['link']
reqcourt = requests.get(reqlink)
reqc = reqcourt.text
soupcour = bs4.BeautifulSoup(reqc, 'lxml')
courtit = soupcour.find('title')
courtext = courtit.text
repcourt = courtext.replace('[', ',')
backcourt = repcourt.replace(']', ',')
newcourt = backcourt.replace('(', ',')
oldcourt = newcourt.replace(')', ',')
sosplit = (oldcourt.split(','))
#print(sosplit[:-4])
casename = (''.join(sosplit[:-4]))
casesplit = casename.split('v')
try:
#print(casesplit)
vslist.append(casesplit)
#dicthis = dict({'party1' : (casesplit[0]), 'party2' : casesplit[1]})
except 'IndexError':
pass
#dicthis = dict({'party1' : (casesplit[0]), 'party2' : casesplit[1]})
#print(sosplit[-2:-1])
#casedate = (''.join(sosplit[-2:-1]))
#bstxt = bs4.BeautifulSoup(reqsearch.text)
#sometxt = (bstxt.find_all('li', {'class' : 'multi'}))
#print(sometxt)
#for somet in sometxt:
# print(somet.text)
return '''
{}
'''.format(vslist)
return '''
<!DOCTYPE html>
<html>
<head>
<title>Search legal materials</title>
<script src="https://unpkg.com/vue"></script>
<script src="node_modules/vue/vue.min.js"></script>
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css"/>
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<img src="static/header.jpg"><br>
<h1>Search Recent legal materials API</h1><br>
<p>Example: au, nsw, NSWSC</p><br>
<p>This returns party1 and party2 in recent cases.</p>
<form method="POST">
<fieldset>
<legend>Search legal materials:</legend>
countrycode: <input type="text" name="countrycode"><br>
statecode : <input type="text" name="statecode"><br>
courtcode : <input type="text" name="courtcode"><br>
<input type="submit" value="Submit"><br>
</fieldset>
</form></body>'''
In [ ]:
memename = request.json.get('memename')
toptext = request.json.get('toptext')
toptext = toptext.upper()
bottomtext = request.json.get('bottomtext')
bottomtext = bottomtext.upper()
user= request.json.get('user')
timnow = arrow.now()
timstr = timnow.timestamp
galdirdir = '/home/{}/artctrl/meme/galleries/{}/'.format(myusr, user)
#with open('/home/{}/rbnz-tech-backup/artctrl/meme/galleries/default')
img = Image.open('/home/{}/artctrl/meme/galleries/default/{}.jpg'.format(myusr, memename))
imageSize = img.size
# find biggest font size th90t works
fontSize = int(imageSize[1]/5)
font = ImageFont.truetype("/home/{}/Downloads/impact.ttf".format(myusr), fontSize)
topTextSize = font.getsize(toptext)
bottomTextSize = font.getsize(bottomtext)
while topTextSize[0] > imageSize[0]-20 or bottomTextSize[0] > imageSize[0]-20:
fontSize = fontSize - 1
font = ImageFont.truetype("/home/{}/Downloads/impact.ttf".format(myusr), fontSize)
topTextSize = font.getsize(toptext)
bottomTextSize = font.getsize(bottomtext)
# find top centered position for top text
topTextPositionX = (imageSize[0]/2) - (topTextSize[0]/2)
topTextPositionY = 0
topTextPosition = (topTextPositionX, topTextPositionY)
# find bottom centered position for bottom text
bottomTextPositionX = (imageSize[0]/2) - (bottomTextSize[0]/2)
bottomTextPositionY = imageSize[1] - bottomTextSize[1] -10
bottomTextPosition = (bottomTextPositionX, bottomTextPositionY)
draw = ImageDraw.Draw(img)
outlineRange = int(fontSize/15)
for x in range(-outlineRange, outlineRange+1):
for y in range(-outlineRange, outlineRange+1):
draw.text((topTextPosition[0]+x, topTextPosition[1]+y), toptext, (0,0,0), font=font)
draw.text((bottomTextPosition[0]+x, bottomTextPosition[1]+y), bottomtext, (0,0,0), font=font)
draw.text(topTextPosition, toptext, (255,255,255), font=font)
draw.text(bottomTextPosition, bottomtext, (255,255,255), font=font)
img.save('/home/{}/artctrl/meme/galleries/{}/{}-{}.jpg'.format(myusr, user, memename, timstr))
#img.save("/home/{}/memetest/galleries/{}/{}.jpg".format(myusr, usrfolz, gtm['id']))
memedict = dict({'meme' : memename, 'toptext' : toptext.upper(), 'bottomtext' : bottomtext.upper(), 'imagepath' : '/home/{}/rbnz-tech-backup/artctrl/meme/galleries/{}/{}-{}.jpg'.format(myusr, user, memename, timstr)})
return(jsonify(memedict))
In [113]:
app = Flask(__name__)
api = Api(app)
#CCBY CCBYNCSA CCBYSA CCBYND CCBYNCND CCBYND CCZERO CCPUBDOMAIN
class ccby(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=y&derivatives=y')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by.svg'})})})
return licdic
class ccbync(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=n&derivatives=y')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nc.svg'})})})
return licdic
class ccbyncsa(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/licenses/by-nc-sa/4.0/')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc-sa.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc-sa.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nc-sa.svg'})})})
return licdic
class ccbysa(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/licenses/by-sa/4.0/')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-sa.svg'})})
return licdic
class ccbync(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=n&derivatives=y')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nc.svg'})})})
return(licdic)
class ccbyncnd(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=n&derivatives=n')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc-nd.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc-nd.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nc-nd.svg'})})})
return licdic
class ccbynd(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=y&derivatives=n')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['html']['a'][1]['#text']
ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/nd.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nd.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-nd.svg'})})})
return licdic
class cczero(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/publicdomain/zero/1.0/')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['license-name']
ccimglic = xmpar['result']['html']['p']['a']['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/cc-zero.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/cc-zero.svg'})})})
return licdic
class ccpubdom(Resource):
def get(self):
ccdev = requests.get('http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/publicdomain/mark/1.0/')
xmpar = xmltodict.parse(ccdev.text)
ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
cchtmtxt = xmpar['result']['license-name']
ccimglic = xmpar['result']['html']['p']['a']['img']['@src']
licdic = dict({'url' : ccabtlic, 'text' : cchtmtxt, 'img' :
dict({'fullbutton' : dict({'png' : ccimglic, 'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-publicdomain.svg'}),
'halfbutton' : dict({'png' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/png/cc-publicdomain.png',
'svg' : 'http://mirrors.creativecommons.org/presskit/buttons/80x15/svg/cc-publicdomain.svg'})})})
return licdic
api.add_resource(ccby, '/by')
api.add_resource(ccbync, '/bync')
api.add_resource(ccbynd, '/bynd')
api.add_resource(ccbyncnd, '/byncnd')
api.add_resource(ccbysa, '/bysa')
api.add_resource(ccbyncsa, '/byncsa')
api.add_resource(cczero, '/zero')
api.add_resource(ccpubdom, '/publicdomain')
if __name__ == '__main__':
app.run(host = '0.0.0.0')
In [3]:
#licstand = requests.get('http://api.creativecommons.org/rest/1.5/license/standard')
In [7]:
#dictlic = xmltodict.parse(licstand.text)
In [21]:
#lenfield = len(dictlic['licenseclass']['field'])
In [36]:
#for lenf in range(0, lenfield):
# print(dictlic['licenseclass']['field'][lenf]['label'])
#print(dictlic['licenseclass']['field'][lenf]['@id'])
#print(dictlic['licenseclass']['field'][lenf])
#print(dictlic['licenseclass']['field'][lenf]['description'])
In [ ]:
#ShareAlike
In [134]:
#ccdev = requests.get('http://api.creativecommons.org/rest/dev/license/standard/get?commercial=n&derivatives=y')
In [135]:
#xmpar = xmltodict.parse(ccdev.text)
In [136]:
#xmpar['result']['rdf']['rdf:RDF']
Out[136]:
In [128]:
#xmpar['result']['rdf']['rdf:RDF']['@xmlns']
Out[128]:
In [129]:
#xmpar['result']['rdf']['rdf:RDF']['Work']
Out[129]:
In [130]:
#xmpar['result']['rdf']['rdf:RDF']['License']
Out[130]:
In [120]:
#ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
In [121]:
#ccabtlic
Out[121]:
In [92]:
#for perm in xmpar['result']['rdf']['rdf:RDF']['License']['permits']:
# print(perm['@rdf:resource'])
In [93]:
#xmpar['result']['html']['#text']
Out[93]:
In [107]:
#cchtmtxt = xmpar['result']['html']['a'][1]['#text']
In [108]:
#ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
In [109]:
#http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by.svg
In [111]:
#licdic = dict({'licurl' : ccabtlic, 'lictext' : cchtmtxt, 'ccimg' : ccimglic})
In [112]:
#licdic
Out[112]:
In [138]:
#ccdev = requests.get('http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/licenses/by-nc-sa/4.0/')
In [141]:
#reqccsa.text
#xmpar = xmltodict.parse(reqccsa.text)
#ccabtlic = xmpar['result']['rdf']['rdf:RDF']['License']['@rdf:about']
#cchtmtxt = xmpar['result']['html']['a'][1]['#text']
#ccimglic = xmpar['result']['html']['a'][0]['img']['@src']
#licdic = dict({'licurl' : ccabtlic, 'lictext' : cchtmtxt, 'ccimg' : ccimglic})
In [142]:
#licdic
Out[142]:
In [ ]:
#http://api.creativecommons.org/rest/dev/simple/chooser
In [ ]:
#http://api.creativecommons.org/rest/dev/details?license-uri=creativecommons.org
#http://api.creativecommons.org/rest/dev/details?license-uri=http://creativecommons.org/licenses/by-nc-sa/4.0/