Bonjour!
Je suis en train d’écrire un script permettant d’uploader plus facilement mes videos sur dailymotion, et plus ensuite si ça marche.
J’ai donc récupérer une clé API et tout le blabla.
Je suis ce qui est dit là :
dailymotion.com/doc/api/gett … ing-videos
Cependant, je bloque au Deuxième 2. J’ai ce message d’erreur par python :
Bon, je dois mal m’y prendre, déja que c’est pas propre pour obtenir l’autorisation…
Donc voici deux questions :
- Comment envoyer mon fichier par POST avec python?
- Si possible, comment éviter d’ouvrir la page web pour autoriser l’authentification?
Bien sûr, voici le code pour tester. Il suffit de changer les variables dans la fonction main avec votre pseudo et mot de passe dailymotion.
[code]#!/usr/bin/env python
-- coding:Utf-8 --
Fichier: dailymopyup.py
Cree le 08 juin 2011 12:13:39
Derniere modification: 08 juin 2011 12:13:39
“”"
Auteur : thuban (thuban@singularity.fr)
licence : GNU General Public Licence
Description :
Script permettant d’uploader des videos sur Dailymotion
TODO :
Ajout d’un fichier de configuration, ou une meilleure présentation du
script afin de permettre de préciser :
le nom d’utilisateur
le mot de passe
le navigateur à utiliser
"""
try:
import sys
import urllib.request, urllib.parse
import os
except ImportError as err:
print (“Couldn’t load module. {0}”.format(err))
sys.exit(2)
def authentify(username,password):
’’’ Fonction pour s’authentifier sur dailymotion
prend pour arguments le login username et le mot de passe password
’’’
clientId = '3224716f65ec913ee931'
clientPassword = '85fe767252de62b4d3d16b489acaa92651bfc175'
p = urllib.parse.urlencode({'grant_type' : 'password',\
'client_id' : clientId, \
'client_secret' : clientPassword, \
'username' : username,\
'password' : password})
p = p.encode('utf-8')
resp = urllib.request.urlopen('https://api.dailymotion.com/oauth/token', p)
resp = resp.read().decode('utf-8')
resp = resp.split('"')
accessToken = resp[3]
# now we use the access token
urllib.request.urlopen('https://api.dailymotion.com/videos?'+'access_token='+accessToken )
# asking for rights
p = urllib.parse.urlencode({‘response_type’ : ‘code’, \
‘client_id’ : clientId, \
‘redirect_uri’ :
‘http://www.example.com/callback’, \
‘scope’ : ‘read write’})
p = p.encode(‘utf-8’)
#r = urllib.request.urlopen('https://api.dailymotion.com/oauth/authorize?', p)
#print(r.read().decode('utf-8'))
# Ce qui est ci-dessus de fonctionne pas, je me rabat sur une solution
# hyper moche
os.system('/usr/bin/x-www-browser https://api.dailymotion.com/oauth/authorize?response_type=code\&client_id=3224716f65ec913ee931\&redirect_uri=http://www.example.com/callback\&scope=read+write')
return accessToken
def upload(accessToken, video):
# asking a file url
p = urllib.parse.urlencode({‘access_token’ : accessToken})
r = urllib.request.urlopen(‘https://api.dailymotion.com/file/upload?%s’ % p)
r = r.read().decode(‘utf-8’).replace(’\’, ‘’)
r = r.split(’"’)
print®
uploadUrl = r[3]
# now we have the url
# let’s upload
with open(video, ‘r’) as v:
p = urllib.parse.urlencode({‘access_token’ : accessToken, ‘file’ : v})
p = p.encode(‘utf-8’)
r = urllib.request.urlopen(uploadUrl, p)
r = r.read().decode(‘utf-8’)
print®
def main():
username = 'LOGIN’
passwd = '****
video = ‘/home/xavier/out.ogv’
try:
accessToken = authentify(username, passwd)
except:
print('Impossible de s\'authentifier')
sys.exit(2)
upload(accessToken, video)
return 0
if name == ‘main’:
main()
vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
[/code]