Skip to main content

A Python wrapper around the Facebook API

Project description

Python Facebook

A Python wrapper around for Facebook Common API.

Build Status Codecov

README: English | 中文

THANKS

This project structure is base on Python-Twitter.

Thanks a lot for Python-Twitter Developers.

Introduction

Library provides a service to easy use Facebook web api.

It currently includes the use of Facebook and Instagram Business product data.

Using

Facebook API

The API is exposed via the pyfacebook.Api class.

This API need facebook OAUTH keys to get any data from facebook. And the facebook app is required first.

If you not have facebook app, you can view Facebook Developers to apply one. If you have app. you can do as follows example.

All the OAuth Doc to see Facebook Access Token

To create an instance of the pyfacebook.Api with two different methods. Use only long term token or provide app id, app secret and short token:

In [1]: import pyfacebook

In [2]: api = pyfacebook.Api(app_id='your app id',   # use the second method.
   ...:                      app_secret='your app secret',
   ...:                      short_token='your short token')

In [3]: api = pyfacebook.Api(long_term_token='your long term access token')

To see if your config well:

In [4]: api.get_token_info(return_json=True)
Out[4]:
{'data': {'app_id': 'xxx',
'type': 'USER',
'application': 'xxx',
'data_access_expires_at': 1555231532,
'expires_at': 1553244944,
'is_valid': True,
'issued_at': 1548060944,
'scopes': ['public_profile'],
'user_id': 'xxx'}}

To fetch one facebook page’s public data:

In [5]: api.get_page_info(page_id='20531316728')  # you can make return_json True to see more fields
Out[5]: Page(ID=20531316728, username=facebook)

To fetch a list facebook page’s posts data:

