from ftplib import FTP
import os
import re
import sys
import fnmatch
def FTPDown():
print
print
ftplocation=raw_input("Please Enter the FTP location: ")
print "Connecting to "+ftplocation
try:
myftp=FTP(ftplocation)
except:
print "Could not connect to "+ftplocation
raw_input("--Press any key to return to main menu--")
ClearScreen()
return
print
print "Connected to "+ftplocation
myftp.set_debuglevel(0)
username=raw_input("Please Enter Username: ")
password=raw_input("Please Enter Password: ")
print
print
try:
myftp.login(username,password)
except:
print "Login Failed: Username or Password is incorrect"
myftp.close()
raw_input("--Press any key to return to main menu--")
ClearScreen()
return
ClearScreen()
print "Username and Password successfully verified"
print myftp.getwelcome()
print
fileList = myftp.nlst()
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for filename in targetList:
print "Downloading "+filename
try:
fileOut=open(filename,'wb')
except:
print "couldn't open the output file"
myftp.storlines('RETR '+filename,fileOut.write)
fileOut.close()
myftp.close()
def FTPUp():
print
print
ftplocation=raw_input("Please Enter the FTP location: ")
print "Connecting to "+ftplocation
try:
myftp=FTP(ftplocation)
except:
print "Could not connect to "+ftplocation
raw_input("--Press any key to return to main menu--")
ClearScreen()
return
print
print "Connected to "+ftplocation
myftp.set_debuglevel(0)
username=raw_input("Please Enter Username: ")
password=raw_input("Please Enter Password: ")
print
print
try:
myftp.login(username,password)
except:
print "Login Failed: Username or Password is incorrect"
myftp.close()
raw_input("--Press any key to return to main menu--")
ClearScreen()
return
ClearScreen()
print "Username and Password successfully verified"
print myftp.getwelcome()
print
filePath = os.getcwd()
fileList = os.listdir(filePath)
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for filename in targetList:
fileUp=open(filename,'rb')
print "Uploading "+filename
myftp.storbinary('STOR '+filename, fileUp)
fileUp.close()
myftp.close()
def StripServerComments(wholeFile):
partFile = ""
curLine="1"
inBlock=0
while curLine:
while inBlock:
curLine=wholeFile.readline()
commentPattern = re.compile(r'<!.*preceding.*>')
if commentPattern.search(curLine):
inBlock=0
curLine=wholeFile.readline()
commentPattern = re.compile(r'<!.*following.*>')
if commentPattern.search(curLine):
inBlock=1
else:
commentPattern = re.compile(r'<!.*below.*>')
if commentPattern.search(curLine):
curLine=""
else:
partFile=partFile+curLine
commentPattern = re.compile(r'<!.*above.*>')
if commentPattern.search(curLine):
partFile=""
partFile=partFile+"</HTML>"
return partFile
def InsertLink(wholeFile,target,newURL,linkName):
if target=="visitors":
print "Links may not be inserted after "+target
return wholeFile.read()
partFile = ""
curLine="1"
notFound=1
while curLine:
curLine=wholeFile.readline()
commentPattern = re.compile(r'^<p.*>-?'+target+'.*')
if commentPattern.search(curLine):
notFound=0
partFile=partFile+curLine
curLine=wholeFile.readline()
partFile=partFile+curLine
partFile=partFile+'<p align=center><FONT size=4>~<a href="'+newURL+'">'+linkName+'</a>~</p>\n<BR>\n'
else:
partFile=partFile+curLine
if notFound:
print "The insertion point, "+target+", could not be found. "+wholeFile.name+" was not altered"
else:
print linkName+" successfully inserted into "+wholeFile.name
return partFile
def DeleteLink(wholeFile,target):
if target=="home" or target=="visitors":
print "Target "+target+" may not be deleted. This is a permanent item."
return wholeFile.read()
partFile = ""
curLine="1"
notFound=1
while curLine:
curLine=wholeFile.readline()
commentPattern = re.compile(r'^<p.*>-?'+target+'.*')
if commentPattern.search(curLine):
notFound=0
curLine=wholeFile.readline()
else:
partFile=partFile+curLine
if notFound:
print "The target for deletion, "+target+", was not found. "+wholeFile.name+" unaltered"
else:
print target+" successfully deleted from "+wholeFile.name
return partFile
def ChangeItem(wholeFile,targetItem,newItem):
partFile = ""
curLine="1"
while curLine:
curLine=wholeFile.readline()
commentPattern = re.compile(targetItem)
newLine=commentPattern.sub(newItem,curLine)
partFile=partFile+newLine
return partFile
def MainMenu():
print "HtmlFixer 1.1"
print " Scripted by Tucker A. Beck"
print " For questions/comments email to nax13@yahoo.com"
print
print
print
print
print
print
print
print
print
print
print
menuInput="a"
while menuInput!="9":
print
print "--------------------------------------"
print "1: Insert a new side-link"
print "2: Delete a side-link"
print "3: Clean up server generated comments"
print "4: Replace text block"
print "7: Download files from FTP"
print "8: Upload files to FTP"
print "9: Quit"
print "--------------------------------------"
menuInput=raw_input(" : ")
if menuInput=="1":
InsertMenu()
if menuInput=="2":
DeleteMenu()
if menuInput=="3":
StripFiles()
if menuInput=="4":
ChangeMenu()
if menuInput=="7":
FTPDown()
if menuInput=="8":
FTPUp()
def InsertMenu():
print
print
target=raw_input("Insert after which item? ")
newURL=raw_input("File name for new item? ")
linkName=raw_input("Link title for new item? ")
print
print
filePath=os.getcwd()
fileList = os.listdir(filePath)
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for fileName in targetList:
oldFile=open(fileName)
newFile=InsertLink(oldFile,target,newURL,linkName)
oldFile.close()
saveout=sys.stdout
fileOut=open(fileName,'w')
sys.stdout=fileOut
print newFile
fileOut.close()
sys.stdout=saveout
def DeleteMenu():
print
print
target=raw_input("Delete which item? ")
print
print
filePath=os.getcwd()
fileList = os.listdir(filePath)
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for fileName in targetList:
oldFile=open(fileName)
newFile=DeleteLink(oldFile,target)
oldFile.close()
saveout=sys.stdout
fileOut=open(fileName,'w')
sys.stdout=fileOut
print newFile
fileOut.close()
sys.stdout=saveout
def StripFiles():
ClearScreen()
filePath=os.getcwd()
fileList = os.listdir(filePath)
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for fileName in targetList:
oldFile=open(fileName)
newFile=StripServerComments(oldFile)
oldFile.close()
saveout=sys.stdout
fileOut=open(fileName,'w')
sys.stdout=fileOut
print newFile
fileOut.close()
sys.stdout=saveout
print "Stripped server generated comments from "+fileName
def ChangeMenu():
print
print
targetItem=raw_input("Change what text? ")
newItem=raw_input("Change to what? ")
print
print
filePath=os.getcwd()
fileList = os.listdir(filePath)
targetList= [fileName for fileName in fileList if fnmatch.fnmatch(fileName,'*.htm')]
for fileName in targetList:
oldFile=open(fileName)
newFile=ChangeItem(oldFile,targetItem,newItem)
oldFile.close()
saveout=sys.stdout
fileOut=open(fileName,'w')
sys.stdout=fileOut
print newFile
fileOut.close()
sys.stdout=saveout
print "Updated '"+targetItem+"' to '"+newItem+"' in "+fileName
def ClearScreen():
for i in range(30):
print ""
ClearScreen()
MainMenu()
ClearScreen()
print "Thanks for using HTMLFixer by Tucker Beck"
print "For questions or comments, please contact nax13@yahoo.com"
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
ext=raw_input("--press enter to exit--")