Learn R Programming

Rinstapkg

Rinstapkg is an R package that connects to the Instagram API using tidy principles. Rinstapkg is short for the Real Instagram Package. With this package you can like, comment, follow, and slide into some DMs just like the real Instagram. You can also get tons of feed data: user feeds, timeline feeds, location feeds and more! All this comes without the need to register for an application. Here are some of the package highlights:

  • OAuth 2.0 (Single Sign On) and Basic (Username-Password) Authentication methods (ig_auth())
  • Retrieve Feeds of different types:
    • ig_my_timeline(), ig_get_user_feed(), ig_get_hashtag_feed(), and more!
  • Retrieve Users, Tags, Comments, and Perform Searches:
    • ig_get_followers(), ig_get_user_tags(), ig_get_media_comments(), ig_search_users(), etc.

NOTE: With great power comes great responsibility. Use of this package means that you will not use it to spam, harass, or perform other nefarious acts.

Table of Contents

Installation

# install from CRAN
install.packages("Rinstapkg")

# get the latest version available on GitHub using the devtools package
# install.packages("devtools")
devtools::install_github("eric88tchong/Rinstapkg")

If you encounter a bug or issue, please file a minimal reproducible example on GitHub.

Usage

Authenticate

First, load the Rinstapkg package and log in. There are two ways to authenticate:

  1. OAuth 2.0
  2. Basic Username-Password

It is recommended to use OAuth 2.0 if you apply for and are approved for an Instagram App. This way multiple users can use your app without having to explicity share their credentials with you. If you do not have an approved app, you can still use this package by providing your username and password.

library(Rinstapkg)

# Using OAuth 2.0 authentication
ig_auth()

# Using Basic Username-Password authentication
ig_auth(username = "YOUR_USERNAME_OR_EMAIL_HERE", 
        password = "YOUR_PASSWORD_HERE")

After logging in with ig_auth(), you can check your connectivity by looking at the information returned about your timeline (ig_my_timeline()), inbox (ig_my_inbox()), or recent activity (ig_my_recent_activity()). It should be information about you!

Timeline Feed

A simple function to start with is verifying that you can retrieve your timeline as it would appear in the Instagramm app or online. This function returns data that would appear in the authenticated user’s timeline feed. By default, the data is returned as a tidy tbl_df where each row represents one post from the feed. If you prefer to work with a list format, then just specify return_df=FALSE as an argument.

timeline_results <- ig_my_timeline()
timeline_results
#> # A tibble: 16 x 37
#>    taken_at      pk id    device_timestamp media_type code 
#>       <int>   <dbl> <chr>            <dbl>      <int> <chr>
#>  1   1.56e9 2.03e18 2034…  155676208810893          1 Bw8V…
#>  2   1.56e9 2.02e18 2024…  155552010984491          1 BwXT…
#>  3   1.55e9 2.01e18 2012… 1554147789723231          1 Bvua…
#>  4   1.55e9 1.99e18 1994… 1551925346931404          1 BusL…
#>  5   1.55e9 1.99e18 1991… 1551641044183919          1 Bujt…
#>  6   1.55e9 1.99e18 1985… 1550918831604424          1 BuOL…
#>  7   1.55e9 1.98e18 1982… 1550540314361522          1 BuC6…
#>  8   1.55e9 1.98e18 1981…  155045410572131          1 BuAV…
#>  9   1.55e9 1.98e18 1981… 1550455167737230          1 BuAW…
#> 10   1.55e9 1.98e18 1976… 1549857235614429          1 Btui…
#> 11   1.55e9 1.97e18 1973… 1549464013913359          1 Bti0…
#> 12   1.55e9 1.97e18 1972… 1549402375783967          1 Btg_…
#> 13   1.55e9 1.97e18 1968… 1548890866357063          1 BtRv…
#> 14   1.55e9 1.97e18 1969… 1548970299424940          1 BtUG…
#> 15   1.55e9 1.97e18 1969… 1548961006833604          1 BtT0…
#> 16   1.55e9 1.97e18 1969… 1548955131255990          1 BtTp…
#> # … with 31 more variables: client_cache_key <chr>, filter_type <int>,
#> #   image_versions2 <list>, original_width <int>, original_height <int>,
#> #   location <list>, lat <dbl>, lng <dbl>, user <list>,
#> #   can_viewer_reshare <lgl>, caption_is_edited <lgl>,
#> #   direct_reply_to_author_enabled <lgl>, comment_likes_enabled <lgl>,
#> #   comment_threading_enabled <lgl>, has_more_comments <lgl>,
#> #   max_num_visible_preview_comments <int>,
#> #   can_view_more_preview_comments <lgl>, comment_count <int>,
#> #   inline_composer_display_condition <chr>, like_count <int>,
#> #   has_liked <lgl>, likers <list>, photo_of_you <lgl>, caption <list>,
#> #   can_viewer_save <lgl>, organic_tracking_token <chr>, preview <chr>,
#> #   next_max_id <dbl>, preview_comments <list>, usertags <list>,
#> #   has_viewer_saved <lgl>

