Rinstapkg v0.1.0

0

Monthly downloads

0th

Percentile

An Implementation of the 'Instagram' API Using Tidy Principles

Provides functions to use the 'Instagram' API to get feed and user information, but also performs basic in-app functionality such as liking, commenting, following, and blocking. Use of this package means that you will not use it to spam, harass, or perform other nefarious acts. For more details on how to use the API please see this package's website <https://eric88tchong.github.io/Rinstapkg/> for more information, documentation, and examples.

Readme

Rinstapkg

Build
Status AppVeyor Build
Status CRAN\_Status\_Badge Coverage
Status

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.

``` r

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

#>

#> 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…

Functions in Rinstapkg

Name Description
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 package
No Results!

Vignettes of Rinstapkg

Name
getting-started.Rmd
No Results!

Last month downloads

Details

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/Rinstapkg)](http://www.rdocumentation.org/packages/Rinstapkg)