как получить фото инстаграм с рубином на рельсах? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь показать фотографии из Instagram в моем приложении Ruby on Rails. Следующий код работает на моей локальной машине, но на моем сервере в AWS он не показывает изображения.

Во время создания data = JSON.parse file.read, похоже, не возвращает никакого значения на сервере, но на моем ПКэто показывает JSON. Чего мне не хватает?

<%
require "open-uri"
photo_count = 10
begin
  file = open("https://www.instagram.com/#{@user.instagram}/?__a=1")
  data = JSON.parse file.read
%>
  <% data['graphql']['user']['edge_owner_to_timeline_media']['edges'].each do |instagram| %>
    <div class="col-xl-6 xd">
      <!-- Photo Box -->
      <% @caption = instagram['node']['edge_media_to_caption']['edges'].count > 0 ? instagram['node']['edge_media_to_caption']['edges'][0]['node']['text'] : "" %>
      <a href="<%=instagram['node']['display_url']%>" class="photo-box mfp-gallery" data-background-image="<%=instagram['node']['display_url']%>" data-toggle="lightbox" title="Instagram">
        <div class="photo-box-content">
          <span>Instagram</span>
        </div>
      </a>
    </div>
  <% end %>
<% rescue => ex %>
<% end %>

Обновление:

При выполнении файла file.read на моем локальном компьютере я вижу, что он показывает мне все данные пользователя Instagram следующим образом:

{"logging_page_id":"profilePage_31229027","show_suggested_profiles":false,"show_follow_dialog":false,"graphql":{"user":{"biography":"Inquiries to email@gmail.com\nAll images are under artist copyrights","blocked_by_viewer":false,"country_block":false,"external_url":"http://www.website.com/","external_url_linkshimmed":"https://l.instagram.com/?u=http%3A%2F%2Fwww.wrl ...

но на сервере я получаю это:

<!DOCTYPE html> <html lang="en" class="no-js not-logged-in client-root"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> Login • Instagram </title> <meta name="robots" content="noimageindex, noarchive"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <meta name="mobile-web-app-capable" content="yes"> <meta name="theme-color" content="#ffffff"> <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover"> <link rel="manifest" href="/data/manifest.json">

что может быть не так?

1 Ответ

0 голосов
/ 10 октября 2019

Если вы делаете много запросов, возможно, Instagram заблокировал ваш сервер для получения изображений, ваш источник работает, но API Instagram имеет защиту.

Вы можете попробовать использовать IP-прокси для полученияизображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...