Add option to GlibURLDownloader to download to specified file instead of tempfile
This commit is contained in:
		
							parent
							
								
									98aef7d74f
								
							
						
					
					
						commit
						62e424628e
					
				@ -26,6 +26,7 @@ import sys
 | 
				
			|||||||
import httplib
 | 
					import httplib
 | 
				
			||||||
import urllib
 | 
					import urllib
 | 
				
			||||||
import fcntl
 | 
					import fcntl
 | 
				
			||||||
 | 
					import tempfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import gobject
 | 
					import gobject
 | 
				
			||||||
import SimpleXMLRPCServer
 | 
					import SimpleXMLRPCServer
 | 
				
			||||||
@ -183,23 +184,29 @@ class GlibURLDownloader(gobject.GObject):
 | 
				
			|||||||
    def __init__(self, url, destdir=None):
 | 
					    def __init__(self, url, destdir=None):
 | 
				
			||||||
        self._url = url
 | 
					        self._url = url
 | 
				
			||||||
        if not destdir:
 | 
					        if not destdir:
 | 
				
			||||||
            destdir = "/tmp"
 | 
					            destdir = tempfile.gettempdir()
 | 
				
			||||||
        self._destdir = destdir
 | 
					        self._destdir = destdir
 | 
				
			||||||
        self._srcid = 0
 | 
					        self._srcid = 0
 | 
				
			||||||
        self._fname = None
 | 
					        self._fname = None
 | 
				
			||||||
        self._outf = None
 | 
					        self._outf = None
 | 
				
			||||||
        gobject.GObject.__init__(self)
 | 
					        gobject.GObject.__init__(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def start(self):
 | 
					    def start(self, destfile=None):
 | 
				
			||||||
        self._info = urllib.urlopen(self._url)
 | 
					        self._info = urllib.urlopen(self._url)
 | 
				
			||||||
        self._suggested_fname = self._get_filename_from_headers(self._info.headers)
 | 
					        self._outf = None
 | 
				
			||||||
        import tempfile
 | 
					        self._fname = None
 | 
				
			||||||
        garbage, path = urllib.splittype(self._url)
 | 
					        if destfile:
 | 
				
			||||||
        garbage, path = urllib.splithost(path or "")
 | 
					            self._suggested_fname = os.path.basename(destfile)
 | 
				
			||||||
        path, garbage = urllib.splitquery(path or "")
 | 
					            self._fname = os.path.abspath(os.path.expanduser(destfile))
 | 
				
			||||||
        path, garbage = urllib.splitattr(path or "")
 | 
					            self._outf = os.open(self._fname, os.O_RDWR | os.O_TRUNC | os.O_CREAT, 0644)
 | 
				
			||||||
        suffix = os.path.splitext(path)[1]
 | 
					        else:
 | 
				
			||||||
        (self._outf, self._fname) = tempfile.mkstemp(suffix=suffix, dir=self._destdir)
 | 
					            self._suggested_fname = self._get_filename_from_headers(self._info.headers)
 | 
				
			||||||
 | 
					            garbage, path = urllib.splittype(self._url)
 | 
				
			||||||
 | 
					            garbage, path = urllib.splithost(path or "")
 | 
				
			||||||
 | 
					            path, garbage = urllib.splitquery(path or "")
 | 
				
			||||||
 | 
					            path, garbage = urllib.splitattr(path or "")
 | 
				
			||||||
 | 
					            suffix = os.path.splitext(path)[1]
 | 
				
			||||||
 | 
					            (self._outf, self._fname) = tempfile.mkstemp(suffix=suffix, dir=self._destdir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fcntl.fcntl(self._info.fp.fileno(), fcntl.F_SETFD, os.O_NDELAY)
 | 
					        fcntl.fcntl(self._info.fp.fileno(), fcntl.F_SETFD, os.O_NDELAY)
 | 
				
			||||||
        self._srcid = gobject.io_add_watch(self._info.fp.fileno(),
 | 
					        self._srcid = gobject.io_add_watch(self._info.fp.fileno(),
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user