def get(self, **kwargs) -> str: api_request = build_request(request, **kwargs) audio_file_name = api_request.query_params.get("file_name") if audio_file_name is not None: audio_file_absolute_path = concatenate_paths( AUDIO_FILES_DIR, audio_file_name) if file_exists(audio_file_absolute_path): id3_tag = read_audio_tag(audio_file_absolute_path) if id3_tag: api_response = ApiResponse(HttpStatusCode.ok, id3_tag.to_serializable()) else: api_response = ApiResponse(HttpStatusCode.no_content, payload=None) else: api_response = ApiResponse(HttpStatusCode.not_found, { "message": "File does not exist: {}".format(audio_file_name) }) else: api_response = ApiResponse( HttpStatusCode.bad_request, {"message": "Parameter file_name was not provided"}) log_api_call(api_request, api_response) return build_response(api_response)
def read_audio_tag(input_audio_file_absolute_path: str) -> Optional[Id3Tag]: if file_exists(input_audio_file_absolute_path): file_ext = extract_extension(input_audio_file_absolute_path) if file_ext == Extension.MP3.value: return read_audio_tag_using(input_audio_file_absolute_path, EasyID3) elif file_ext == Extension.FLAC.value: return read_audio_tag_using(input_audio_file_absolute_path, FLAC) else: raise ValueError("Unsupported file for reading tags: {}".format(input_audio_file_absolute_path)) else: logger.error("File {} does not exists, could not read tags".format(input_audio_file_absolute_path)) return None
def read_file_meta(file_name: str) -> Optional[FileMeta]: if file_exists(file_name): file_stats = os.stat(file_name) last_access_utc = utc_timestamp_to_datetime(file_stats.st_atime) last_modification_utc = utc_timestamp_to_datetime(file_stats.st_mtime) created_on_utc = utc_timestamp_to_datetime(file_stats.st_ctime) return FileMeta(file_name=get_file_name(file_name), size=file_stats.st_size, last_access=last_access_utc, last_modification=last_modification_utc, created_on=created_on_utc) else: logger.warning("Requested file {} does not exist".format(file_name)) return None
def read_audio_file_meta( absolute_path: str) -> Optional[CompressedAudioFileMeta]: if file_exists(absolute_path): audio_file = None audio_file_size = file_size_bytes(absolute_path) try: if extract_extension(absolute_path) == Extension.MP3.value: return _read_mp3_file_meta(absolute_path, audio_file_size) elif extract_extension(absolute_path) == Extension.FLAC.value: return _read_flac_file_meta(absolute_path, audio_file_size) except Exception as e: logger.exception( "Could not read audio file meta from {}. Details: {}".format( absolute_path, e)) if audio_file: audio_file.close() return None
def test_checking_if_file_exists(self): assert_that(file_exists("/dev/null")).is_true() assert_that(file_exists("/dev/24e3re34d17")).is_false()
def exists(self, file_name: str) -> bool: return file_exists(self._build_full_path(file_name))