6

I cannot find an Instagram Reels related API. Does anyone know if there is one or if there will be one?

Currently the Facebook developer documentation does not mention anything about Instagram Reels. https://developers.facebook.com/docs/instagram-api/overview/

4

7 回答 7

8

Instagram API 文档中,在限制下,它目前显示“不支持卷轴”。

于 2020-08-27T20:04:11.500 回答
3

卷轴它是类型为“VIDEO”的IG 媒体。如果您知道他的Facebook 媒体 ID ,您可以获取单个“卷轴” (这不是来自 instagram 的媒体 ID)

如果卷轴像故事一样发布,您可以从故事端点(GET graph.facebook.com/{ig-user-id}/stories) 获取媒体列表。您将获得一系列媒体的 ID。

  "data": [
    {
      "id": "{ig-media-id}"
    },
  ...
  ]
}

然后您可以从单个媒体对象端点(GET /{ig-media-id})获取信息

因此,目前只有当他们发布类似故事时,您才能通过 api 获得卷轴。

无论如何,某些国家/地区不支持卷轴,您只能从这些国家的故事中看到卷轴。

更新

当您从业务发现( GET {ig-user-id}?fields=business_discovery.username(instagramm_user_name){media{id,permalink,media_type,media_url}} ) 或用户媒体( )获取用户媒体时,卷轴也可用GET /{ig-user-id}/media

如果媒体的永久链接看起来像https://www.instagram.com/reel/...和 media_typeVIDEO那么它是卷轴。

于 2020-08-18T13:02:25.043 回答
1

有一种方法不使用任何 Instagram API 使用 javascript,通过使用该 JavaScript,您可以下载所有 Instagram Reels、帖子、视频。我使用这个 javascript制作了Instagram Reels Downloader网站

const getMedia = () => {
  render.innerHTML = "<div class='image-placeholder'></div>";
  let url = _("input").value;

  if (url) {
    fetch(url)
      .then((r) => r.text())
      .then((r) => {
        // render html
        render.innerHTML = r;
        // wait, find meta and create video or image
        let w = setTimeout(() => {
          let v = _('meta[property="og:video"]');

          var x = document.getElementById("two");
          if (x.style.display === "none") {
            x.style.display = "block";
          }

          if (v) {
            createVideo(v);

          } else {
            let img = _('meta[property="og:image"]');
            if (img) {
              createImg(img);

            } else {
              document.body.innerHTML = body;
              alert("Error extracting Instagram image / video.");
            }
          }
          clearTimeout(w);
        }, 200);
      });


  } else {
    _("input").setAttribute(
      "placeholder",
      "Invalid address, use a proper Insagram link"
    );
  }
};

于 2020-11-03T09:51:58.470 回答
1

不确定,但我对 Instagram .ipa 文件进行了一些挖掘,发现了这些 url 方案参数。

instagram://reels_home
instagram://reels_share

如果单击 ios,这两者都会带您进入卷轴供稿。我的意图是打开卷轴相机(或模式设置为卷轴的故事相机),但我想目前我们只能访问卷轴提要。

于 2020-08-12T04:03:35.280 回答
1

似乎它们一开始就包含在GET /{ig-user-id}/mediaGET {ig-user-id}?fields=business_discovery.username(instagramm_user_name)端点中,但后来又删除了它们。根据文档,目前不支持它们。在此错误报告中进一步确认。似乎这不是它们第一次包含不应该包含的节点(IGTV 和现在的卷轴)。

于 2020-09-02T07:22:08.910 回答
0

如前所述,Instagram 不提供直接 API,但您可以借助Instagrapi ,它非常棒且易于使用。注意:这个 Instagram 私有 API 包装器是在 python 中的。 以下是如何使用它 - 安装 lib :

python -m pip install instagrapi

代码

    from instagrapi import Client 
    cl = Client()
    #enter your username and password
    cl.login('username', 'password')
    #you can replace 10 with whatever amount of reels you want to fetch
    reel = cl.explore_reels(amount = 10)
    print(reel)

而已 !!!

于 2021-10-24T05:45:17.993 回答
0

呐,

Instagram 尚未为 Reels 提供任何 API,因为许多国家/地区仍未提供 Reel 功能,但很快就会推出。

那么问题来了,我们如何通过 API 获取卷轴数据?

好吧,答案是你不能但是!如果你赞成这样做一些东西,那么答案肯定是肯定的!

但是如何?

我们都知道抓取需要付出很多努力,因为事情变化非常频繁。如果您不关心以下内容,可以使用示例 PHP 脚本以 JSON 格式获取 reels 数据。

<?php

//!IMPORTANT
$sessionid = ["Cookie: sessionid=YOUR SESSION ID HERE"];

// REELS SHORT CODE FROM URL
$shortcode = null;

$response = [];

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page($url)
{
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
    $options    = array(
        CURLOPT_CUSTOMREQUEST  => "GET",        //set request type post or get                            
        CURLOPT_POST           => false,        //set to GET    
        CURLOPT_USERAGENT      => $user_agent,  //set user agent                                    
        # CURLOPT_COOKIEFILE   => "cookie.txt", //set cookie file                                     
        # CURLOPT_COOKIEJAR    => "cookie.txt", //set cookie jar                                     
        CURLOPT_HTTPHEADER     => $sessionid,   // sending manually set cookie                                   
        CURLOPT_RETURNTRANSFER => true,         // return web page                                
        CURLOPT_HEADER         => false,        // don't return headers                                
        CURLOPT_FOLLOWLOCATION => true,         // follow redirects                                
        CURLOPT_ENCODING       => "",           // handle all encodings                            
        CURLOPT_AUTOREFERER    => true,         // set referer on redirect                                
        CURLOPT_CONNECTTIMEOUT => 120,          // timeout on connect                            
        CURLOPT_TIMEOUT        => 120,          // timeout on response                            
        CURLOPT_MAXREDIRS      => 10,           // stop after 10 redirects                            
    );
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err     = curl_errno($ch);
    $errmsg  = curl_error($ch);
    $header  = curl_getinfo($ch);
    curl_close($ch);
    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

if ((isset($_GET['q'])) && !empty($_GET['q'])) {

    $shortcode = $_GET['q'];
    $reels_url = "https://www.instagram.com/p/$shortcode/?__a=1";

    // read a web page and check for errors:
    $result = get_web_page($reels_url);

    if ($result['errno'] != 0) {
        $response = json_encode(['error' => "bad url, timeout, redirect loop"]);
    }

    if ($result['http_code'] != 200) {
        $response = json_encode(['error' => "no page, no permissions, no service"]);
    }
    
    if ($result['http_code'] === 200) {
        $response = $result['content'];
    }

}

// JSON OUTPUT OR ERROR HERE
header('Content-Type: application/json');
echo $response;

如何使用这个 PHP 脚本?

将上述脚本保存在一个 PHP 文件中,例如fetch-reels.php并像 http://localhost/fetch-reels.php?q={SHORT-CODE}一样运行它

卷轴 URL 例如

  1. https://www.instagram.com/p/COlKxQLAM11
  2. https://www.instagram.com/reel/COlKxQLAM11/?igshid=12f6j9a1dfx2x
于 2021-05-17T17:09:37.947 回答