Что такое код для создания альбома, используя FB graph api с appengine- pyrthon SDK? - PullRequest
1 голос
/ 19 февраля 2011

я нашел следующий код в PHP ..

какой эквивалентный код в python для этого?

//At the time of writing it is necessary to enable upload support in the Facebook SDK, you do this with the line:
$facebook->setFileUploadSupport(true);

//Create an album
$album_details = array(
        'message'=> 'Album desc',
        'name'=> 'Album name'
);
$create_album = $facebook->api('/me/albums', 'post', $album_details);

//Get album ID of the album you've just created
$album_uid = $create_album['id'];

//Upload a photo to album of ID...
$photo_details = array(
    'message'=> 'Photo message'
);
$file='app.jpg'; //Example image file
$photo_details['image'] = '@' . realpath($file);

$upload_photo = $facebook->api('/'.$album_uid.'/photos', 'post', $photo_details);

Ответы [ 2 ]

2 голосов
/ 30 октября 2012

Как ребята из Facebook написали здесь , они больше не будут поддерживать Python Facebook SDK, поэтому лучше делать запросы с помощью собственных инструментов Python.

Создание альбома:

import urllib,urllib2
access_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
path = "me/albums"
post_args = {'access_token':access_token,'name':"Test Album5", 'message':"Test Album 5"}
post_data  = urllib.urlencode(post_args)
file = urllib2.urlopen("https://graph.facebook.com/" + path + "?" , post_data)
response = file.read() 

>>>response
'{"id":"XXXXXX702571"}'

Загрузка изображения:

Я не нашел краткого способа отправки данных из нескольких частей / форм с помощью urllib2, поэтому я использовал пример из этого ответа https://stackoverflow.com/a/6843405/592737

import pycurl
import cStringIO

url = 'https://graph.facebook.com/ALBUM_ID/photos'
file ='/path/to/img.jpg'

response = cStringIO.StringIO()
c = pycurl.Curl()
values = [
    ('file' , (c.FORM_FILE,  file)),
  ('access_token' , access_token),
  ('message' , 'Image Message'),
  ]


c.setopt(c.POST, 1)
c.setopt(c.URL,url)
c.setopt(c.HTTPPOST,  values)
#c.setopt(c.VERBOSE, 1)
c.setopt(c.WRITEFUNCTION, response.write)
c.perform()
c.close()

>>>response.getvalue()
{"id":"XXXXXX07961"}

Ноесли вы используете какой-то форк Facebook python-sdk (например, https://github.com/pythonforfacebook/facebook-sdk), вы можете сделать это более коротким способом:

import facebook
access_token = "XXXXXXXXXXXXXXXXXXXXXXXX"
graph = facebook.GraphAPI(access_token)
resp = graph.put_object("me", "albums", name="Test Album",message="Test description")
graph.put_photo(open('/path/to/img.jpg'), 'Look at this cool photo!', resp['id'])
>>> _
{'id': '4394545113756'}
0 голосов
/ 30 октября 2012

Не поддерживается Facebook, но вы должны учитывать http://code.google.com/p/gae-simpleauth/ для части oauth.

Затем, как и другие ответы, используйте Python-библиотеки, такие как urllib2, для выполнения вызовов графа (и, возможно, simplejson).интерпретировать ответы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...