unable to compile python program using jython
-
I'm trying to compile a python program using jython and it's throwing below error C:\jython2.2.1>jython test.py Traceback (innermost last): (no code object) at line 0 File "test.py", line 30 html = html if html else download(url, user_agent).read() ^ SyntaxError: invalid syntax Below is my python program. Please let me know how to resolve this. import sys import re import urllib2 import urlparse from optparse import OptionParser # regular expression data for each website VIDEO_DATA = [ ('youtube.com', '%7C(.*?videoplayback.*?)%2C'), ('metacafe.com', '&mediaURL=(.*?)&'), ] # default user agent to use when downloading USER_AGENT = 'pytube' # size of file to download CHUNK_SIZE = 1024 * 1024 def scrape(url, html=None, user_agent=None, output=None): """Scrape video location from given url. Use html instead of downloading if passed. Download file to output if passed. Return url of video if found, else None """ netloc = urlparse.urlsplit(url).netloc for domain, video_re in VIDEO_DATA: if domain in netloc: html = html if html else download(url, user_agent).read() search = re.search(video_re, html) if search: flash_url = urllib2.unquote(search.group(1)) if output: print "Downloading flash to `%s'" % output, #open(output, 'wb').write(download(flash_url, user_agent).read()) req = download(flash_url, user_agent) # testing with keyword in python with open(output, 'wb') as fp: chunk = True while chunk: chunk = req.read(CHUNK_SIZE) if chunk: fp.write(chunk) #fp.flush() print '.', sys.stdout.flush() print return flash_url else: raise PyTubeException('Failed to locate video regular expression in downloaded HTML') raise PyTubeException('URL did not match available domains') def download(url, user_agent=None): """Download url and return data """ headers = {'User-Agent' : user_agent} req = urllib2.Request(url, None, headers) return urllib2.urlopen(req) class PyTubeException(Exception): pass if __name__ == '__main__': # parse command line options parser = OptionParser(usage='usage: %prog, [-o <file.flv> -a <user_agent> -s -h] url') parser.add_option('-o', '--output', dest='output', help='Output file to download flash file to. If this is not specified file will not be downloaded.') parser.add_option('-s', '--sites', action='store_true', default=False, dest='sites', help='Display sites that pytube supports, then quit.') parser.add_option('-a', '--agent', dest='user_agent', default=USER_AGENT, help='Set user-agent for downloads.') options, args = parser.parse_args() if options.sites: print '\n'.join(domain for (domain, reg) in VIDEO_DATA) else: if args: flash_url = scrape(args[0], user_agent=options.user_agent, output=options.output) if flash_url: print flash_url else: print 'Need to pass the url of the video you want to download' parser.print_help()
-
Answer:
Jython 2.2.1 is (AFAIK) equivalent to Cpython 2.2.1 as far as syntax is concerned. The line that causes the problem uses the ternary operator which was introduced later. the solution is to replace it with an if statement. if not html: html = download(url, user_agent).read() That should take care of that syntax error. There is also a with clause that you will need to replace. with open(output, 'wb') as fp: chunk = True while chunk: chunk = req.read(CHUNK_SIZE) if chunk: fp.write(chunk) #fp.flush() print '.', sys.stdout.flush() You can replace this with try: fp = open(output, 'w') chunk = True while chunk: chunk = req.read(CHUNK_SIZE) if chunk: fp.write(chunk) #fp.flush() print '.', sys.stdout.flush() finally: fp.close()
Sukumar at Stack Overflow Visit the source
Related Q & A:
- how to zip similar files using python?Best solution by Stack Overflow
- How to add image to QTextBrowser using Python?Best solution by Stack Overflow
- How do I make a python web program that is on a ubuntu server allow access to the server?Best solution by Yahoo! Answers
- What's the output from this program using fork() and why?Best solution by Stack Overflow
- How do you program using Java?Best solution by wikihow.com
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.