Exemplo n.º 1
0
    def run(self):
        def callback(*args):
            return self.isInterruptionRequested()

        entries = os.listdir(self.path)
        for i, p in enumerate(entries):
            p = os.path.join(self.path, p)
            if not dottorrent.is_hidden_file(p):
                sfn = os.path.split(p)[1] + '.torrent'
                self.progress_update.emit(sfn, i, len(entries))
                t = dottorrent.Torrent(p,
                                       trackers=self.trackers,
                                       web_seeds=self.web_seeds,
                                       private=self.private,
                                       source=self.source,
                                       comment=self.comment,
                                       include_md5=self.include_md5,
                                       creation_date=datetime.now(),
                                       created_by=CREATOR)
                try:
                    self.success = t.generate(callback=callback)
                # ignore empty inputs
                except dottorrent.exceptions.EmptyInputException:
                    continue
                except Exception as exc:
                    self.onError.emit(str(exc))
                    return
                if self.isInterruptionRequested():
                    return
                if self.success:
                    with open(os.path.join(self.save_dir, sfn), 'wb') as f:
                        t.save(f)
Exemplo n.º 2
0
 def initializeTorrent(self):
     self.torrent = dottorrent.Torrent(self.inputEdit.text())
     try:
         t_info = self.torrent.get_info()
     except Exception as e:
         self.torrent = None
         self._showError(str(e))
         return
     ptail = os.path.split(self.torrent.path)[1]
     if self.inputType == 'file':
         self._statusBarMsg("{}: {}".format(
             ptail, humanfriendly.format_size(t_info[0], binary=True)))
     else:
         self._statusBarMsg("{}: {} files, {}".format(
             ptail, t_info[1],
             humanfriendly.format_size(t_info[0], binary=True)))
     self.pieceSizeComboBox.setCurrentIndex(0)
     self.updatePieceCountLabel(t_info[2], t_info[3])
     self.pieceCountLabel.show()
     self.createButton.setEnabled(True)
