Использование запросов для отправки POST-запроса в Mixcloud

1

Я использую службу под названием Mixcloud, чтобы попытаться загрузить несколько подкастов, таких как mp3 файлы. Я слежу за документацией Mixclouds о том, как я должен загружать песню через запрос на отправку, используя их api, однако я получаю некоторую ошибку.

Говорят, чтобы отправить запрос POST с несколькими данными multipart/form-data со всеми данными, требуемыми для одного запроса на отправку. Основываясь на том, что они сказали здесь, это код Python, я пришел с использованием запросов к POST с:

accessToken = '**Censored**'
postUrl = 'https://api.mixcloud.com/upload/?access_token=' + accessToken
#postUrl = 'http://requestb.in/wqqj8lwq'  ---> For testing what POST request sends.

files = {'mp3': open('/home/jhvisser/Music/driveAt5_'+now.strftime("%y%m%d")+'.mp3', 'rb'),
    'name': 'z103.5 Drive at 5 Streetmix - '+now.strftime("%Y%m%d"),
    'tags-0-tag': 'remix',
    'tags-1-tag': 'radio',
    'tags-2-tag': 'hits',
    'description': 'Daily weekday uploads of the latest drive at 5 music hits'
}

r = requests.post(postUrl,files=files)

Я получил следующий JSON в ответ на сообщение:

{
    "details": {
        "name": [
            "This field is required."
        ]
    },
    "error": {
        "message": "Some posted data was invalid",
        "type": "PostValidationError"
    }
}

Я не понимаю, почему он говорит, что мне не хватает поля имени. У меня есть поле имени. Возможно, что другие поля могут также давать ошибки, за исключением того, что я не уверен, что приложение Mixcloud просто прекращает проверку при ошибке или нет.

Я также сделал запрос POST для RequestBin, чтобы вы могли взглянуть на то, что именно отправляется из этого запроса. Я добавлю ссылку ниже к пастебину страницы requestbin, поскольку я считаю, что ссылки истекают на RequestBin

Зеркало PasteBin

Для сравнения, вот что показывает их пример на странице API, если вы используете CURL:

curl -F [email protected] \
     -F "name=API Upload" \
     -F "tags-0-tag=Test" \
     -F "tags-1-tag=API" \
     -F "sections-0-chapter=Introduction" \
     -F "sections-0-start_time=0" \
     -F "sections-1-artist=Artist Name" \
     -F "sections-1-song=Song Title" \
     -F "sections-1-start_time=10" \
     -F "percentage_music=75" \
     -F "description=My test cloudcast" \
     https://api.mixcloud.com/upload/?access_token=INSERT_ACCESS_TOKEN_HERE
Теги:
python-requests
post

1 ответ

1
Лучший ответ

Согласно документу и полученной вами ошибке, вы должны дать имя

имя (обязательно. Имя облачного облака - это будет использоваться для создания URL-адреса, следует избегать дублирования имен, но не приведет к сбою загрузки.

Обновить

как указано в комментарии, отправляя следующие значения, используя необязательные данные параметров, загружает файл

 data={
    'name': 'z103.5 Drive at 5 Streetmix - '+now.strftime("%Y%m%d"),
    'tags-0-tag': 'remix',
    'tags-1-tag': 'radio',
    'tags-2-tag': 'hits',
    'description': 'Daily weekday uploads of the latest drive at 5 music hits'
 }
 r = requests.post(postUrl,files=files,data=data)
  • 0
    Если вы посмотрите на мой код, у меня есть поле имени.
  • 0
    Возможно, я ошибаюсь, но имя должно быть в параметре данных, вместо файлов. я думаю, ошибка, которую вы получаете от API, должно означать, что каким-то образом он не может найти имя, которое вы посылаете
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню