Skip to content

Commit a8efa82

Browse files
committed
Merge pull request adamn#29 from ventura/master
Added option for treating URL as url-encoded
2 parents b8434ad + 11c28dd commit a8efa82

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

scripts/webkit2png

+13-10
Original file line numberDiff line numberDiff line change
@@ -42,28 +42,28 @@ VERSION="20091224"
4242
LOG_FILENAME = 'webkit2png.log'
4343
logger = logging.getLogger('webkit2png');
4444

45-
def init_qtgui(display=None, style=None, qtargs=[]):
45+
def init_qtgui(display=None, style=None, qtargs=None):
4646
"""Initiates the QApplication environment using the given args."""
4747
if QApplication.instance():
4848
logger.debug("QApplication has already been instantiated. \
4949
Ignoring given arguments and returning existing QApplication.")
5050
return QApplication.instance()
51-
51+
5252
qtargs2 = [sys.argv[0]]
53-
53+
5454
if display:
5555
qtargs2.append('-display')
5656
qtargs2.append(display)
5757
# Also export DISPLAY var as this may be used
5858
# by flash plugin
5959
os.environ["DISPLAY"] = display
60-
60+
6161
if style:
6262
qtargs2.append('-style')
6363
qtargs2.append(style)
64-
65-
qtargs2.extend(qtargs)
66-
64+
65+
qtargs2.extend(qtargs or [])
66+
6767
return QApplication(qtargs2)
6868

6969

@@ -75,7 +75,7 @@ if __name__ == '__main__':
7575
proxy_url = urlparse.urlparse(os.environ.get('http_proxy'))
7676
proxy = QNetworkProxy(QNetworkProxy.HttpProxy, proxy_url.hostname, proxy_url.port)
7777
QNetworkProxy.setApplicationProxy(proxy)
78-
78+
7979
# Parse command line arguments.
8080
# Syntax:
8181
# $0 [--xvfb|--display=DISPLAY] [--debug] [--output=FILENAME] <URL>
@@ -113,6 +113,8 @@ if __name__ == '__main__':
113113
help="Render output on a transparent background (Be sure to have a transparent background defined in the html)", default=False)
114114
parser.add_option("", "--style", dest="style",
115115
help="Change the Qt look and feel to STYLE (e.G. 'windows').", metavar="STYLE")
116+
parser.add_option("", "--encoded-url", dest="encoded_url", action="store_true",
117+
help="Treat URL as url-encoded", metavar="ENCODED_URL", default=False)
116118
parser.add_option("-d", "--display", dest="display",
117119
help="Connect to X server at DISPLAY.", metavar="DISPLAY")
118120
parser.add_option("--debug", action="store_true", dest="debug",
@@ -154,8 +156,8 @@ if __name__ == '__main__':
154156
print >> sys.stderr, "Error - Unable to find '%s' for -x/--xvfb option" % newArgs[0]
155157
sys.exit(1)
156158

157-
# Prepare outout ("1" means STDOUT)
158-
if options.output == None:
159+
# Prepare output ("1" means STDOUT)
160+
if options.output is None:
159161
options.output = sys.stdout
160162
else:
161163
options.output = open(options.output, "w")
@@ -181,6 +183,7 @@ if __name__ == '__main__':
181183
renderer.format = options.format
182184
renderer.grabWholeWindow = options.window
183185
renderer.renderTransparentBackground = options.transparent
186+
renderer.encodedUrl = options.encoded_url
184187

185188
if options.scale:
186189
renderer.scaleRatio = options.ratio

webkit2png/webkit2png.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ def __init__(self,**kwargs):
114114
self.ignoreConfirm = kwargs.get('ignoreConfirm', True)
115115
self.ignorePrompt = kwargs.get('ignorePrompt', True)
116116
self.interruptJavaScript = kwargs.get('interruptJavaScript', True)
117+
self.encodedUrl = kwargs.get('encodedUrl', False)
117118

118119
# Set some default options for QWebPage
119120
self.qWebSettings = {
@@ -264,10 +265,10 @@ def _load_page(self, url, width, height, timeout):
264265
cancelAt = time.time() + timeout
265266
self.__loading = True
266267
self.__loadingResult = False # Default
267-
# TODO: fromEncoded() needs to be used in some situations. Some
268-
# sort of flag should be passed in to WebkitRenderer maybe?
269-
#self._page.mainFrame().load(QUrl.fromEncoded(url))
270-
self._page.mainFrame().load(QUrl(url))
268+
if self.encodedUrl:
269+
self._page.mainFrame().load(QUrl.fromEncoded(url))
270+
else:
271+
self._page.mainFrame().load(QUrl(url))
271272
while self.__loading:
272273
if timeout > 0 and time.time() >= cancelAt:
273274
raise RuntimeError("Request timed out on %s" % url)

0 commit comments

Comments
 (0)