Exemplo n.º 3
0
def moveAlbum(parsedArgs, a, w, source):
	sprint(parsedArgs)
	data = None

	if "hash" in parsedArgs:
		sprint(parsedArgs["hash"], len(parsedArgs["hash"]))
		data = a.get_torrent_info(hash=parsedArgs["hash"])
	else:
		TorrentIDsource = parsedArgs["tid"]
		data = a.get_torrent_info(id=TorrentIDsource)
	
	tdata = data["torrent"]
	g_group = data["group"]

	GroupIDsource = g_group["id"]
	TorrentIDsource = tdata["id"]

	if not os.path.exists("meta"):
		os.makedirs("meta")

	f = open("meta\\" + str(TorrentIDsource) + ".json","w")
	f.write(json.dumps(data,indent=4))
	f.close()

	folder = ""

	if "album" in parsedArgs:
		folder = parsedArgs["album"]
	elif "folder" in parsedArgs:
		folder = os.path.join(parsedArgs["folder"], unescape(tdata["filePath"]))
		sprint("Folder:", folder, "====")
	else:
		raise Exception("Failed to find path")

	isDupe = checkForDuplicate(w, data)
	
	sprint("Duplicate:", isDupe)

	if isDupe:
		return
	
	t_media = tdata["media"]
	t_format = tdata["format"]
	t_encoding = tdata["encoding"]
	if tdata["description"] == "":
		t_description = "Uploaded with GazelleSync ("+parsedArgs["from"].upper()+" to "+parsedArgs["to"].upper()+"). Many thanks to the original uploader!"
	else:
		t_description = "Content of the original Description field at " + parsedArgs["from"].upper() + " (it may be empty) : [quote]" + tdata["description"] + "[/quote]" +  "\n\nUploaded with GazelleSync ("+parsedArgs["from"].upper()+" to "+parsedArgs["to"].upper()+"). Many thanks to the original uploader!"

	t_remasterYear = tdata["remasterYear"]
	t_remasterCatalogueNumber = tdata["remasterCatalogueNumber"]
	t_remastered = tdata["remastered"]
	t_remasterRecordLabel = tdata["remasterRecordLabel"]
	t_remasterTitle = tdata["remasterTitle"]
	
	g_artists = g_group["musicInfo"]
	g_name = g_group["name"]
	g_year = g_group["year"]
	g_recordLabel = g_group["recordLabel"]
	g_catalogueNumber = g_group["catalogueNumber"]
	g_releaseType = g_group["releaseType"]
	g_tags = g_group["tags"]
	#g_wikiImage = g_group["wikiImage"]
	#"""
	if parsedArgs["to"] != "nwcd":
		g_wikiImage = g_group["wikiImage"]
	else:
		g_wikiImage = destAPI.img(g_group["wikiImage"])
	#"""

	g_wikiBody = strip_tags(g_group["wikiBody"]) #.replace("<br />", "\n")
	#g_wikiBody = g_group["wikiBody"]
	g_group["wikiBody"] = g_group["wikiBody"].replace("\r\n", "\n")
	
	album = dict(
		album = g_name,
		original_year = g_year,
		remaster = t_remastered,
		record_label = g_recordLabel,
		catalogue_number = g_catalogueNumber,
		releasetype = g_releaseType,
		remaster_year = t_remasterYear,
		remaster_title = t_remasterTitle,
		remaster_record_label = t_remasterRecordLabel,
		remaster_catalogue_number = t_remasterCatalogueNumber,
		format = t_format,
		encoding = t_encoding,
		media = t_media,
		description = g_wikiBody,
		rDesc = t_description
	)
	
	artists = list()
	for i,v in enumerate(g_artists["composers"]):
		artists.append((v["name"], artistImportances.get("Composer", 1)))

	for i,v in enumerate(g_artists["dj"]):
		artists.append((v["name"], artistImportances.get("DJ", 1)))

	for i,v in enumerate(g_artists["artists"]):
		artists.append((v["name"], artistImportances.get("Main", 1)))

	for i,v in enumerate(g_artists["with"]):
		artists.append((v["name"], artistImportances.get("Guest", 1)))

	for i,v in enumerate(g_artists["conductor"]):
		artists.append((v["name"], artistImportances.get("Conductor", 1)))

	for i,v in enumerate(g_artists["remixedBy"]):
		artists.append((v["name"], artistImportances.get("Remixer", 1)))

	for i,v in enumerate(g_artists["producer"]):
		artists.append((v["name"], artistImportances.get("Producer", 1)))
	
	sprint(album["album"])
	
	tempfolder = "torrent"
	
	if not os.path.exists(tempfolder):
		os.makedirs(tempfolder)

	if t_remastered:
		releaseYear = t_remasterYear
		releaseRecordLabel = t_remasterRecordLabel
		releaseCatNum = t_remasterCatalogueNumber
	else:
		releaseYear = g_year
		releaseRecordLabel = g_recordLabel
		releaseCatNum = g_catalogueNumber
	
	newFolderName = genaratePrettyName(g_artists, g_name, releaseYear, t_format, t_encoding, t_media, releaseRecordLabel, releaseCatNum, t_remasterTitle)

	print("New path is", newFolderName)
	#input()
	
	tpath = newFolderName +".torrent"
	
	tpath = tpath.replace("/", "/")
	tpath = tpath.replace("\\", "\")
	tpath = tpath.replace(":", ":")
	tpath = tpath.replace("*", "*")
	tpath = tpath.replace('"', """)
	tpath = tpath.replace("?", "?")
	tpath = tpath.replace("<", "<")
	tpath = tpath.replace(">", ">")
	tpath = tpath.replace("|", "|")
	tpath = unescape(tpath)
	
	#tpath = "torrent/"+tpath
	
	sprint(tpath)
	sprint("Folder", folder)
	#folder = toUnicode(folder)

	sprint("Folder", folder)
	#raw_input()
	
	t = dottorrent.Torrent(folder, trackers=[w.tracker], comment="Created with GazelleSync", source=source, private=True)
	t.generate()
	with open ("torrent/" + tpath, "wb") as f:
		t.save(f)
	
	w.upload(folder, tempfolder, album, g_tags, g_wikiImage, artists, "torrent/"+tpath)

	if constants.directory != "":
		copyfile("torrent/"+tpath, os.path.join(constants.directory, tpath))