<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_track(self, href=None, media_url=None, label=None, audio_channel=None):
 """Add a new track to a bundle. Note that the total number of allowable tracks is limited. See the API documentation for details. 'href' the relative href to the tracks list. May not be None. 'media_url' public URL to media file. May not be None. 'label' short name for the track. May be None. 'audio_channel' the channel(s) to use in a stereo file. May be None. For details see the API documentation. Returns a data structure equivalent to the JSON returned by the API. If the response status is not 2xx, or if the maximum number of tracks is exceeded, throws an APIException. If the JSON to python data struct conversion fails, throws an APIDataException."""


        # Argument error checking.
        assert href is not None
        assert media_url is not None

        # Prepare the data we're going to write.
        data = None

        fields = {}
        fields['media_url'] = media_url
        if label is not None:
            fields['label'] = label
        if audio_channel is not None:
            fields['audio_channel'] = audio_channel

        if len(fields) > 0:
            data = fields

        raw_result = self.post(href, data)

        if raw_result.status < 200 or raw_result.status > 202:
            raise APIException(raw_result.status, raw_result.json)

        # Convert the JSON to a python data struct.

        return self._parse_json(raw_result.json)