Modified:
trunk/cli.py
trunk/gui.py
trunk/main.py
Log:
cleared code, gui and cli still very dirty, atm only youtube works
Modified: trunk/cli.py
==============================================================================
--- trunk/cli.py (original)
+++ trunk/cli.py Sat Apr 5 14:10:36 2008
@@ -41,19 +41,42 @@
# <Tranlations stuff>
-gettext.install("gvdown", "po", unicode=True)
+gettext.install(
+ "gvdown",
+ "po",
+ unicode=True
+ )
# </Translation stuff>
-parser = OptionParser(usage=_("Usage: %prog [options] URL1 [URL2] [...]"))
+parser = OptionParser(
+ usage=_("Usage: %prog [options] URL1 [URL2] [...]")
+ )
parser.remove_option("-h")
-parser.add_option("-h", "--help", action="help", help=_("show this
help message and exit"))
-
-parser.add_option("-d", "--destination", dest="destination",
- help=_("save videos in DEST"), metavar="DEST", default=".")
-
-parser.add_option("-s", "--save-as", dest="saveAs", help=_("save video
file as FILE"), metavar="FILE", default=None)
+parser.add_option("-h",
+ "--help",
+ action="help",
+ help=_("show this help message and exit")
+ )
+
+parser.add_option(
+ "-d",
+ "--destination",
+ dest="destination",
+ help=_("save videos in DEST"),
+ metavar="DEST",
+ default="."
+ )
+
+parser.add_option(
+ "-s",
+ "--save-as",
+ dest="saveAs",
+ help=_("save video file as FILE"),
+ metavar="FILE",
+ default=None
+ )
(options, args) = parser.parse_args()
@@ -82,9 +105,15 @@
if options.saveAs != None:
saveAs = options.saveAs
else:
- saveAs = os.path.join(options.destination, data.data[2])
+ saveAs = os.path.join(
+ options.destination,
+ data.data[2]
+ )
print 'Saving file as "%(file)s"...' % {"file" : saveAs}
- down = fdownload(data.data[0], saveAs)
+ down = fdownload(
+ data.data[0],
+ saveAs
+ )
down.start()
progress = down.downloaded()
last_progress = progress
@@ -98,10 +127,18 @@
print _("Filesize: %(filesize)s KB") % {"filesize" : filesize}
while True:
progress_dif = progress-last_progress
- kb_per_sec = filesize*(progress_dif/100)
- downloaded_kb = (progress/100)*filesize
+ kb_per_sec = filesize*(
+ progress_dif/100
+ )
+ downloaded_kb = (
+ progress/100
+ )*filesize
left_kb = filesize-downloaded_kb
- kb_per_sec_asfloat = "%.2f" % (float(kb_per_sec))
+ kb_per_sec_asfloat = "%.2f" % (
+ float(
+ kb_per_sec
+ )
+ )
if kb_per_sec < 1:
if last_ETA == 0.00:
ETA = "?"
@@ -110,7 +147,15 @@
last_ETA = ETA # if kb_per_sec is 0 and something
was already downloaded, print the last ETA
seconds_string = _("seconds") # gettext + this one
line under me...
if sys.platform == "linux2":
- sys.stdout.write("\r%.2f \033[6G %% | %s \033[18G
KB/s | ETA: %s \033[38G%s" % (float(progress),
str(kb_per_sec_asfloat).rjust(7), ETA, seconds_string)) # makes it look
more static
+ sys.stdout.write("\r%.2f \033[6G %% | %s \033[18G
KB/s | ETA: %s \033[38G%s" % (
+
float(progress),
+
str(
+
kb_per_sec_asfloat
+
).rjust(7),
+
ETA,
+
seconds_string
+
)
+ ) # makes it look more static
sys.stdout.flush()
last_progress = progress
sleep(1)
@@ -120,14 +165,30 @@
putWinString = True
if(progress == 100.0):
sys.stdout.write(_("\rDownload finished...
\n"))
- if config.getboolean("general", "convert") and data.data[3]:
+ if config.getboolean(
+ "general",
+ "convert"
+ ) and data.data[3]:
print _("Converting file...")
- output = fconvert(saveAs,
config.get("general", "convert_filename_extension"), config.get("general", "convertcmd"))
+ output = fconvert(
+ saveAs,
+ config.get(
+ "general",
+ "convert_filename_extension"
+ ),
+ config.get(
+ "general",
+ "convertcmd"
+ )
+ )
output.start()
while output.status == -1:
sleep(0.2)
print _("Converted file.")
- if config.getboolean("general", "delete_source_file_after_converting"):
+ if config.getboolean(
+ "general",
+ "delete_source_file_after_converting"
+ ):
os.remove(saveAs)
print _("Deleted input (.flv) file")
break
Modified: trunk/gui.py
==============================================================================
--- trunk/gui.py (original)
+++ trunk/gui.py Sat Apr 5 14:10:36 2008
@@ -66,17 +66,19 @@
class gui:
def __init__(self):
self.wTree = gtk.glade.XML(gladefile)
- dic = {"closedSomehow" : self.closedSomehow,
- "download_single" : self.download_single,
- "menu_help_info_clicked" : self.menu_help_info_clicked,
- "on_aboutdialog_delete" : self.on_aboutdialog_delete,
- "menu_file_open_clicked" : self.menu_file_open_clicked,
- "fc_open_file_clicked" : self.fc_open_clicked,
- "fc_cancel_clicked" : self.fc_cancel_clicked,
- "on_filechooserdialog_delete" : self.on_filechooserdialog_delete,
- "menu_file_settings_clicked" : self.menu_file_settings_clicked,
- "on_swindow_delete" : self.on_swindow_delete,
- "swindow_close_clicked" : self.swindow_close_clicked}
+ dic = {
+ "closedSomehow" : self.closedSomehow,
+ "download_single" : self.download_single,
+ "menu_help_info_clicked" : self.menu_help_info_clicked,
+ "on_aboutdialog_delete" : self.on_aboutdialog_delete,
+ "menu_file_open_clicked" : self.menu_file_open_clicked,
+ "fc_open_file_clicked" : self.fc_open_clicked,
+ "fc_cancel_clicked" : self.fc_cancel_clicked,
+ "on_filechooserdialog_delete" : self.on_filechooserdialog_delete,
+ "menu_file_settings_clicked" : self.menu_file_settings_clicked,
+ "on_swindow_delete" : self.on_swindow_delete,
+ "swindow_close_clicked" : self.swindow_close_clicked
+ }
self.wTree.signal_autoconnect(dic)
self.config = configuration()
@@ -84,26 +86,57 @@
self.listdownloading = False
- if not os.path.isdir(self.config.get("general", "save_videos_in")):
+ if not os.path.isdir(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ ):
try:
- os.mkdir(self.config.get("general", "save_videos_in"))
+ os.mkdir(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ )
except OSError:
- print _("Could not create the directory where the
videos shall be saved in (specified in %(configfile)s)! Check
permissions.") % {"configfile" : os.path.join(userhome, ".gvdownrc")}
+ print _("Could not create the directory where the
videos shall be saved in (specified in %(configfile)s)! Check
permissions.") % {"configfile" : os.path.join(
+ userhome,
+ ".gvdownrc"
+ ) }
sys.exit(1)
- if not folder_is_writable(self.config.get("general", "save_videos_in")):
+ if not folder_is_writable(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ ):
print _("Cannot write to video output directoy! Check
permissions or change the directory in %(configfile)s") %
{"configfile" : os.path.join(userhome, ".gvdownrc")}
sys.exit(1)
- def closedSomehow(self, widget, event = None):
+ def closedSomehow(
+ self,
+ widget,
+ event = None
+ ):
gtk.main_quit()
- def download_single(self, widget, event = None):
+ def download_single(
+ self,
+ widget,
+ event = None
+ ):
entry_url = self.wTree.get_widget("entry_url")
pb = self.wTree.get_widget("dprogressbar")
mainDownload_button = self.wTree.get_widget("mainDownload_button")
mainClose_button = self.wTree.get_widget("mainClose_button")
url = entry_url.get_text()
- os.chdir(self.config.get("general", "save_videos_in"))
+ os.chdir(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ )
pb.set_fraction(0)
pb.set_text(_("Fetching video information..."))
if url == "":
@@ -121,9 +154,18 @@
sleep(0.01)
gtk.main_iteration_do(True)
if data.status == 0:
- saveAs =
os.path.join(self.config.get("general", "save_videos_in"), data.data[2])
+ saveAs = os.path.join(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ ),
+ data.data[2]
+ )
print "Saving file as \"%(filename)s\"..." %
{"filename" : saveAs}
- down = fdownload(data.data[0], data.data[2])
+ down = fdownload(
+ data.data[0],
+ data.data[2]
+ )
down.start()
pb.set_fraction(0)
pb.set_text(_("Downloading video..."))
@@ -142,16 +184,32 @@
gtk.main_iteration_do(True)
pb.set_fraction(1)
pb.set_text(_("Download finished."))
- if self.config.getboolean("general", "convert") and data.data[3]:
+ if self.config.getboolean(
+ "general",
+ "convert"
+ ) and data.data[3]:
pb.set_text(_("Converting file"))
- output = convert(saveAs,
self.config.get("general", "convert_filename_extension"), self.config.get("general", "convertcmd"))
+ output = convert(
+ saveAs,
+ self.config.get(
+ "general",
+ "convert_filename_extension"
+ ),
+ self.config.get(
+ "general",
+ "convertcmd"
+ )
+ )
output.start()
while output.status == -1:
gtk.main_iteration_do(False)
sleep(0.01)
gtk.main_iteration_do(True)
pb.set_text(_("Converted file."))
- if self.config.getboolean("general", "delete_source_file_after_converting"):
+ if self.config.getboolean(
+ "general",
+ "delete_source_file_after_converting"
+ ):
os.remove(saveAs)
print _("Deleted input (.flv) file")
else:
@@ -162,33 +220,53 @@
##
- def menu_help_info_clicked(self, widget, event = None):
+ def menu_help_info_clicked(
+ self,
+ widget,
+ event = None
+ ):
aboutdialog = self.wTree.get_widget("aboutdialog")
aboutdialog.show()
- def on_aboutdialog_delete(self, widget, event):
+ def on_aboutdialog_delete(
+ self,
+ widget,
+ event
+ ):
aboutdialog = self.wTree.get_widget("aboutdialog")
aboutdialog.hide()
return True
##
- def menu_file_open_clicked(self, widget):
+ def menu_file_open_clicked(
+ self,
+ widget
+ ):
fc = self.wTree.get_widget("filechooserdialog")
fc.set_current_folder(userhome)
fc.show()
- def on_filechooserdialog_delete(self, widget, event):
- print "fcdelete"
+ def on_filechooserdialog_delete(
+ self,
+ widget,
+ event
+ ):
fc = self.wTree.get_widget("filechooserdialog")
fc.hide()
return True
- def fc_cancel_clicked(self, widget): # Clicked on button 'cancel'
in filechooserdialog
+ def fc_cancel_clicked(
+ self,
+ widget
+ ): # Clicked on button 'cancel' in filechooserdialog
fc = self.wTree.get_widget("filechooserdialog")
fc.hide()
- def fc_open_clicked(self, widget):
+ def fc_open_clicked(
+ self,
+ widget
+ ):
if self.listdownloading == False:
self.download_list()
@@ -198,7 +276,12 @@
pb = self.wTree.get_widget("dprogressbar")
mainDownload_button = self.wTree.get_widget("mainDownload_button")
mainClose_button = self.wTree.get_widget("mainClose_button")
- os.chdir(self.config.get("general", "save_videos_in"))
+ os.chdir(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ )
fc.hide()
pb.set_fraction(0)
chosen_list = fc.get_filename()
@@ -207,7 +290,10 @@
mainDownload_button.set_sensitive(False)
mainClose_button.set_sensitive(False)
pb.set_text(_("Downloading a list..."))
- file = open(chosen_list, "r")
+ file = open(
+ chosen_list,
+ "r"
+ )
i = 0
successful = 0 # videos downloaded successfully
while True:
@@ -228,9 +314,18 @@
sleep(0.01)
gtk.main_iteration_do(True)
if data.status == 0:
- saveAs =
os.path.join(self.config.get("general", "save_videos_in"), data.data[2])
+ saveAs = os.path.join(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ ),
+ data.data[2]
+ )
print _("Saving file as \"%(filename)s\"...") %
{"filename" : saveAs}
- down = fdownload(data.data[0], data.data[2]) #
(http://*.*/*, *.flv)
+ down = fdownload(
+ data.data[0], # http://*.*/*
+ data.data[2] # .flv
+ )
down.start()
pb.set_text(_("Downloading video %(number)s") %
{"number" : v_no})
progress = down.downloaded()/100
@@ -249,9 +344,22 @@
pb.set_fraction(1)
pb.set_text(_("Finished download #%(number)s") %
{"number" : v_no})
successful += 1
- if self.config.getboolean("general", "convert") and data.data[3]:
+ if self.config.getboolean(
+ "general",
+ "convert"
+ ) and data.data[3]:
pb.set_text(_("Converting file"))
- output = convert(saveAs,
self.config.get("general", "convert_filename_extension"), self.config.get("general", "convertcmd"))
+ output = convert(
+ saveAs,
+ self.config.get(
+ "general",
+ "convert_filename_extension"
+ ),
+ self.config.get(
+ "general",
+ "convertcmd"
+ )
+ )
output.start()
while output.status == -1:
gtk.main_iteration_do(False)
@@ -274,7 +382,10 @@
##
- def menu_file_settings_clicked(self, widget):
+ def menu_file_settings_clicked(
+ self,
+ widget
+ ):
swindow = self.wTree.get_widget("settingswindow")
sfcb = self.wTree.get_widget("sfcb") # settings filechooser button
convertbutton = self.wTree.get_widget("convertbutton")
@@ -283,19 +394,51 @@
deletesourcefilebutton = self.wTree.get_widget("deletesourcefilebutton")
sfcb.set_local_only(True)
sfcb.set_show_hidden(False)
- sfcb.set_current_folder(self.config.get("general", "save_videos_in"))
- convertbutton.set_active(self.config.getboolean("general", "convert"))
- convertcmdentry.set_text(self.config.get("general", "convertcmd"))
- fextension_entry.set_text(self.config.get("general", "convert_filename_extension"))
- deletesourcefilebutton.set_active(self.config.getboolean("general", "delete_source_file_after_converting"))
+ sfcb.set_current_folder(
+ self.config.get(
+ "general",
+ "save_videos_in"
+ )
+ )
+ convertbutton.set_active(
+ self.config.getboolean(
+ "general",
+ "convert"
+ )
+ )
+ convertcmdentry.set_text(
+ self.config.get(
+ "general",
+ "convertcmd"
+ )
+ )
+ fextension_entry.set_text(
+ self.config.get(
+ "general",
+ "convert_filename_extension"
+ )
+ )
+ deletesourcefilebutton.set_active(
+ self.config.getboolean(
+ "general",
+ "delete_source_file_after_converting"
+ )
+ )
swindow.show()
- def on_swindow_delete(self, widget, event):
+ def on_swindow_delete(
+ self,
+ widget,
+ event
+ ):
swindow = self.wTree.get_widget("settingswindow")
swindow.hide()
return True
- def swindow_close_clicked(self, widget):
+ def swindow_close_clicked(
+ self,
+ widget
+ ):
sfcb = self.wTree.get_widget("sfcb")
swindow = self.wTree.get_widget("settingswindow")
convertcmdentry = self.wTree.get_widget("convertcmdentry")
@@ -304,22 +447,50 @@
deletesourcefilebutton = self.wTree.get_widget("deletesourcefilebutton")
outputdir = sfcb.get_filename()
if convertbutton.get_active():
- self.config.set("general", "convert", "yes")
+ self.config.set(
+ "general",
+ "convert",
+ "yes"
+ )
else:
- self.config.set("general", "convert", "no")
+ self.config.set(
+ "general",
+ "convert",
+ "no"
+ )
convertcmd = convertcmdentry.get_text()
- self.config.set("general", "convertcmd", convertcmd)
- self.config.set("general", "convert_filename_extension", fextension_entry.get_text())
+ self.config.set(
+ "general",
+ "convertcmd",
+ convertcmd
+ )
+ self.config.set(
+ "general",
+ "convert_filename_extension",
+ fextension_entry.get_text()
+ )
deletesourcefile = deletesourcefilebutton.get_active()
if deletesourcefile:
- self.config.set("general", "delete_source_file_after_converting", "yes")
+ self.config.set(
+ "general",
+ "delete_source_file_after_converting",
+ "yes"
+ )
else:
- self.config.set("general", "delete_source_file_after_converting", "no")
+ self.config.set(
+ "general",
+ "delete_source_file_after_converting",
+ "no"
+ )
self.config.write_config()
if not folder_is_writable(outputdir):
print _("Cannot write to video output folder. Choose another.")
else:
- self.config.set("general", "save_videos_in", outputdir)
+ self.config.set(
+ "general",
+ "save_videos_in",
+ outputdir
+ )
self.config.write_config()
swindow.hide()
Modified: trunk/main.py
==============================================================================
--- trunk/main.py (original)
+++ trunk/main.py Sat Apr 5 14:10:36 2008
@@ -32,6 +32,7 @@
import httplib
import re
from urllib import urlencode
+from urlparse import urlparse
import urllib2
import threading
import time
@@ -42,23 +43,42 @@
# <Tranlations stuff>
-gettext.install("gvdown", "po", unicode=True)
+gettext.install(
+ "gvdown",
+ "po",
+ unicode=True
+ )
# </Translation stuff>
class fdownload(threading.Thread): # not used in this file, but by the
other interfaces
- def __init__(self, url, file):
- self.file = open(file,'wb')
+ def __init__(
+ self,
+ url,
+ file
+ ):
+
+ self.file = open(
+ file,
+ 'wb'
+ )
self.url = url
threading.Thread.__init__(self)
self.arived_len = 0
self.content_len = 100
- self.downloaded = lambda: 100.0*self.arived_len/int(self.content_len)
- self.filesize=int(self.content_len)/1024 # in KB
+ self.downloaded = lambda: 100.0*self.arived_len/int(
+ self.content_len
+ )
+ self.filesize=int(
+ self.content_len
+ )/1024 # in KB
def run(self):
req = urllib2.Request(self.url)
- req.add_header('User-Agent', '(g)vdown (http://vdown.googlecode.com)')
+ req.add_header(
+ 'User-Agent',
+ '(g)vdown (http://vdown.googlecode.com)'
+ )
con = urllib2.urlopen(req)
self.content_len = con.info()['Content-length']
arived_len = 0
@@ -73,7 +93,12 @@
"""
Convert video files with user-specified command
"""
- def __init__(self, input, filename_extension, command):
+ def __init__(
+ self,
+ input,
+ filename_extension,
+ command
+ ):
threading.Thread.__init__(self)
self.status = -1
self.input = input
@@ -83,80 +108,145 @@
"""
Start converting
"""
- self.output = re.sub(".flv$", self.filename_extension, self.input)
+ self.output = re.sub(
+ ".flv$",
+ self.filename_extension,
+ self.input
+ )
final_cmd = []
for i in self.command.split():
- final_cmd.append(i.replace("%i", self.input).replace("%o", self.output))
- output = subprocess.Popen(final_cmd, stdout=subprocess.PIPE).communicate()[0]
+ final_cmd.append(
+ i.replace(
+ "%i",
+ self.input
+ ).replace(
+ "%o",
+ self.output
+ )
+ )
+ output = subprocess.Popen(
+ final_cmd,
+ stdout=subprocess.PIPE
+ ).communicate()[0]
self.status = 0
+def grep(
+ pattern,
+ context
+ ):
+ patternprog = re.compile(pattern)
+ for line in context:
+ a_match = patternprog.search(line)
+ if (a_match):
+ return line
+
class get_data(threading.Thread):
"""
Fetch information
- FIXME: make this a bit prettier
"""
- def __init__(self, url):
+ def __init__(
+ self,
+ url
+ ):
threading.Thread.__init__(self)
self.status = -1
- self.url = url.replace("www.stage6.com", "stage6.divx.com").replace("stage6.com", "stage6.divx.com")
- self.data = [None, None, None, None]
+ self.url = url
+ self.data = [
+ None, # download link
+ None, # title
+ None, # filename
+ None # is this already converted? (e.g. as .avi)
+ ]
+ self.regex = {
+
"youtube" : "(http://)?(www.)?youtube.com/watch\?v=([A-Za-z0-9-_]*)(&.*|$)"
+ }
def run(self):
- if re.match("(http://)?stage6.divx.com/.*/video/[0-9]*/.*",
self.url) != None: # if stage6 video
- matchMe =
re.match("(http://)?stage6.divx.com/.*/video/([0-9]*)/(.*)", self.url)
- video_id = matchMe.group(2)
- WANTEDLINK="http://video.stage6.com/%s/.divx" % (video_id)
- VIDEO_FILENAME=re.sub("$", ".divx", matchMe.group(3)) #
add .divx at the end
- self.status = 0
- self.data = [WANTEDLINK, video_id, VIDEO_FILENAME, False]
+ try: # now we can do everything we want and everything is
catched by this (please don't kill me for that)
+ if re.match(
+ self.regex["youtube"],
+ self.url
+ ) != None:
+ video_id = re.match(
+ self.regex["youtube"],
+ self.url
+ ).group(3)
+ SITE = urlparse(self.url)[1]
+ PATH = urlparse(self.url)[2]+"?"+urlparse(self.url)[4]
+ con = httplib.HTTPConnection(SITE)
+ con.request(
+ "GET",
+ PATH
+ )
+ resp = con.getresponse()
+ lines = resp.read().split("\n")
+ data_line = grep(
+ "var swfArgs = ",
+ lines
+ )
+ if not data_line:
+ raise RuntimeError
+ verification_code = re.match(
+ '.*"t": "([^"]*)",.*',
+ data_line
+ ).group(1)
+ title_line = grep(
+ "<title>.*</title>",
+ lines
+ )
+ pattern = re.compile("<title>.*</title>")
+ if not title_line:
+ raise RuntimeError
+ TITLE=re.match(
+ ".*<title>YouTube - (.*)</title>.*",
+ title_line
+ ).group(1)
+ DOWNLOADLINK = "http://youtube.com/get_video?video_id="+video_id+"&t="+verification_code
+ FILENAME = TITLE+".flv"
+ self.data = [
+ DOWNLOADLINK,
+ TITLE,
+ FILENAME,
+ True
+ ]
+
+ else:
+ raise RuntimeError
+ except: # if any error appeared in the code above, the video
information could not be fetched successfully
+ self.status = 1
else:
- SITE="www.2video.de"
- FILENAME="/"
- params = urlencode({"dl" : self.url,
- "req" : "downloads",
- "action" : "download"})
- headers = {"Content-type": "application/x-www-form-urlencoded",
- "Accept": "text/plain"}
- con=httplib.HTTPConnection(SITE)
- con.request("POST", FILENAME, params, headers)
- con_info=con.getresponse()
- con_data=con_info.read()
- lines=con_data.splitlines()
- SITE=re.match("(http://)?(.*)/(.*)", self.url).group(2)
- FILENAME=re.match("(http://)?(.*)/(.*)", self.url).group(3)
- con2=httplib.HTTPConnection(SITE)
- con2.request("GET", "/"+FILENAME)
- con2_data=con2.getresponse().read()
- mylines=con2_data.splitlines()
-
- try:
- LINKLINE_NR=lines.index([x for x in lines
if 'target="_blank">Download von ' in x][0])
- WANTEDLINK=re.match('.*<a href="(.*)" target=.*', lines[LINKLINE_NR]).group(1)
- WANTEDNAME_NR=mylines.index([x for x in mylines
if '<title>' in x][0])
- WANTEDNAME=re.match('.*<title>(.*)</title>.*', mylines[WANTEDNAME_NR]).group(1)
- print WANTEDNAME
-
- except:
- self.status = 1
- else:
- VIDEO_FILENAME=re.sub("(?i).flv.flv", ".flv", WANTEDNAME+".flv")
- self.status = 0
- self.data = [WANTEDLINK, WANTEDNAME, VIDEO_FILENAME, True]
+ self.status = 0
def folder_is_writable(dir):
"""
Check if we can write into a folder (creates a testfile there)
"""
- EXISTS=os.path.isfile(os.path.join(dir, "vdown_test.testfile")) #
do not delete the test file if it exists
+ EXISTS = os.path.isfile( # do not delete the test file if it exists
+ os.path.join(
+ dir,
+ "vdown_test.testfile"
+ )
+ )
try:
- file = open(os.path.join(dir, "vdown_test.testfile"), "wb")
+ file = open(
+ os.path.join(
+ dir,
+ "vdown_test.testfile"
+ ),
+ "wb"
+ )
file.close()
except IOError:
return False
else:
if not EXISTS:
- os.remove(os.path.join(dir, "vdown_test.testfile"))
+ os.remove(
+ os.path.join(
+ dir,
+ "vdown_test.testfile"
+ )
+ )
return True
class configuration(ConfigParser.RawConfigParser):
@@ -165,7 +255,10 @@
"""
def __init__(self):
ConfigParser.RawConfigParser.__init__(self)
- self.configfilename = os.path.join(userhome, ".gvdownrc")
+ self.configfilename = os.path.join(
+ userhome,
+ ".gvdownrc"
+ )
if not os.path.isfile(self.configfilename):
print _("Config file %s not found. Creating one for
you..." % (self.configfilename))
self.set_defaults()
@@ -173,15 +266,35 @@
def readconfig(self):
"""
+ Read config file and check for errors.
If an error occurs while reading the settings (e.g.
ConfigParser.NoSectionError), all settings will be set to default.
"""
- self.readfp(open(self.configfilename))
+ self.readfp(
+ open(
+ self.configfilename
+ )
+ )
try:
- test = self.get("general", "save_videos_in")
- test = self.getboolean("general", "convert")
- test = self.get("general", "convertcmd")
- test = self.get("general", "convert_filename_extension")
- test = self.getboolean("general", "delete_source_file_after_converting")
+ test = self.get(
+ "general",
+ "save_videos_in"
+ )
+ test = self.getboolean(
+ "general",
+ "convert"
+ )
+ test = self.get(
+ "general",
+ "convertcmd"
+ )
+ test = self.get(
+ "general",
+ "convert_filename_extension"
+ )
+ test = self.getboolean(
+ "general",
+ "delete_source_file_after_converting"
+ )
except:
self.set_defaults()
self.write_config()
@@ -193,17 +306,44 @@
print _("Setting settings to default...")
if not self.has_section("general"):
self.add_section("general")
- self.set("general", "save_videos_in", os.path.join(userhome, "downloads"))
- self.set("general", "convert", "no")
- self.set("general", "convertcmd", "ffmpeg -i %i -acodec mp3 %o")
- self.set("general", "convert_filename_extension", ".avi")
- self.set("general", "delete_source_file_after_converting", "no")
+
+ self.set(
+ "general",
+ "save_videos_in",
+ os.path.join(
+ userhome,
+ "downloads"
+ )
+ )
+ self.set(
+ "general",
+ "convert",
+ "no"
+ )
+ self.set(
+ "general",
+ "convertcmd",
+ "ffmpeg -i %i -acodec mp3 -ab 128 %o"
+ )
+ self.set(
+ "general",
+ "convert_filename_extension",
+ ".mp3"
+ )
+ self.set(
+ "general",
+ "delete_source_file_after_converting",
+ "no"
+ )
def write_config(self):
"""
Write config file
"""
- f = file(self.configfilename, "w")
+ f = file(
+ self.configfilename,
+ "w"
+ )
self.write(f)
f.close()
@@ -223,4 +363,3 @@
else:
print _("Could not fetch the wanted line. Wrong URL or
unsupported video portal!")
print "----"
-