Prototyping/Download Sample Cut-up Share: Difference between revisions
No edit summary |
|||
(35 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
(Longer term goal: create an Inkscape extension to directly import images from the openclipart site.) | |||
Starting point: Connecting command-line to the creation of a custom Inkscape "effect". | |||
* Command line programs & parsing "arguments" | |||
* Manipulating XML with etree | |||
[[Creating an Inkscape Effect with Python & ElementTree]] | |||
== == | |||
Tools that will be useful: [[Python]], [[lxml.etree]], [[xpath]] | |||
http://www.openclipart.org/docs/api | http://www.openclipart.org/docs/api | ||
Line 5: | Line 18: | ||
wget http://www.openclipart.org/media/feed/rss/woman -O woman.xml | wget http://www.openclipart.org/media/feed/rss/woman -O woman.xml | ||
wget http://www.openclipart.org/media/feed/rss/man -O man.xml | wget http://www.openclipart.org/media/feed/rss/man -O man.xml | ||
== Creating a simple HTML page from the feed == | |||
<source lang="python"> | |||
import codecs, sys, lxml.etree, urllib2 | |||
# Open Live URL | |||
f = urllib2.urlopen("http://www.openclipart.org/media/feed/rss/woman") | |||
# Open the filename given on the command line | |||
# f = codecs.open(sys.argv[1], encoding="utf-8") | |||
# Read in the XML file | |||
doc = lxml.etree.parse(f) | |||
# This is a Python dictionary containing | |||
# the xml "namespaces" that we may use | |||
NS = { | |||
'media': 'http://search.yahoo.com/mrss/', | |||
'dc': 'http://purl.org/dc/elements/1.1/', | |||
'cc': 'http://creativecommons.org/ns#', | |||
'atom': 'http://www.w3.org/2005/Atom', | |||
} | |||
# Loop over the item elements | |||
for item in doc.xpath("//item"): | |||
# NB: the "." at the start of the xpaths | |||
# makes the query relative to the current (context) | |||
# ie the particular item (and not the whole document) | |||
svg = item.xpath(".//enclosure/@url")[0] | |||
thumbnail_url = item.xpath(".//media:thumbnail/@url", namespaces=NS)[0] | |||
creator = item.xpath(".//dc:creator/text()", namespaces=NS)[0] | |||
title = item.xpath(".//title/text()")[0] | |||
link = item.xpath(".//link/text()")[0] | |||
# Output some HTML | |||
print """<div> | |||
<a href="{1}"><img src="{2}" />{0}</a> | |||
</div>""".format(title, link, thumbnail_url) | |||
</source> |
Latest revision as of 13:19, 26 October 2011
(Longer term goal: create an Inkscape extension to directly import images from the openclipart site.)
Starting point: Connecting command-line to the creation of a custom Inkscape "effect".
- Command line programs & parsing "arguments"
- Manipulating XML with etree
Creating an Inkscape Effect with Python & ElementTree
Tools that will be useful: Python, lxml.etree, xpath
http://www.openclipart.org/docs/api
Get some feeds. NB wget's O option (and that's a CAPITAL O), allows to save to a reasonable filename of your choice.
wget http://www.openclipart.org/media/feed/rss/woman -O woman.xml wget http://www.openclipart.org/media/feed/rss/man -O man.xml
Creating a simple HTML page from the feed
import codecs, sys, lxml.etree, urllib2
# Open Live URL
f = urllib2.urlopen("http://www.openclipart.org/media/feed/rss/woman")
# Open the filename given on the command line
# f = codecs.open(sys.argv[1], encoding="utf-8")
# Read in the XML file
doc = lxml.etree.parse(f)
# This is a Python dictionary containing
# the xml "namespaces" that we may use
NS = {
'media': 'http://search.yahoo.com/mrss/',
'dc': 'http://purl.org/dc/elements/1.1/',
'cc': 'http://creativecommons.org/ns#',
'atom': 'http://www.w3.org/2005/Atom',
}
# Loop over the item elements
for item in doc.xpath("//item"):
# NB: the "." at the start of the xpaths
# makes the query relative to the current (context)
# ie the particular item (and not the whole document)
svg = item.xpath(".//enclosure/@url")[0]
thumbnail_url = item.xpath(".//media:thumbnail/@url", namespaces=NS)[0]
creator = item.xpath(".//dc:creator/text()", namespaces=NS)[0]
title = item.xpath(".//title/text()")[0]
link = item.xpath(".//link/text()")[0]
# Output some HTML
print """<div>
<a href="{1}"><img src="{2}" />{0}</a>
</div>""".format(title, link, thumbnail_url)