Get Followers

With the ig_get_followers() function you can retrieve a tbl_df of all the users that follow a particular user. Just provide the user_id of the account whose followers you would like to get. NOTE: The Instagram APIs use Ids to retrieve information so instead of giving the account’s username (typically starting with an @symbol), you need to first grab the user_id of that account using the username, then supply it to the ig_get_followers() function.

# Get Justin's Biebers beliebers!
# Side Note: A belieber is a HUGE Justin Bieber fan.
bieber_user_id <- ig_get_user_id("justinbieber")
follower_results <- ig_get_followers(bieber_user_id)
follower_results
#> # A tibble: 2,196 x 9
#>         pk username full_name is_private profile_pic_url is_verified
#>      <dbl> <chr>    <chr>     <lgl>      <chr>           <lgl>      
#>  1 1.42e10 joaooos… j@        TRUE       https://instag… FALSE      
#>  2 1.41e10 shevele… Шевелев … FALSE      https://sconte… FALSE      
#>  3 7.16e 9 microbi… Ashish D… FALSE      https://sconte… FALSE      
#>  4 6.95e 9 __its_p… 

Copy Link

Version

Install

install.packages('Rinstapkg')

Monthly Downloads

4

Version

0.1.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Eric Tchong

Last Published

June 8th, 2019

Functions in Rinstapkg (0.1.0)

VERB_n

Generic implementation of HTTP methods with retries and authentication
media_type_enum

Lookup Media Type Enum
ig_input_data_validation

Validate the input for an operation
get_os

Determine the host operating system
feed

Instagram Feeds
rPUT

PUTs with retries and authentication
ig_access_token

Return access_token attribute of OAuth 2.0 Token
csrf_token_available

Check csrf_token availability
ig_get_user_tags

Get Feed of Posts for a Tagged User
items_to_tidy_df

Convert JSON List of Items to as Data Frame
as_epoch

Convert a value to Epoch Time
ig_following_recent_activity

Get news feed of recent activities for accounts you follow
ig_edit_media_caption

Edit a Post's Caption
ig_comment

Comment or Delete a Comment on a Post
ig_get_liked_feed

Get Feed of Liked or Saved Posts
Rinstapkg_state

Return the package's .state environment variable
ig_get_location_feed

Get Feed of a Location
ig_auth

Log in to Instagram
ig_auth_check

Check that an Authorized Instagram Session Exists
ig_like

Like or Unlike a Post
ig_generic_POST

A Generic POST Function
ig_my_recent_activity

Get news feed of recent activities by you
ig_generic_GET

A Generic GET Function
rank_token_available

Check rank_token availability
ig_my_inbox

Get direct inbox messages for your account
rGET

GETs with retries and authentication
rDELETE

DELETEs with retries and authentication
ig_comment_delete_bulk

Delete Comments on a Post in Bulk
ig_get_hashtag_feed

Get Feed of a Hashtag
ig_get_followers

Get Follower Info
ig_get_media_comments

Get Media Comments and Likers
ig_get_user_id

Get a User Id
ig_sync_features

Synchronise experiments
is_legit_token

Check that token appears to be legitimate
ig_rank_token

Return rank_token resulting from Basic auth routine
ig_my_timeline

Get the authenticated user's timeline feed
ig_get_media_info

Get Media Info
token_available

Check token availability
ig_save

Save or Unsave a Post
ig_search_tags

Search by Hashtag
ig_get_user_profile

Get a User's Profile
ig_get_popular_feed

Get Feed of Popular Posts
ig_search_users

Search by Username
ig_get_user_feed

Get Feed of a User's Posts
rPOST

POSTs with retries and authentication
rPATCH

PATCHs with retries and authentication
ig_csrf_token

Return csrf_token resulting from Basic auth routine
generate_signed_body

Generate a Signed Body
generate_uuid

Generate a Unique Id
catch_errors

Function to catch and print HTTP errors
ig_delete_media

Delete a Post
check_user_id

Validate a User Id
ig_auth_refresh

Refresh an existing Authorized Instagram Token
ig_autocomplete_userlist

Get bootstrap user data (autocompletion user list)
Rinstapkg

Rinstapkg packageFigure: Rinstapkg.png