User:Eleanorg/1.2/Forbidden Pixels/Receiving URL where data is hosted: Difference between revisions

From XPUB & Lens-Based wiki
(Created page with "The site will need to ask participants for the URL of the pixel data they're hosting.This is my first time doing form processing in python: the html form asks for the url; it pas...")
 
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
The site will need to ask participants for the URL of the pixel data they're hosting.This is my first time doing form processing in python: the html form asks for the url; it passes it to a simple script. Next step is for that script to add it to the list of URLs, and to check whether there is a string there matching the regex.
The site will need to ask participants for the URL of the pixel data they're hosting.This is my first time doing form processing in python: the html form asks for the url; it passes it to a simple script. Next step is for that script to add it to the list of URLs, and to check whether there is a string there matching the regex.
Go here to test the input form: http://pzwart3.wdka.hro.nl/~egreenhalgh/inputForm.html


==URL input form==
==URL input form==
Line 25: Line 28:
</source>
</source>


==Python script grabbing URL submitted==
==Basic Python script grabbing URL submitted==
Saved as .cgi within cgi-bin on server.
Saved as .cgi within cgi-bin on server.


Line 56: Line 59:
   </body>
   </body>
</html>"""
</html>"""
</source>
==Python script grabbing inputted URL then scraping it==
<source lang="python">
#!/usr/bin/python
#-*- coding:utf-8 -*-
import cgi, re, urllib2
import cgitb; cgitb.enable()
# scrapes pixel data string from a URL submitted by user in an html form; assigns the result to appropriate variables.
#------------- get URL from input form -------------------#
form = cgi.FieldStorage() # Grabs whatever input comes from form
url = form['url'].value # assigns form's url field input to var 'url'
#------------- scrape webpage----------------------------#
text = urllib2.urlopen(url).read() # reads page at the specified URL
#-------------- extract the string with regex------------#
# string is in format:
# Pixel position:500.001; Color:rgba(222,221,217,1)
for x in re.findall(r"Pixel position:(\d\d\d).(\d\d\d)\;\ Color:(rgba\(.*\))", text):
    match = str(x)    # only matches what is within capture parentheses. How to match whole string, even when bits within it are captured?
    xPos = str(x[0]) 
    yPos = str(x[1])
    color= str(x[2])         
#-------------- print match -----------------------------#
htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  <body>"""
print "Content-Type: text/html"
print
print htmlHeader
if xPos:
  print
  print "x position is: " + xPos + "<br />"
  print "y position is: " + yPos + "<br />"
  print "color is: " + color
else: # not working - how to avoid 'match is undefined' error if regex fails to match anything?
  print "this pixel is not currently hosted"
print """
  </body>
</html>"""
</source>
==Python script writing submitted URL to a text file, for later use==
<source lang="python">
#!/usr/bin/python
#-*- coding:utf-8 -*-
import cgi
import cgitb; cgitb.enable()
# recieves a url from user input, saves it to a text file
#------------- get URL from input form -------------------#
form = cgi.FieldStorage() # Grabs whatever input comes from form
url = form.getvalue("url", "http://ox4.org/~nor/trials/hostedString.html")  # assigns form's input to var 'url'. url on the right is a default value that will be printed for testing if nothing is recieved from the form
#------------- save url to a text file --------------------#
f = open("data/urls.txt", 'a')  # opens text file in apend mode - 'a'
f.write(url + '\n')
f.close()
#------------- print acknowledgement ---------------------#
htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  <body>"""
print "Content-Type: text/html"
print
print htmlHeader
print "Thanks, url submitted. The pixel hosted there will be added to the image soon."
print """
  </body>
</html>"""
   
</source>
== Save URL for later use; make system call to trigger image editing script ==
<source lang="python">
#!/usr/bin/python
#-*- coding:utf-8 -*-
import cgi, os, subprocess
import cgitb; cgitb.enable()
# recieves url from inputForm.html and saves the submitted url as a new line in urls.txt
#------------- get URL from input form -------------------#
form = cgi.FieldStorage() # Grabs whatever input comes from form
url = form.getvalue("url", "http://ox4.org/~nor/trials/hostedString.html")  # assigns form's input to var 'url'. url on the right is a default value that will be printed for testing if nothing is recieved from the form
#------------- save url to a text file --------------------#
f = open("data/urls.txt", 'w')  # opens text file in write mode
f.write(url + '\n') # write url then newline
f.close()
#-----------run scrapeNdraw script and pipe to bash--------#
command = "./scrapeDraw.cgi | bash" # script called here must be executable!
os.popen(command, 'r').read()
#------------- print acknowledgement ----------------------#
htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
        <link <link rel="stylesheet" href="../../pixels.css">
  </head>
  <body>"""
print "Content-Type: text/html"
print
print htmlHeader
print """
      <div class="container">
      Thanks, url submitted.
      </div>
      """
print """
  </body>