In [6]: api.get_posts(username='facebook')
Out[6]:
[Post(ID=20531316728_10158033357426729, permalink_url=https://www.facebook.com/20531316728/posts/10158033357426729/),
 Post(ID=2031316728_10157806010111729, permalink_url=https://www.facebook.com/20531316728/posts/10157806010111729/),
 Post(ID=20531316728_1877006505687069, permalink_url=https://www.facebook.com/facebook/videos/1877006505687069/),
 Post(ID=20531316728_267444427196392, permalink_url=https://www.facebook.com/facebook/videos/267444427196392/)]

To fetch point post info:

In [7]: res = api.get_post_info(post_id='20531316728_10157619579661729')

In [8]: res
Out[8]: Post(ID=20531316728_10157619579661729, permalink_url=https://www.facebook.com/20531316728/posts/10157619579661729/)

In [9]: res.comments
Out[9]: 1016

To fetch pointed object(post,picture and so on)’s comments data:

In [10]: res = api.get_comments(object_id='20531316728_10157619579661729', summary=True)
In [11]: res
Out[11]:
([Comment(ID=10157619579661729_10157621841846729,created_time=2018-08-16T13:01:09+0000),
  Comment(ID=10157619579661729_10157621842496729,created_time=2018-08-16T13:01:31+0000),
  Comment(ID=10157619579661729_10157621842611729,created_time=2018-08-16T13:01:34+0000),
  Comment(ID=10157619579661729_10157621842701729,created_time=2018-08-16T13:01:37+0000),
  Comment(ID=10157619579661729_10157621843186729,created_time=2018-08-16T13:01:52+0000),
  Comment(ID=10157619579661729_10157621843316729,created_time=2018-08-16T13:01:55+0000),
  Comment(ID=10157619579661729_10157621843376729,created_time=2018-08-16T13:01:58+0000),
  Comment(ID=10157619579661729_10157621843721729,created_time=2018-08-16T13:02:11+0000),
  Comment(ID=10157619579661729_10157621843771729,created_time=2018-08-16T13:02:13+0000),
  Comment(ID=10157619579661729_10157621843836729,created_time=2018-08-16T13:02:14+0000)],
 CommentSummary(order=chronological,total_count=987))
In [12]res[1]
Out[12]: CommentSummary(order=chronological,total_count=987)
res[13].as_json_string()
Out[13]: '{"can_comment": true, "order": "chronological", "total_count": 987}'

Instagram API

At present, the business Account of Instagram can be accessed through the API provided by Facebook.

That is pyfacebook.Instagram Api can only get data of the business Account on Instagram platform.

The business Account is the Account who associates Instagram account with Facebook page.

Initialization of the pyfacebook.InstagramApi instance requires the provision of user authorization Token for App with Instagram privileges, and also need an available Instagram business account.

For detailed documentation, please consult:

Usage example:

Similar to Facebook Api, the InstagramApi instance can also be initialized in two ways, but requires an additional instagram_business_id parameter:

# Use temporary tokens and App secret
In [1] import pyfacebook

In [2] api = pyfacebook.InstagramApi(
   ...     app_id = 'App ID',
   ...     app_secret='App secret',
   ...     short_token='your temporary token',
   ...     instagram_business_id='your Instagram business id')

# Use long-term tokens
In [3] api = pyfacebook.InstagramApi(
   ...     long_term_token='your long term access token',
   ...     instagram_business_id='your Instagram business id')

Get basic information about a user:

In [12]: api.get_user_info(username='jaychou')
Out[12]: User(ID=17841405792603923, username=jaychou)

In [13]: api.get_user_info(username='jaychou', return_json=True)
Out[13]:
{'business_discovery': {'biography': 'https://www.facebook.com/jay/',
  'id': '17841405792603923',
  'ig_id': 5951385086,
  'followers_count': 3303887,
  'follows_count': 50,
  'media_count': 319,
  'name': 'Jay Chou 周杰倫',
  'profile_picture_url': 'https://scontent.xx.fbcdn.net/v/t51.2885-15/21147825_124638651514445_4540910313213526016_a.jpg?_nc_cat=1&_nc_ht=scontent.xx&oh=9a84c5d93df1cf7fb600d21efc87f983&oe=5CE45FFA',
  'username': 'jaychou',
  'website': 'https://youtu.be/MAjY8mCTXWk'},
  'id': '17841406338772941'}

Mass access to a user’s posts(Get nearly 50 by default):

In [3]: api.get_medias(username='jaychou')
Out[3]:
    [Media(ID=17852512102358859, link=https://www.instagram.com/p/BuKth42Hpsm/),
     Media(ID=17914455160286660, link=https://www.instagram.com/p/BuILzrcnljS/),
     Media(ID=18038180344016282, link=https://www.instagram.com/p/BuDAlT0n0kq/),
     Media(ID=18000503476161727, link=https://www.instagram.com/p/Bt6SyHmnGyn/),
     Media(ID=17863710898325821, link=https://www.instagram.com/p/Bt49wLUnTaO/),
     Media(ID=17857272226339334, link=https://www.instagram.com/p/Bt4n5Q5ncKa/),
     Media(ID=17854413100345353, link=https://www.instagram.com/p/Bt33bRznSNo/),
     Media(ID=18033275821031206, link=https://www.instagram.com/p/Bt2bECmn0R_/),
     Media(ID=18033135562032465, link=https://www.instagram.com/p/Bt1sedfnnqD/),
     Media(ID=17933504032265945, link=https://www.instagram.com/p/BtzPPiGn2gE/),
     Media(ID=18017672368106762, link=https://www.instagram.com/p/Btt-rKqHGLH/),
     Media(ID=18033213532062450, link=https://www.instagram.com/p/BtkVolVnhXu/),
     Media(ID=18031391875036047, link=https://www.instagram.com/p/BtjkEmxH7gR/),
     Media(ID=18029417977062683, link=https://www.instagram.com/p/Btd5jPvHQUm/).....]

Get information about a post(This API is available only for posts on the current Instagram business account and is not available to others):

In [5]: api.get_media_info(media_id='17861821972334188')
Out[5]: Media(ID=17861821972334188, link=https://www.instagram.com/p/BuGD8NmF4KI/)

TODO

Now. You can Only get page info and page post info and object(post,picture)’s comment.

TODO:

  • Acquisition of Insights Data

  • publish

  • more.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-facebook-api-0.2.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

python_facebook_api-0.2-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file python-facebook-api-0.2.tar.gz.

File metadata

  • Download URL: python-facebook-api-0.2.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

File hashes

Hashes for python-facebook-api-0.2.tar.gz
Algorithm Hash digest
SHA256 e3ba5892d0a8b902e8b9f30cc2a8a5c52e9736fee70a1acf6d03fbd61b234dd9
MD5 08796ed0d9cd151ce920d13951d9ecd0
BLAKE2b-256 628c8ae6ac5b0d2bcf54203d3d337921c8aeef7bccf288d2d8996d1c76f020c1

See more details on using hashes here.

File details

Details for the file python_facebook_api-0.2-py3-none-any.whl.

File metadata

  • Download URL: python_facebook_api-0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

File hashes

Hashes for python_facebook_api-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 13dfed93fddb4fcb577f547305d7b1f89d7dd3e4c106ae95a4825dfae58391d9
MD5 4cbba14e4e5dc10808875271553ceb11
BLAKE2b-256 4411484ca3059abccf5622cdf14c111aa962f46e94a1f5e184133abe704caaf3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page