florianklee/social-feed-bundle

collecting posts from all type of social feeds like twitter, instagram, facebook for multiple user accounts.

v1.0.3 2016-09-05 16:32 UTC

This package is not auto-updated.

Last update: 2024-04-08 11:33:54 UTC


README

The GenjSocialFeedBundle. Features:

  • Scrape social posts from Twitter, Instagram & Facebook pages.
  • Display most recent posts

Requirements

Installation

Add this bundle and the facebook/instagram/twitter libraries to your composer.json:

    ...
    "require": {
        ...
        "genj/social-feed-bundle": "dev-master"
        ...

Then run composer update. After that is done, enable the bundle in your AppKernel.php:

General

# app/AppKernel.php

class AppKernel extends Kernel
{

    public function registerBundles() {

        $bundles = array(
            ...
            new Genj\SocialFeedBundle\GenjSocialFeedBundle()
            ...

Update your database schema:

php app/console doctrine:schema:update --force

Configuration

Copy the social_feed.yml.dist to app/config/social_feed.yml Add all the needed configurations. Remove the providers that you don't need.

Check all Possible configuration by dumping the config

app/console config:dump-reference GenjSocialFeedBundle

Add your basic API tokens to your parameters.yml by adding this to your parameters.yml.dist

genj_social_feed.twitter.consumer_key: null
genj_social_feed.twitter.consumer_secret: null
genj_social_feed.twitter.user_token: null
genj_social_feed.twitter.user_secret: null

genj_social_feed.facebook.app_id: null
genj_social_feed.facebook.app_secret: null
genj_social_feed.facebook.client_token: null

genj_social_feed.instagram.client_id: null

and then run the install command of composer

php composer.phar install

Your config.yml will look like this: (Leave out the providers that you don't use)

genj_social_feed:
    oAuth:
        twitter:
            consumer_key:    %genj_social_feed.twitter.consumer_key%
            consumer_secret: %genj_social_feed.twitter.consumer_secret%
            user_token:      %genj_social_feed.twitter.user_token%
            user_secret:     %genj_social_feed.twitter.user_secret%
        facebook:
            app_id:          %genj_social_feed.facebook.app_id%
            app_secret:      %genj_social_feed.facebook.app_secret%
            client_token:    %genj_social_feed.facebook.client_token%
        instagram:
            client_id:       %genj_social_feed.instagram.client_id%
    feed_users:
        twitter:
            - nicokaag
        facebook:
            - nicokaag
        instagram:
            - nicokaag

Add the needed vich mapping configuration to your config.yml

...
vich_uploader:
    ...
    mappings:
        ...
        genj_socialfeed_post_file:
            uri_prefix:         /uploads/genjsocialfeedpost
            upload_destination: %kernel.root_dir%/../web/uploads/genjsocialfeedpost
            namer:              vich_uploader.namer_origname
            inject_on_load:     true
        genj_socialfeed_post_author_file:
            uri_prefix:         /uploads/genjsocialfeedpostauthor
            upload_destination: %kernel.root_dir%/../web/uploads/genjsocialfeedpostauthor
            namer:              vich_uploader.namer_origname
            inject_on_load:     true

If you want to make use of the JSON api call to get the social posts, add the following routing:

genj_social_feed_posts_get:
    pattern:  /api/social-feed/posts
    defaults:
        _controller: GenjSocialFeedBundle:SocialFeed:getPosts
        _format: ~
        max: 5
        provider: ""
    requirements:
        _method: GET
        max: '^\d+$'

Run feed scraper task

php app/console genj:social-feed --provider=facebook

provider can be:

  • facebook
  • twitter
  • instagram

ToDo

  • Add tests