User:Eleanorg/2.1/Placard Generator

From XPUB & Lens-Based wiki
< User:Eleanorg
Revision as of 05:43, 11 November 2012 by Eleanorg (talk | contribs)

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