module Actions

Various actions you can do on Instagram and other related methods.

Public Instance Methods

follow_if_not_in_db(user) click to toggle source

Follows the user if it doesn't exist in the database.

@param user [UserData] a UserData instance. @return (see like_media)

# File lib/botinsta/actions.rb, line 95
def follow_if_not_in_db(user)
  return false if user.exists_in_db?(@table_follows)

  if follow_user(user.id)
    @total_follows += 1
    print_success_message(action: :follow, number: @total_follows, data: @user.username)
    user.insert_into_db(@table_follows)
    sleep_rand(28, 36)
    true
  else
    false
  end
end
follow_user(user_id) click to toggle source

Follows user given by user_id.

@param user_id [String] @return (see like_media)

# File lib/botinsta/actions.rb, line 43
def follow_user(user_id)
  url_follow = "https://www.instagram.com/web/friendships/#{user_id}/follow/"
  print_try_message(action: :follow, data: user_id)
  begin
    set_request_params
    response = @agent.post url_follow, @params, @request_headers
  rescue Mechanize::ResponseCodeError
    return false
  end
  response_data = JSON.parse(response.body)
  response.code == '200' && response_data['result'] == 'following' ? true : false
end
like_if_not_in_db(media) click to toggle source

Likes the media if it doesn't exist in the database.

@param media [MediaData] a MediaData instance. @return (see like_media)

# File lib/botinsta/actions.rb, line 77
def like_if_not_in_db(media)
  return false if media.exists_in_db?(@table_likes)

  if like_media(media.id)
    @total_likes += 1
    print_success_message(action: :like, number: @total_likes, data: @media.id)
    media.insert_into_db(@table_likes)
    sleep_rand(28, 36)
    true
  else
    false
  end
end
like_media(media_id) click to toggle source

Likes media given by media id.

@param media_id [String] @return [true, false] returns true on success, false otherwise.

# File lib/botinsta/actions.rb, line 9
def like_media(media_id)
  url_like = "https://www.instagram.com/web/likes/#{media_id}/like/"
  print_try_message(action: :like, data: media_id)
  begin
    set_request_params
    response = @agent.post url_like, @params, @request_headers
  rescue Mechanize::ResponseCodeError
    return false
  end
  response_data = JSON.parse(response.body)
  response.code == '200' && response_data['status'] == 'ok' ? true : false
end
unfollow_user(user_id) click to toggle source

Unfollows user given by user_id.

@param user_id [String] @return (see like_media)

# File lib/botinsta/actions.rb, line 60
def unfollow_user(user_id)
  url_unfollow = "https://www.instagram.com/web/friendships/#{user_id}/unfollow/"
  print_try_message(action: :unfollow, data: user_id)
  begin
    set_request_params
    response = @agent.post url_unfollow, @params, @request_headers
  rescue Mechanize::ResponseCodeError
    return false
  end
  response_data = JSON.parse(response.body)
  response.code == '200' && response_data['status'] == 'ok' ? true : false
end
unlike_media(media_id) click to toggle source

Unlikes media given by media id.

@param media_id [String] @return (see like_media)

# File lib/botinsta/actions.rb, line 26
def unlike_media(media_id)
  url_unlike = "https://www.instagram.com/web/likes/#{media_id}/unlike/"
  print_try_message(action: :unlike, data: media_id)
  begin
    set_request_params
    response = @agent.post url_unlike, @params, @request_headers
  rescue Mechanize::ResponseCodeError
    return false
  end
  response_data = JSON.parse(response.body)
  response.code == '200' && response_data['status'] == 'ok' ? true : false
end