17

私は、ink361 がどのようにしてユーザー名から Instagram RSS フィードを作成しているのか疑問に思っていました。

フィードの例: http://ink361.com/feed/user/snoopdogg

ブログ投稿: http://blog.ink361.com/post/23664609916/new-rss-instagram-feed-feature-on-ink361-com

任意の洞察をいただければ幸いです。

ありがとう。

4

8 に答える 8

11

Instagram には一般にアクセス可能な RSS API があり、それに関する情報を見つけるのは困難ですが、タグには機能します (私たちはそれを使用しています)。

タグの構文は次のとおりです。

http://instagr.am/tags/some-tag-you-want-to-follow/feed/recent.rss

ユーザーのフィードに似たようなものがあるかどうかはわかりません。これに関する情報を見つけるのは非常に難しく、公式 API を支持して日ごとに消える可能性があると私は言いましたが、今のところは機能しますタグ。

これについての公式ブログ投稿は次のとおりです(ただし、タグのみをカバーしています):http://blog.instagram.com/post/8755963247/introducing-hashtags-on-instagram

于 2013-03-26T11:18:44.113 に答える
5

@ user2543857 さんの回答は良かったです。残念ながら、Instagram データの構造が変更されました。これを投稿した日の時点で、これは機能します。PHP サーバー上のファイルにコピー アンド ペーストし、次のように使用します。 yoursite.com/instarss.php?user=name_of_instagram_user これにより、有効な XML/RSS フィードが返されます。

編集!!当然、ページ/JSON の出力は、instagram の新しいルック/フィールに合わせて変更されました。更新されたコードは次のとおりです (2015 年 6 月):

<?php

if (!isset($_GET['user'])) {
    exit('Not a valid RSS feed. You didn\'nt provide an Instagram user. Send one via a GET variable. Example .../instarss.php?user=snoopdogg');
}

header('Content-Type: text/xml; charset=utf-8');

$html = file_get_contents('http://instagram.com/'.$_GET['user'].'/');
$html = strstr($html, '{"static_root');
$html = strstr($html, '</script>', true);
//$html = substr($html,0,-6);
$html = substr($html, 0, -1);

$data = json_decode($html);

// print_r($data->entry_data->ProfilePage[0]->user->media->nodes);

$rss_feed = '<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel>';
$rss_feed .= '<title>'.$_GET['user'].'\'s Instagram Feed</title><atom:link href="http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"].'" rel="self" type="application/rss+xml" /><link>http://instagram.com/'.$_GET['user'].'</link><description>'.$_GET['user'].'\'s Instagram Feed</description>';

foreach($data->entry_data->ProfilePage[0]->user->media->nodes as $node) {

    $rss_feed .= '<item><title>';

    if(isset($node->caption) && $node->caption != '') {
        $rss_feed .= htmlspecialchars($node->caption, ENT_QUOTES, ENT_HTML5);
    } else {
        $rss_feed .= 'photo';
    }

    // pubdate format could also be: "D, d M Y H:i:s T"
    $rss_feed .= '</title><link>https://instagram.com/p/'.$node->code.'/</link><pubDate>'.date("r", $node->date).'</pubDate><dc:creator><![CDATA['.$_GET['user'].']]></dc:creator><description><![CDATA[<img src="'.$node->display_src.'" />]]></description><guid>https://instagram.com/p/'.$node->code.'/</guid></item>';

} // foreach "node" (photo)

$rss_feed .= '</channel></rss>';

echo $rss_feed;
?>

実際には、上記のコードは使用しないでください。今後もこの Gistを維持するように努めます。

編集 2016 年 12 月: 常に変化する Instagram の出力を追跡して、画面をスクレイピングし、数か月後に変更することにうんざりしています。API を使用するだけでよいと思います。まだユーザーのページから RSS フィードを作成することに興味がある場合は、この Gistでその方法についてのアイデアが得られるはずです。

于 2014-08-28T23:17:20.313 に答える
4

/users/user-id/media/recentAPI エンドポイントを使用して、Instagram ユーザーのフィードにアクセスできます。このエンドポイントには、 Instagram で一部のユーザーaccess_tokenを承認することによって取得できる が必要です(必ずしもフィードを要求するユーザーであるとは限りません)。受け取りまでの流れはこちらで解説しています。access_token

したがって、ink361 が行っている可能性があるのはaccess_token、自分自身 (Instagram のユーザー) を取得し、それを使用して/users/user-id/media/recent他のユーザーのフィードを要求することです。そのような単純な。

于 2013-05-10T12:44:22.350 に答える
4

ヒントをくれたtorvinに感謝します。

API を使用せずにサイトで instagram の画像を取得する方法を次に示します。

URL とユーザー名から json ファイルを作成します (これを 1 日 X 回の cron ジョブとして設定します)

<?
$html = file_get_contents('http://instagram.com/username/');
$html = strstr($html, '["lib');
$html = strstr($html, '</script>', true);
$html = substr($html,0,-6);
file_put_contents("username.json",$html);
?>

json フィードからいくつかの画像を表示する

<?
$json = file_get_contents('username.json');
$data = json_decode($json);

$img1 = $data[2][0]->props->userMedia[0]->images->standard_resolution->url;
$img2 = $data[2][0]->props->userMedia[1]->images->standard_resolution->url;
$img3 = $data[2][0]->props->userMedia[2]->images->standard_resolution->url;

print '<img src="'.$img1.'" />';
print '<img src="'.$img2.'" />';
print '<img src="'.$img3.'" />';
?>
于 2013-07-02T18:23:07.170 に答える
-1

APIを使用して、InstagramのRSSフィードにアクセスできます。彼らのAPIは認証にoAuth2を使用します。私は個人のブログでこの方法を使用して、ホームページにInstagramの写真を取り込みます。これがink361サイトの仕組みだと思います。Ink361はInstagramAPIに接続し、InstagramアカウントへのInstagramアクセスを許可するために使用するInstagramボックスを介してユーザーにログインを促します。ink361サイトは、認証が成功すると、Instagramが受信したトークンをキャッシュするため、認証に同じトークンを使用して、定期的にInstagramAPIに繰り返し戻ることができます。ビンゴはユーザーデータにアクセスでき、そこからRSSフィードを作成できます。

于 2013-02-07T12:36:28.037 に答える
-1

答えは簡単です。
ユーザー データにアクセスするには、有効なアクセス トークンが必要です。
ink361 にはソーシャル ネットワークhttp://vk.com/app3225087にアプリがあり、認証されたユーザーのアクセス トークンを db に保存します。
dbで有効なものを見つけて、必要なユーザーデータを取得するだけです

于 2013-09-28T21:03:29.443 に答える