</html>"""
   
</source>
</source>

Latest revision as of 13:56, 31 March 2012

The site will need to ask participants for the URL of the pixel data they're hosting.This is my first time doing form processing in python: the html form asks for the url; it passes it to a simple script. Next step is for that script to add it to the list of URLs, and to check whether there is a string there matching the regex.


Go here to test the input form: http://pzwart3.wdka.hro.nl/~egreenhalgh/inputForm.html

URL input form

<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  
<body>

  <form action="form.cgi" name="inputForm">  <!--pushes form input to form.py script -->
    Paste url: 
    <input name="url">
    <input type="submit">

  </form>
</body>

</html>

Basic Python script grabbing URL submitted

Saved as .cgi within cgi-bin on server.

#!/usr/bin/python

import cgi
import cgitb; cgitb.enable() #what do these do?



htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  <body>"""

print "Content-Type: text/html" //important - won't print in browser without these 2 lines
print 
print htmlHeader

form =  cgi.FieldStorage()	//Grabs whatever input comes from form
url = form['url'].value		// assigns form's url field input to var 'url'
print url
 
print """
  </body>
</html>"""

Python script grabbing inputted URL then scraping it

#!/usr/bin/python
#-*- coding:utf-8 -*-

import cgi, re, urllib2
import cgitb; cgitb.enable()

 
# scrapes pixel data string from a URL submitted by user in an html form; assigns the result to appropriate variables.
 

#------------- get URL from input form -------------------#

form = cgi.FieldStorage()		# Grabs whatever input comes from form
url = form['url'].value			# assigns form's url field input to var 'url'

#------------- scrape webpage----------------------------#

text = urllib2.urlopen(url).read()	# reads page at the specified URL

 
#-------------- extract the string with regex------------#

# string is in format: 
# Pixel position:500.001; Color:rgba(222,221,217,1)
 
for x in re.findall(r"Pixel position:(\d\d\d).(\d\d\d)\;\ Color:(rgba\(.*\))", text):
    match = str(x)    # only matches what is within capture parentheses. How to match whole string, even when bits within it are captured?
    xPos = str(x[0])  
    yPos = str(x[1])
    color= str(x[2])           
 
#-------------- print match -----------------------------#

htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  <body>"""

print "Content-Type: text/html"
print 
print htmlHeader
 
if xPos:
  print 
  print "x position is: " + xPos + "<br />"
  print "y position is: " + yPos + "<br />"
  print "color is: " + color
else:					# not working - how to avoid 'match is undefined' error if regex fails to match anything?
  print "this pixel is not currently hosted"
 


print """
  </body>
</html>"""

Python script writing submitted URL to a text file, for later use

#!/usr/bin/python
#-*- coding:utf-8 -*-

import cgi
import cgitb; cgitb.enable()

 
# recieves a url from user input, saves it to a text file
 

#------------- get URL from input form -------------------#

form = cgi.FieldStorage()		# Grabs whatever input comes from form
url = form.getvalue("url", "http://ox4.org/~nor/trials/hostedString.html")  # assigns form's input to var 'url'. url on the right is a default value that will be printed for testing if nothing is recieved from the form

#------------- save url to a text file --------------------#

f = open("data/urls.txt", 'a')  		# opens text file in apend mode - 'a'
f.write(url + '\n')		
f.close()

#------------- print acknowledgement ---------------------#
 

htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
    <style type="text/css">
    </style>
  </head>
  <body>"""


print "Content-Type: text/html"
print 
print htmlHeader
print "Thanks, url submitted. The pixel hosted there will be added to the image soon."

print """
   </body>
</html>"""

Save URL for later use; make system call to trigger image editing script

#!/usr/bin/python
#-*- coding:utf-8 -*-

import cgi, os, subprocess
import cgitb; cgitb.enable()

 
# recieves url from inputForm.html and saves the submitted url as a new line in urls.txt
 

#------------- get URL from input form -------------------#

form = cgi.FieldStorage()			# Grabs whatever input comes from form
url = form.getvalue("url", "http://ox4.org/~nor/trials/hostedString.html")  # assigns form's input to var 'url'. url on the right is a default value that will be printed for testing if nothing is recieved from the form

#------------- save url to a text file --------------------#

f = open("data/urls.txt", 'w')  		# opens text file in write mode
f.write(url + '\n')				# write url then newline
f.close()

#-----------run scrapeNdraw script and pipe to bash--------#

command = "./scrapeDraw.cgi | bash"		# script called here must be executable!
os.popen(command, 'r').read()


#------------- print acknowledgement ----------------------#
 

htmlHeader = """<!DOCTYPE html>
<html>
  <head>
    <title>A form talking to a python script</title>
        <link <link rel="stylesheet" href="../../pixels.css">
  </head>
  <body>"""


print "Content-Type: text/html"
print 
print htmlHeader
print """
      <div class="container">
      Thanks, url submitted.
      </div>
       """

print """
   </body>
</html>"""