Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
def dump(fname):
    print
    print fname
    gfile = GuanoFile(fname)
    print gfile._as_string()