User:Eleanorg/2.1/Placard Generator: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
No time to make a placard for that demo? Generate one from the latest slogans courtesy of Socialist Worker: <br /> | No time to make a placard for that demo? Generate one from the latest slogans courtesy of Socialist Worker: <br /> | ||
http://pzwart3.wdka.hro.nl/~egreenhalgh/urllib/socialistScrape1.html | http://pzwart3.wdka.hro.nl/~egreenhalgh/urllib/socialistScrape1.html | ||
[[file:scrapedPlacards1.jpg]] | |||
Revision as of 14:35, 19 November 2012
No time to make a placard for that demo? Generate one from the latest slogans courtesy of Socialist Worker:
http://pzwart3.wdka.hro.nl/~egreenhalgh/urllib/socialistScrape1.html
Media still peddle lies
Get yr slogans
Scrape slogans from SW
#!/usr/bin/python
#-*- coding:utf-8 -*-
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
url = "http://www.socialistworker.co.uk/section.php?id=19"
webpage = urlopen(url).read()
# parse it with Beautiful Soup to extract p tags
soup = BeautifulSoup(webpage)
# get content of the <a> tags inside <h4 class="hilihead">
headingSoup = soup.findAll('h4', { "class" : "hilihead" })
# print text within first two h4 tags
#for i in range(0,2):
# print headingSoup[i].contents[0].contents[0]
# append slogans to a list for later use
slogans = []
for i in range(0,2):
slogan = headingSoup[i].contents[0].contents[0]
slogans.append(slogan)
print slogans
web-only implementation
Look at it here: http://pzwart3.wdka.hro.nl/~egreenhalgh/urllib/socialistScrape1.html Scrapes slogans & displays them to the user in the browser. Will eventually have a 'print' button to generate a pdf file.
.html
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {background-color: #333;}
div {width:800px; margin:20px auto 40px auto; padding: 100px;border:1px solid #bbb;color: #fff; font-size: 900%; line-height:90%;text-align:center; font-family: Arial, Helvetica, sans-serif;
</style>
</head>
<body>
<div>
<span style="font-size: 100px; font-weight: bold;">
Need a placard? Get one here.
</span>
<br />
<form action="../cgi-bin/urllib/scrapedPlacards/socialistScrape1.cgi" name="inputForm">
<input type="submit" value="Get placard!">
</form>
</div>
</body>
</html>
.cgi
#!/usr/bin/python
#-*- coding:utf-8 -*-
import cgi
import cgitb; cgitb.enable()
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
url = "http://www.socialistworker.co.uk/section.php?id=19"
webpage = urlopen(url).read()
# parse it with Beautiful Soup to extract p tags
soup = BeautifulSoup(webpage)
# get content of the <a> tags inside <h4 class="hilihead">
headingSoup = soup.findAll('h4', { "class" : "hilihead" })
# print text within first two h4 tags
#for i in range(0,2):
# print headingSoup[i].contents[0].contents[0]
# append text to a list for later use
slogans = []
for i in range(0,2):
slogan = headingSoup[i].contents[0].contents[0]
slogans.append(slogan)
# print one of them onscreen
htmlHeader = """<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {background-color: #333;}
div {background-color:#fff;width:800px; margin:20px auto 40px auto; padding: 100px;border:1px solid #bbb;font-size: 900%; line-height:90%;text-transform:uppercase;font-weight:bold;text-align:center; font-family: Arial, Helvetica, sans-serif;}
</style>
</head>
<body>"""
htmlFooter = """
</body>
</html>"""
print "Content-Type: text/html"
print
print htmlHeader
print "<div>"
print slogans[0]
print "</div>"
print htmlFooter
making PDFs
Anyone know a good way of making nice looking pdfs?
The internets suggested making a .ps file and using Ghostscript's ps2pdf function to convert to .pdf.
generate a .ps file
This contains instructions on fonts etc.
%!
/Helvetica findfont 300 scalefont setfont
300 300 moveto
(Hello, world!) show
showpage
convert to .pdf
In bash, do something like this:
ps2pdf test.ps test.pdf
This also works:
find . -type f -name "*.ps" | while read ONELINE; do ps2pdf "$ONELINE" "$(echo "$ONELINE" | sed 's/.ps/.pdf/g')"; done
example of browser-based pdf generation
Go here, click link, get your custom placard: http://pzwart3.wdka.hro.nl/~egreenhalgh/cgi-bin/urllib/scrapedPlacards/socialistScrapePdf.cgi
(not working atm because www-data not able to write files - asked evo to change permissions.)
#!/usr/bin/python
#-*- coding:utf-8 -*-
import cgi
import cgitb; cgitb.enable()
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
import os
#url = "http://www.socialistworker.co.uk/section.php?id=19"
#webpage = urlopen(url).read()
## parse it with Beautiful Soup to extract p tags
#soup = BeautifulSoup(webpage)
## get content of the <a> tags inside <h4 class="hilihead">
#headingSoup = soup.findAll('h4', { "class" : "hilihead" })
## append slogan to a list
#slogans = []
#for i in range(0,2):
# slogan = headingSoup[i].contents[0].contents[0]
# slogans.append(slogan)
#mySlogan = slogans[0]
mySlogan = "yo world"
# make .ps with slogan in
f = open("../../../urllib/placard.ps", "w")
ps = """%!
/Helvetica findfont 72 scalefont setfont
10 600 moveto
(""" + mySlogan + """) show
showpage"""
f.write(ps)
f.close()
print ps
# convert to .pdf with a syscall
command = "ps2pdf ../../../urllib/placard.ps ../../../urllib/placard.pdf"
os.popen(command)
# give user link to download pdf
htmlHeader = """<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {background-color: #333;}
div {width:800px; margin:20px auto 40px auto; padding: 100px;border:1px solid #bbb;font-size: 900%; line-height:90%;text-transform:uppercase;font-weight:bold;text-align:center; font-family: Arial, Helvetica, sans-serif;}
a {text-decoration: none; color: #fff;}
</style>
</head>
<body>"""
htmlFooter = """
</body>
</html>"""
print "Content-Type: text/html"
print
print htmlHeader
print "<div>"
print "<a href='../../../urllib/placard.pdf'>MAKE ME A PLACARD</a>"
print "</div>"
print htmlFooter