# JAD2JAR Creator PRO Third Edition, 0.2.0 ALPHA
'''
JAD2JAR Creator PRO Third Edition, 0.2.0 ALPHA
Created by Deusdies
Using Python 3 syntax
Program downloads JAR file based on the given JAR file
TODO:
- GUI in Qt
- Opening the default webbrowser if JAR file cannot be found
- Progress bar (if command-line edition retained)
- with GUI do: extract more info from the JAD file, such as size, etc.
'''
__author__ = 'Deusdies'
__version__ = '0.2ALPHA'
import os, sys, urllib.request, urllib.error
def find_url(file): # function that extracts the URL from JAD file
with open(file) as file:
for line in file:
infourl = line.find("MIDlet-Info-URL")
jarurl = line.find("MIDlet-Jar-URL")
if infourl == 0:
k = line.replace("MIDlet-Info-URL: ","")
k = k.strip("\n")
elif jarurl == 0:
g = line.replace("MIDlet-Jar-URL: ","")
g = g.strip("\n")
# needs a procedure on what to do in case infourl and jarurl are not actually found (this is rarely the case)
uri = k + g
return uri
def downloadFile(URL,file='j2jdownload.jar'): # function that actually downloads the file
metainfo = urllib.request.urlopen(URL).info()
metainfo = str(metainfo)
if "java-archive" in metainfo: # detects if the URL extracted is an actual JAR file, rather than HTML (since some
print("Beginning download... \n") # developers put an address to their web page where JAR URL should be)
with open(file,'wb') as f:
r=urllib.request.urlopen(URL).read()
f.write(r)
print("Download finished! File saved as " + file + " in the selected directory")
else:
print("The URL is most likely not pointing to a real JAR file.")
print("ERROR: Cannot download JAR file. Suggestion: copy/paste the URL provided below. Program now exiting.")
print(URL)
# here it'd be awesome if I could code so that the browser is opened automatically
sys.exit(1) # exits
def checkFiles(jadfile): # checks if inputted includes extension and also if the file exists
if not ".jad" in jadfile:
r = jadfile + ".jad"
if not os.path.exists(r):
print("Could not find JAD file")
sys.exit(1)
return r
else:
r = jadfile
return r
def validUrl(yorn): # yorn is y or no, questioning the user if the extracted URL looks valid
if "Y" in yorn:
return True
elif "N" or "n" or "no" in yorn:
return False
else:
print("No valid answer given!")
sys.exit(1)
print ('''\n\n\n ##########################################################
#WELCOME TO JAD2JAR CREATOR 0.1.1 ALPHA PRO THIRD EDITION#
##########################################################
\n''')
if len(sys.argv) < 2 and sys.argv != "help": # parsing arguments given
jadfile = input("\nInput the name of the JAD file in the current directory\n\n>>> ")
r = checkFiles(jadfile)
jarfile = input("\nInput the name of the _JAR_ file (dl'ed file) in the current directory\n\n>>> ")
if not ".jar" in jarfile:
jarfile = jarfile + ".jar"
elif len(sys.argv) == 3 and sys.argv != "help":
jadfile = sys.argv[1]
r = checkFiles(jadfile)
jarfile = sys.argv[2]
if not ".jar" in jarfile:
jarfile = jarfile + ".jar"
elif sys.argv[1] == "help":
print("Usage: j2jarcreator.exe <jadfile> <jarfile>\nExample: j2jarcreator.exe operaMobile.jad operaDownloaded.jar")
sys.exit(1)
else:
print("Usage: j2jarcreator.exe <jadfile> <jarfile>\nExample: j2jarcreator.exe operaMobile.jad operaDownloaded.jar")
sys.exit(1)
print("This is the URL I extracted:\n")
URL = find_url(r)
print(URL)
yorn = input("\nDoes this look like a valid URL to you? Capital Y or N\n\n>>> ")
if validUrl(yorn) == True:
try:
downloadFile(URL, jarfile)
except urllib.error.URLError: # raises URLError in case network problems, or similar
print("Cannot download file, check your internet connection!")
sys.exit(1)
elif validUrl(yorn) == False:
print("Sorry, but I couldn't extract the URL. :(")
sys.exit(1)
else:
pass