Пример #1
0
def track_to_tcx(track, pretty=False):

    ns = tcx_ns

    root = xml.Element(ns('TrainingCenterDatabase'))

    root.set(xsi_ns('schemaLocation'), ' '.join([
        _TCX_NS, _TCX_NS_XSD, _ACT_EXT_NS, _ACT_EXT_NS_XSD]))


    xml.register_namespace('', _TCX_NS)
    xml.register_namespace('_ns3', _ACT_EXT_NS)

    activities = xml.SubElement(root, ns('Activities'))
    activity = xml.SubElement(activities, ns('Activity'))
    activity.set(ns('Sport'), 'Biking')

    xml.SubElement(activity, ns('Id')).text = \
        format_timestamp(track.timestamp)


    create_laps(track, activity, ns)

    if pretty:
        indent_element_tree(root, ws=' ')

    out = xml.tostring(root)

    # ElementTree doesn't let me set prefix ns3 and a lot of software
    # seems to be hardcoded to use ns3 so have to use this little hack.
    out = out.replace('_ns3:', 'ns3:').replace('xmlns:_ns3', 'xmlns:ns3')

    return "<?xml version='1.0' encoding='utf-8'?>\n" + out
Пример #2
0
def create_fake_creator_element(parent, ns=tcx_ns):
    """Add fake creator to make strava.com trust the elevation data"""

    creator = xml.SubElement(parent, ns('Creator'))
    creator.set(xsi_ns('type'), 'Device_t')

    xml.SubElement(creator, ns('Name')).text = 'Garmin Edge 800'
    xml.SubElement(creator, ns('UnitId')).text = '9999999'
    xml.SubElement(creator, ns('ProductID')).text = '1169'

    version = xml.SubElement(creator, ns('Version'))
    xml.SubElement(version, ns('VersionMajor')).text = '0'
    xml.SubElement(version, ns('VersionMinor')).text = '0'
    xml.SubElement(version, ns('BuildMajor')).text = '0'
    xml.SubElement(version, ns('BuildMinor')).text = '0'
Пример #3
0
def create_fake_creator_element(parent, ns=tcx_ns):
    """Add fake creator to make strava.com trust the elevation data"""

    creator = xml.SubElement(parent, ns('Creator'))
    creator.set(xsi_ns('type'), 'Device_t')

    xml.SubElement(creator, ns('Name')).text = 'Garmin Edge 800'
    xml.SubElement(creator, ns('UnitId')).text = '9999999'
    xml.SubElement(creator, ns('ProductID')).text = '1169'

    version = xml.SubElement(creator, ns('Version'))
    xml.SubElement(version, ns('VersionMajor')).text = '0'
    xml.SubElement(version, ns('VersionMinor')).text = '0'
    xml.SubElement(version, ns('BuildMajor')).text = '0'
    xml.SubElement(version, ns('BuildMinor')).text = '0'
Пример #4
0
def create_author_element(parent, ns=tcx_ns):

    author = xml.SubElement(parent, ns('Author'))
    author.set(xsi_ns('type'), 'Application_t')

    xml.SubElement(author, ns('Name')).text = 'Bryton GPS Linux'

    build = xml.SubElement(author, ns('Build'))
    version = xml.SubElement(build, ns('Version'))
    xml.SubElement(version, ns('VersionMajor')).text = '0'
    xml.SubElement(version, ns('VersionMinor')).text = '1'
    xml.SubElement(version, ns('BuildMajor')).text = '0'
    xml.SubElement(version, ns('BuildMinor')).text = '0'

    xml.SubElement(author, ns('LangID')).text = 'en'
    xml.SubElement(author, ns('PartNumber')).text = '000-D123-00'
Пример #5
0
def create_author_element(parent, ns=tcx_ns):

    author = xml.SubElement(parent, ns('Author'))
    author.set(xsi_ns('type'), 'Application_t')

    xml.SubElement(author, ns('Name')).text = 'Bryton GPS Linux'

    build = xml.SubElement(author, ns('Build'))
    version = xml.SubElement(build, ns('Version'))
    xml.SubElement(version, ns('VersionMajor')).text = '0'
    xml.SubElement(version, ns('VersionMinor')).text = '1'
    xml.SubElement(version, ns('BuildMajor')).text = '0'
    xml.SubElement(version, ns('BuildMinor')).text = '0'

    xml.SubElement(author, ns('LangID')).text = 'en'
    xml.SubElement(author, ns('PartNumber')).text = '000-D123-00'
Пример #6
0
def track_to_tcx(track, pretty=False, fake_garmin_device=False, no_laps=False):

    ns = tcx_ns

    root = xml.Element(ns('TrainingCenterDatabase'))

    root.set(xsi_ns('schemaLocation'),
             ' '.join([_TCX_NS, _TCX_NS_XSD, _ACT_EXT_NS, _ACT_EXT_NS_XSD]))

    xml.register_namespace('', _TCX_NS)
    xml.register_namespace('_ns3', _ACT_EXT_NS)

    activities = xml.SubElement(root, ns('Activities'))
    activity = xml.SubElement(activities, ns('Activity'))
    activity.set(ns('Sport'), 'Biking')

    xml.SubElement(activity, ns('Id')).text = \
        format_timestamp(track.timestamp)

    create_laps(track, no_laps, activity, ns)

    if fake_garmin_device:
        create_fake_creator_element(activity, ns)

    create_author_element(root, ns)

    if pretty:
        indent_element_tree(root, ws=' ')

    out = xml.tostring(root)

    # ElementTree doesn't let me set prefix ns3 and a lot of software
    # seems to be hardcoded to use ns3 so have to use this little hack.
    out = out.replace('_ns3:', 'ns3:').replace('xmlns:_ns3', 'xmlns:ns3')

    return "<?xml version='1.0' encoding='utf-8'?>\n" + out