def d500x2guano(fname): """Convert a file with raw D500X metadata to use GUANO metadata instead""" print "\n", fname md = extract_d500x_metadata(fname) if not md: print >> sys.stderr, "Skipping non-D500X file: " + fname return False pprint(md) gfile = GuanoFile(fname) gfile["GUANO|Version"] = 1.0 gfile["Make"] = "Pettersson" gfile["Model"] = "D500X" gfile["Timestamp"] = md.pop("File Time") gfile["Samplerate"] = md.pop("Samplerate") gfile["Length"] = md.pop("Length") if md.get("Profile HP", None) == "Y": gfile["Filter HP"] = 20 lat, lon = md.pop("LAT", None), md.pop("LON", None) if lat and lon: gfile["Loc Position"] = dms2decimal(lat), dms2decimal(lon) for k, v in md.items(): gfile["PET", k] = v print gfile._as_string() gfile.wav_data = gfile.wav_data[D500X_DATA_SKIP_BYTES:] # throw out the metadata bytes from 'data' chunk unlock(fname) # D500X "locks" files as unwriteable, we must unlock before we can modify gfile.write()
def sonobat2guano(fname): """Convert a file with Sonobat metadata to GUANO metadata""" print '\n', fname sb_md = extract_sonobat_metadata(fname) if not sb_md: print >> sys.stderr, 'Skipping non-Sonobat file: ' + fname return False pprint(sb_md) gfile = GuanoFile(fname) gfile['GUANO|Version'] = 1.0 if 'timestamp' in sb_md: gfile['Timestamp'] = sb_md['timestamp'] if sb_md.get('te', 1) != 1: gfile['TE'] = sb_md['te'] gfile['Length'] = sb_md['length'] gfile['Note'] = sb_md['note'].strip().replace('\r\n', '\\n').replace('\n', '\\n') if sb_md.get('species', None): gfile['Species Auto ID'] = sb_md['species'] if 'd500x' in sb_md: for k, v in sb_md['d500x'].items(): gfile['PET', k] = v if 'ar125' in sb_md: for k, v in sb_md['ar125'].items(): gfile['BAT', k] = v print gfile._as_string() gfile.write()
def wamd2guano(fname): """Convert a Wildlife Acoustics WAMD metadata file to GUANO metadata format""" wamd_md = wamd(fname) pprint(wamd_md) gfile = GuanoFile(fname) gfile['GUANO|Version'] = 1.0 gfile['Timestamp'] = wamd_md.pop('timestamp') gfile['Note'] = wamd_md.pop('notes', '') gfile['Make'] = 'Wildlife Acoustics' gfile['Model'] = wamd_md.pop('model', '') gfile['Firmware Version'] = wamd_md.pop('firmware', '') gfile['Species Auto ID'] = wamd_md.pop('auto_id', '') gfile['Species Manual ID'] = wamd_md.pop('manual_id', '') gfile['TE'] = wamd_md.pop('time_expansion', 1) gfile['Samplerate'] = gfile.wav_params.framerate * gfile['TE'] gfile['Length'] = gfile.wav_params.nframes / float(gfile.wav_params.framerate) * gfile['TE'] if 'gpsfirst' in wamd_md: lat, lon, alt = wamd_md.pop('gpsfirst') gfile['Loc Position'] = lat, lon gfile['Loc Elevation'] = alt for k, v in wamd_md.items(): gfile['WAC', k] = v print gfile._as_string() gfile.write()
def dump(fname): print print fname gfile = GuanoFile(fname) print gfile._as_string()