Я пытаюсь отправить загруженное пользователем видео на YouTube, используя html тип ввода file
и модуль python youtube-upload. Когда форма отправлена, она обрабатывается следующим образом:
if request.method == 'POST':
video = request.FILES['file']
v=str(video)
command = 'youtube-upload --email=email@gmail.com --password=password --title=title --description=description --category=Sports ' + v
r = subprocess.Popen(command, stdout=subprocess.PIPE)
v = r.stdout.read()
Так что я бы предположил, что проблема в том, что мне нужно предоставить более полный путь к видео. Если это так, то каков путь доступа к видео во временной памяти.
Общая форма команды:
youtube-upload --email=email --password=password --title=title --description=description --category=category video.avi
В качестве альтернативы я рассмотрел API-интерфейс youtube здесь , но если бы кто-нибудь мог предоставить более полное объяснение того, как сделать это в python, используя API, это было бы удивительно. К сожалению, руководство на сайте просто фокусируется на xml.
ИЗМЕНИТЬ СЛЕДУЮЩИЙ КОММЕНТАРИЙ sacabuche:
так что мой взгляд сейчас примерно:
def upload_video(request):
if request.method == 'POST':
video = request.FILE['file']
v = video.temporary_file_path
command = 'youtube-upload --email=email@gmail.com --password=password --title=title --description=description --category=Sports ' + v
r=subprocess.Popen(command, stdout=subprocess.PIPE)
vid = r.stdout.read()
else:
form = VideoForm()
request.upload_handlers.pop(0)
return render_to_response('create_check.html', RequestContext(request, locals() ) )
но v=video.temporary_file_path
рисует ошибку 'InMemoryUploadedFile' object has no attribute 'temporary_file_path'
. Так что видео все еще находится во временной памяти, и я не знаю, какой объект temporary_file_path
предполагается вызвать или как получить указанный объект.