Exemplo n.º 1
0
 def remove_dummy_files(self):
     # Remove any wav files that are 0 bytes in size
     for folder in FOLDERS:
         folder = self.get_root_dir() / folder
         wavs = Folder.ls_files(folder, "wav")
         for wav in wavs:
             if wav.exists() and wav.stat().st_size == 0:
                 wav.unlink()
Exemplo n.º 2
0
    def set_dummy_files(self):
        # double check that the dummy.json files exist
        self.create_dummy_json()

        for folder in FOLDERS:
            folder = self.get_root_dir() / folder
            dummy_json = folder / "dummy.json"
            data = File.get_json(dummy_json)
            wavs = Folder.ls_files(folder, "wav")

            # Lets find the max wav numbers
            for wav in wavs:
                file_stem, num, ext = File.split_name(wav)

                if not file_stem in data["max"]:
                    data["max"][file_stem] = num
                else:
                    if num > data["max"][file_stem]:
                        data["max"][file_stem] = num

            # Now lets create the dummy files if they don't already exist
            for file_stem in data["max"]:
                num = data["max"][file_stem]

                for i in range(num):
                    if i == 0:
                        path = folder / f'{file_stem}.wav'
                    else:
                        path = folder / f'{file_stem}({i}).wav'

                    path.touch()

            # Lets also get rid of the "dummy" key that is unused now
            if "dummy" in data:
                data.pop("dummy")

            # Lastly, lets update the dummy.json file
            File.set_json(dummy_json, data)
Exemplo n.º 3
0
    def move_extracted_song_to_temp(self):
        # Make sure we don't have any dummy files
        self.remove_dummy_files()

        for location in ["Media", "Bounces"]:
            # Remove unused cached audio from location
            # Garbage collector for unused audio files
            mp3s = Folder.ls_files(self.get_temp_dir() / location, "mp3")
            wav_names = [
                x.stem
                for x in Folder.ls_files(self.get_root_dir() / location, "wav")
            ]
            for mp3 in mp3s:
                if mp3.stem not in wav_names:
                    File.delete(mp3)

            # Convert and move wavs to mp3s
            Log(f'Converting "{location}" wav\'s to mp3\'s')
            if not Audio.folder_to_mp3(self.get_root_dir() / location,
                                       self.get_temp_dir() / location):
                return False

            # Copy over dummy.json
            Log(f'Copying over "{location}" dummy.json')
            if self.get_dummy_db(location, temp=False).exists():
                File.recursive_overwrite(
                    self.get_dummy_db(location, temp=False),
                    self.get_dummy_db(location, temp=True),
                )

        # Upload scratch files and mixdowns to the cloud
        mp3s = Folder.ls_files(self.get_temp_dir() / "Media", "mp3",
                               "Scratch*")
        mp3s.extend(
            Folder.ls_files(self.get_temp_dir() / "Media", "mp3", "SCRATCH*"))
        mp3s.extend(Folder.ls_files(self.get_root_dir() / "Mixdown", "mp3"))

        for mp3 in mp3s:
            mix_folder_id = Drive.get_id(self.entry.name)

            if not Drive.get_id(mp3.name, mix_folder_id):
                Log(f'Uploading "{mp3.name}" to the cloud', "sub")
                mp3_id = Drive.upload(filepath=mp3,
                                      mimeType=Drive.mimeType["mp3"],
                                      parent=mix_folder_id)

                audio_type = "Scratch" if mp3.parent.name == "Media" else "#MIXDOWN#"
                Slack.send_link(
                    link_name=
                    f'{audio_type} for {self.entry.name}, "{mp3.name}"',
                    ID=mp3_id)
            else:
                Log(f'Audio file "{mp3.name}" already exists on the cloud!',
                    "sub")

        # Copy over mixdowns to temp
        Log("Copying over 'Mixdown' mp3's")
        Folder.copy(self.get_root_dir() / "Mixdown",
                    self.get_temp_dir() / "Mixdown")

        # Lastly, copy over the song file
        File.recursive_overwrite(self.get_song_file(temp=False),
                                 self.get_song_file(temp=True))

        return True