def update_derivative(self, base_file): mp3_utility.Mp3File( file_path=base_file, load_tags_from_file=True).speedup( speed_multiplier=self.speed_multiplier, out_file=self.derivative_namer(base_file, dir_name=self.dir_name)) self.update_metadata([ mp3_utility.Mp3File(file_path=self.derivative_namer( base_file, dir_name=self.dir_name), load_tags_from_file=True) ]) return self.derivative_namer(base_file, dir_name=self.dir_name)
def update_mp3_metadata(self, mp3_file): """ Update metadata for a given file. :param mp3_file: string or :py:class:mp3_utility.Mp3File """ if isinstance(mp3_file, str): mp3_file = mp3_utility.Mp3File(file_path=mp3_file, load_tags_from_file=True) remote_name = self.get_remote_name(mp3_file.file_path) archive_item_file_details = self.item_files_dict.get(remote_name, None) mp3_metadata = mp3_file.metadata if archive_item_file_details is None: logging.warning("The file does not exist! Skipping.") else: remote_tag_update_needed = (archive_item_file_details.get( "artist", "") != mp3_metadata.artist) or ( archive_item_file_details.get("creator", "") != mp3_metadata.artist) or (archive_item_file_details.get( "title", "") != mp3_metadata.title) or ( archive_item_file_details.get( "album", "") != mp3_metadata.album ) or (archive_item_file_details.get( "album_artist", "") != mp3_metadata.album_artist) if remote_tag_update_needed: logging.info("***Updating %s in archive item." % remote_name) logging.info( internetarchive.modify_metadata( self.archive_id, metadata=dict(title=mp3_metadata.title, album=mp3_metadata.album, album_artist=mp3_metadata.album_artist, artist=mp3_metadata.artist, creator=mp3_metadata.artist), target=os.path.join("files", remote_name)))
def update_derivative(self, base_file): """The derivative, in case of a base repo, is usually the file itself.""" if base_file.endswith("mp3"): self.update_metadata([ mp3_utility.Mp3File(file_path=base_file, load_tags_from_file=True) ]) return base_file
def update_derivative(self, base_file): base_mp3 = mp3_utility.Mp3File(file_path=base_file, load_tags_from_file=True) # In case of renamed files, observed that the metadata might not get updated (To check). Hence doing the below for good measure. self.base_repo.update_derivative(base_file=base_file) base_mp3.save_normalized( overwrite=True, speed_multiplier=self.normalization_speed_multiplier, normalized_file_path=self.derivative_namer(base_file, dir_name=self.dir_name)) return self.derivative_namer(base_file, dir_name=self.dir_name)
def delete_obsolete_uploaded_files(self, dry_run=False): if self.archive_audio_item is not None: self.archive_audio_item.delete_unaccounted_for_files( all_files=self.get_files(), dry_run=dry_run) if self.gmusic_client is not None and not dry_run: all_mp3_files = [ mp3_utility.Mp3File(file_path=file, load_tags_from_file=True) for file in self.get_files() ] self.gmusic_client.delete_unaccounted_for_files( all_files=all_mp3_files, dry_run=dry_run)
def update_repo(dry_run=False): archive_audio_item = archive_utility.ArchiveAudioItem( archive_id=RepoBase.archive_id) archive_audio_item.update_metadata(metadata=RepoBase.metadata) repo = RepoBase(repo_paths=[ os.path.join( "/home/vvasuki/Music/kumAra-vyAsa-bhArata_gaNaka-pariShat/") ], archive_audio_item=archive_audio_item) repo.update_metadata(mp3_files=[ mp3_utility.Mp3File(file_path=base_file, load_tags_from_file=True) for base_file in repo.get_files() ])
def sync_upload_locations(self, files, overwrite=False, dry_run=False): self.delete_obsolete_uploaded_files(dry_run=dry_run) if self.archive_audio_item is not None: self.archive_audio_item.update_with_files(file_paths=files, overwrite_all=overwrite, dry_run=dry_run) # In case of dry_run, the derivative mp3 files are not generated, but gmusic_client needs them. if self.gmusic_client is not None and len(files) > 0 and not dry_run: mp3_files = [ mp3_utility.Mp3File(file_path=file, load_tags_from_file=True) for file in files ] logging.info( self.gmusic_client.get_album_tracks( mp3_files[0].metadata.album)) self.gmusic_client.upload(mp3_files=mp3_files, overwrite=overwrite, dry_run=dry_run)