
16.12.2009, 18:09
|
|
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме: 1032476
Репутация:
39
|
|
Сообщение от whexp
При нажатии на кнопку создаешь и запускаешь поток, в котором и добавляешь элементы. Если не справишься, то днем, когда прийду напишу примерчик.
Напиши пожалуйста!
thread.start_new_thread(test,(link,))
не работает. функция test не вызывается по какой-то причине.
PHP код:
import urllib
import pygtk
pygtk.require('2.0')
import gtk
import re
import random
import os
import urlparse
import time
import threading
link=""
pressed=False
def printG(log):
label.set_text(label.get_text()+'\n'+log)
return
def run():
global link
printG("Please wait")
startHTMLdownload(link)
parsed_string=IOreg()
downloadImages(parsed_string,link)
def startDownloadG(button,textbox,label):
global link
link = textbox.get_text()
if link[0:7]=="http://":
link=link
else:
link="http://"+str(link)
mtimer=threading.Timer(0.1,run)
mtimer.start()
def startHTMLdownload(link):
try:
temp_file=file("temp","r")
except:
temp_file=file("temp","w")
temp_file.close()
temp_file=file("temp","w")
printG("Downloading source code")
urllib.urlretrieve(link,"temp")
temp_file.close()
printG("Source code downloaded")
def HTMLinitializator():
link=raw_input("Enter URL:")
if link[0:7]=="http://":
startHTMLdownload(link)
else:
link="http://"+str(link)
startHTMLdownload(link)
return link
def regexper(source_string,preg_mask):
parsed_string=re.findall(preg_mask, source_string)
return parsed_string
def IOreg():
ofile=file("save.txt","w")
ifile=file("temp","r")
regexp="src=[\'|\"]([^\"]+[gif|png|jpg|jpeg|bmp|img])[\'|\"]"
source_string=ifile.read()
parsed_string = regexper(source_string,regexp)
for image in parsed_string:
ofile.write(str(image+'\n'))
ofile.close()
ifile.close()
return parsed_string
def downloadImages(img_array,link):
parsed_url=urlparse.urlparse(link)
if img_array.__len__():
printG("Creating directory.")
try:
os.mkdir(parsed_url.netloc)
except:
printG("Directory already exist")
counter=0
printG("Start download")
for image in img_array:
if image[0:4]=="http":
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
save_file=file(image_file_name,"w")
save_file.write("")
printG("Start downloading:"+str(image))
try:
urllib.urlretrieve(image, image_file_name)
except:
printG("Error")
continue
counter=counter+1
printG("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
elif image[0:2]=="./":
absoluteLink=link+image[1:image.__len__()]
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
save_file=file(image_file_name,"w")
save_file.write("")
printG("Start downloading:"+str(absoluteLink))
try:
urllib.urlretrieve(absoluteLink, image_file_name)
except:
printG("Error")
continue
counter=counter+1
printG("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
elif image[0:2]=="..":
printG("Relative path is not support.")
continue
elif image[0]=="/":
absoluteLink=link+image
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
save_file=file(image_file_name,"w")
save_file.write("")
printG("Start downloading:"+str(absoluteLink))
try:
urllib.urlretrieve(absoluteLink, image_file_name)
except:
printG("Error")
continue
counter=counter+1
printG("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
else:
absoluteLink=link+"/"+image
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
save_file=file(image_file_name,"w")
save_file.write("")
printG("Start downloading:"+str(absoluteLink))
try:
urllib.urlretrieve(absoluteLink, image_file_name)
except:
printG("Error")
continue
counter=counter+1
printG("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
#main()
window=gtk.Window()
vbox=gtk.VBox()
label=gtk.Label()
textbox=gtk.Entry()
btn_main=gtk.Button("Start")
window.add(vbox)
vbox.add(textbox)
vbox.add(btn_main)
vbox.add(label)
window.show_all()
window.connect("delete-event",lambda a,b: gtk.main_quit())
btn_main.connect("clicked",startDownloadG,textbox,label)
gtk.main()
Вот код. Тут у меня при нажатии на кновку start стартует таймер, который через 0,1 с выполняет функцию run() - а эта функция уже инициализирует все остальные функции. Но по какой-то причине функция run не запускается при включенной граф.оболочке программы.
P.S. Прошу прощения за говнокод, просто изначально это была консольная утилита. И чтобы не писать все заново, я просто отредактировал старый код. Есть много лишнего. Да, и не смейтесь над функцией regexper, я вначале её написал, и только потом осознал что за бред я сделал 
Последний раз редактировалось Chubakur; 16.12.2009 в 21:42..
|
|
|