本文整理汇总了Python中spotify_ripper.progress.Progress.end_track方法的典型用法代码示例。如果您正苦于以下问题:Python Progress.end_track方法的具体用法?Python Progress.end_track怎么用?Python Progress.end_track使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类spotify_ripper.progress.Progress
的用法示例。
在下文中一共展示了Progress.end_track方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Ripper
# 需要导入模块: from spotify_ripper.progress import Progress [as 别名]
# 或者: from spotify_ripper.progress.Progress import end_track [as 别名]
#.........这里部分代码省略.........
else:
self.rip_proc = Popen(
["oggenc", "--quiet", "--raw", "-q", args.vbr, "-o",
self.audio_file, "-"], stdin=PIPE)
elif args.output_type == "opus":
if args.cbr:
self.rip_proc = Popen(
["opusenc", "--quiet", "--comp", args.comp, "--cvbr",
"--bitrate", str(int(args.bitrate) / 2), "--raw",
"--raw-rate", "44100", "-", self.audio_file], stdin=PIPE)
else:
self.rip_proc = Popen(
["opusenc", "--quiet", "--comp", args.comp, "--vbr",
"--bitrate", args.vbr, "--raw", "--raw-rate", "44100",
"-", self.audio_file], stdin=PIPE)
elif args.output_type == "aac":
if self.dev_null is None:
self.dev_null = open(os.devnull, 'wb')
if args.cbr:
self.rip_proc = Popen(
["faac", "-P", "-X", "-b", args.bitrate, "-o",
self.audio_file, "-"], stdin=PIPE,
stdout=self.dev_null, stderr=self.dev_null)
else:
self.rip_proc = Popen(
["faac", "-P", "-X", "-q", args.vbr, "-o",
self.audio_file, "-"], stdin=PIPE,
stdout=self.dev_null, stderr=self.dev_null)
elif args.output_type == "m4a":
if args.cbr:
self.rip_proc = Popen(
["fdkaac", "-S", "-R", "-b",
args.bitrate, "-o", self.audio_file, "-"], stdin=PIPE)
else:
self.rip_proc = Popen(
["fdkaac", "-S", "-R", "-m", args.vbr,
"-o", self.audio_file, "-"], stdin=PIPE)
elif args.output_type == "mp3":
lame_args = ["lame", "--silent"]
if args.stereo_mode is not None:
lame_args.extend(["-m", args.stereo_mode])
if args.cbr:
lame_args.extend(["-cbr", "-b", args.bitrate])
else:
lame_args.extend(["-V", args.vbr])
lame_args.extend(["-h", "-r", "-", self.audio_file])
self.rip_proc = Popen(lame_args, stdin=PIPE)
if self.rip_proc is not None:
self.pipe = self.rip_proc.stdin
self.ripping.set()
def finish_rip(self, track):
self.progress.end_track()
if self.pipe is not None:
print(Fore.GREEN + 'Rip complete' + Fore.RESET)
self.pipe.flush()
self.pipe.close()
# wait for process to end before continuing
ret_code = self.rip_proc.wait()
if ret_code != 0:
print(
Fore.YELLOW + "Warning: encoder returned non-zero "
"error code " + str(ret_code) + Fore.RESET)
self.rip_proc = None
self.pipe = None
if self.wav_file is not None:
self.wav_file.close()
self.wav_file = None
if self.pcm_file is not None:
self.pcm_file.flush()
os.fsync(self.pcm_file.fileno())
self.pcm_file.close()
self.pcm_file = None
self.ripping.clear()
self.post.log_success(track)
def rip(self, session, sample_rate, frame_bytes, num_frames):
if self.ripping.is_set():
self.progress.update_progress(num_frames, sample_rate)
if self.pipe is not None:
self.pipe.write(frame_bytes)
if self.wav_file is not None:
self.wav_file.writeframes(frame_bytes)
if self.pcm_file is not None:
self.pcm_file.write(frame_bytes)
def abort_rip(self):
self.ripping.clear()
self.abort.set()
示例2: Ripper
# 需要导入模块: from spotify_ripper.progress import Progress [as 别名]
# 或者: from spotify_ripper.progress.Progress import end_track [as 别名]
#.........这里部分代码省略.........
self.session.player.load(track)
self.prepare_rip(idx, track)
self.session.player.play()
timeout_count = 0
while not self.end_of_track.is_set() or \
not self.rip_queue.empty():
try:
if self.abort.is_set() or self.skip.is_set():
break
rip_item = self.rip_queue.get(timeout=1)
if self.abort.is_set() or self.skip.is_set():
break
self.rip(self.session, rip_item[0],
rip_item[1], rip_item[2])
except queue.Empty:
timeout_count += 1
if timeout_count > 60:
raise spotify.Error("Timeout while "
"ripping track")
if self.skip.is_set():
extra_line = "" if self.play_token_resume.is_set() \
else "\n"
print(extra_line + Fore.YELLOW +
"User skipped track... " + Fore.RESET)
self.session.player.play(False)
self.post.clean_up_partial()
self.post.log_failure(track)
self.end_of_track.clear()
self.progress.end_track(show_end=False)
self.ripping.clear()
continue
if self.abort.is_set():
self.session.player.play(False)
self.end_of_track.set()
self.post.clean_up_partial()
self.post.log_failure(track)
break
self.end_of_track.clear()
self.finish_rip(track)
# update id3v2 with metadata and embed front cover image
set_metadata_tags(args, self.audio_file, idx, track, self)
# make a note of the index and remove all the
# tracks from the playlist when everything is done
self.post.queue_remove_from_playlist(idx)
# finally log success
self.post.log_success(track)
except (spotify.Error, Exception) as e:
if isinstance(e, Exception):
print(Fore.RED + "Spotify error detected" + Fore.RESET)
print(str(e))
traceback.print_exc()
print("Skipping to next track...")
self.session.player.play(False)
self.post.clean_up_partial()
示例3: Ripper
# 需要导入模块: from spotify_ripper.progress import Progress [as 别名]
# 或者: from spotify_ripper.progress.Progress import end_track [as 别名]
#.........这里部分代码省略.........
if self.progress.total_tracks > 1:
print(Fore.GREEN + "[ " + str(idx + 1) + " / " + str(self.progress.total_tracks) + " ] Ripping " + track.link.uri + Fore.RESET)
else:
print(Fore.GREEN + "Ripping " + track.link.uri + Fore.RESET)
print(Fore.CYAN + self.audio_file + Fore.RESET)
file_size = calc_file_size(self.args, track)
print("Track Download Size: " + format_size(file_size))
if args.output_type == "flac":
self.rip_proc = Popen(["flac", "-f", "--best", "--silent", "--endian", "little", "--channels", "2", "--bps", "16", "--sample-rate", "44100", "--sign", "signed", "-o", self.audio_file, "-"], stdin=PIPE)
elif args.output_type == "ogg":
if args.cbr:
self.rip_proc = Popen(["oggenc", "--quiet", "--raw", "-b", args.bitrate, "-o", self.audio_file, "-"], stdin=PIPE)
else:
self.rip_proc = Popen(["oggenc", "--quiet", "--raw", "-q", args.vbr, "-o", self.audio_file, "-"], stdin=PIPE)
elif args.output_type == "opus":
if args.cbr:
self.rip_proc = Popen(["opusenc", "--quiet", "--cvbr", "--bitrate", str(int(args.bitrate) / 2), "--raw", "--raw-rate", "44100", "-", self.audio_file], stdin=PIPE)
else:
self.rip_proc = Popen(["opusenc", "--quiet", "--vbr", "--bitrate", args.vbr, "--raw", "--raw-rate", "44100", "-", self.audio_file], stdin=PIPE)
elif args.output_type == "aac":
if self.dev_null is None: self.dev_null = open(os.devnull, 'wb')
if args.cbr:
self.rip_proc = Popen(["faac", "-P", "-X", "-b", args.bitrate, "-o", self.audio_file, "-"], stdin=PIPE, stdout=self.dev_null, stderr=self.dev_null)
else:
self.rip_proc = Popen(["faac", "-P", "-X", "-q", args.vbr, "-o", self.audio_file, "-"], stdin=PIPE, stdout=self.dev_null, stderr=self.dev_null)
elif args.output_type == "m4a":
if args.cbr:
self.rip_proc = Popen(["fdkaac", "-S", "-R", "-w", "200000", "-b", args.bitrate, "-o", self.audio_file, "-"], stdin=PIPE)
else:
self.rip_proc = Popen(["fdkaac", "-S", "-R", "-w", "200000", "-m", args.vbr, "-o", self.audio_file, "-"], stdin=PIPE)
elif args.output_type == "mp3":
if args.cbr:
self.rip_proc = Popen(["lame", "--silent", "-cbr", "-b", args.bitrate, "-h", "-r", "-", self.audio_file], stdin=PIPE)
else:
self.rip_proc = Popen(["lame", "--silent", "-V", args.vbr, "-h", "-r", "-", self.audio_file], stdin=PIPE)
self.pipe = self.rip_proc.stdin
if args.pcm:
pcm_file_name = self.audio_file[:-(len(args.output_type) + 1)] + ".pcm"
self.pcm_file = open(pcm_file_name, 'w')
self.ripping = True
def finish_rip(self, track):
self.progress.end_track()
if self.pipe is not None:
print(Fore.GREEN + 'Rip complete' + Fore.RESET)
self.pipe.flush()
self.pipe.close()
# wait for process to end before continuing
ret_code = self.rip_proc.wait()
if ret_code != 0:
print(Fore.YELLOW + "Warning: encoder returned non-zero error code " + str(ret_code) + Fore.RESET)
self.rip_proc = None
self.pipe = None
if self.args.pcm:
self.pcm_file.flush()
os.fsync(self.pcm_file.fileno())
self.pcm_file.close()
self.pcm_file = None
self.ripping = False
def rip(self, session, audio_format, frame_bytes, num_frames):
if self.ripping:
self.progress.update_progress(num_frames, audio_format)
self.pipe.write(frame_bytes);
if self.args.pcm:
self.pcm_file.write(frame_bytes)
def abort(self):
self.session.player.play(False)
self.clean_up_partial()
self.remove_tracks_from_playlist()
self.logout()
self.finished = True
def queue_remove_from_playlist(self, idx):
if self.args.remove_from_playlist:
if self.current_playlist:
if self.current_playlist.owner.canonical_name == self.session.user.canonical_name:
self.tracks_to_remove.append(idx)
else:
print(Fore.RED + "This track will not be removed from playlist " +
self.current_playlist.name + " since " + self.session.user.canonical_name +
" is not the playlist owner..." + Fore.RESET)
else:
print(Fore.RED + "No playlist specified to remove this track from. " +
"Did you use '-r' without a playlist link?" + Fore.RESET)
def remove_tracks_from_playlist(self):
if self.args.remove_from_playlist and self.current_playlist and len(self.tracks_to_remove) > 0:
print(Fore.YELLOW + "Removing successfully ripped tracks from playlist " +
self.current_playlist.name + "..." + Fore.RESET)
self.current_playlist.remove_tracks(self.tracks_to_remove)
self.session.process_events()
while self.current_playlist.has_pending_changes:
time.sleep(0.1)
示例4: Ripper
# 需要导入模块: from spotify_ripper.progress import Progress [as 别名]
# 或者: from spotify_ripper.progress.Progress import end_track [as 别名]
#.........这里部分代码省略.........
stdin=PIPE,
stdout=self.dev_null,
stderr=self.dev_null,
)
elif args.output_type == "m4a":
if args.cbr:
self.rip_proc = Popen(
["fdkaac", "-S", "-R", "-w", "200000", "-b", args.bitrate, "-o", self.audio_file, "-"], stdin=PIPE
)
else:
self.rip_proc = Popen(
["fdkaac", "-S", "-R", "-w", "200000", "-m", args.vbr, "-o", self.audio_file, "-"], stdin=PIPE
)
elif args.output_type == "mp3":
lame_args = ["lame", "--silent"]
if args.stereo_mode is not None:
lame_args.extend(["-m", args.stereo_mode])
if args.cbr:
lame_args.extend(["-cbr", "-b", args.bitrate])
else:
lame_args.extend(["-V", args.vbr])
lame_args.extend(["-h", "-r", "-", self.audio_file])
self.rip_proc = Popen(lame_args, stdin=PIPE)
if self.rip_proc is not None:
self.pipe = self.rip_proc.stdin
self.ripping = True
def finish_rip(self, track):
self.progress.end_track()
if self.pipe is not None:
print(Fore.GREEN + "Rip complete" + Fore.RESET)
self.pipe.flush()
self.pipe.close()
# wait for process to end before continuing
ret_code = self.rip_proc.wait()
if ret_code != 0:
print(Fore.YELLOW + "Warning: encoder returned non-zero " "error code " + str(ret_code) + Fore.RESET)
self.rip_proc = None
self.pipe = None
if self.wav_file is not None:
self.wav_file.flush()
os.fsync(self.wav_file.fileno())
self.wav_file.close()
self.wav_file = None
if self.pcm_file is not None:
self.pcm_file.flush()
os.fsync(self.pcm_file.fileno())
self.pcm_file.close()
self.pcm_file = None
self.ripping = False
self.success_tracks.append(track)
def rip(self, session, audio_format, frame_bytes, num_frames):
if self.ripping:
self.progress.update_progress(num_frames, audio_format)
if self.pipe is not None:
self.pipe.write(frame_bytes)