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)
Exemple #6
0
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)