iT邦幫忙

4

[Linebot] 來吧!Instagram 圖片/影音快速下載神器!我想要IG上的男/女神們照片

Gary 2021-01-22 23:54:373932 瀏覽

當你 google「Instagram 圖片 下載」時
會發現不是要你用打開某網站然後操作操作操作!#%#!@!最後才能下載,不然就是要下載APP然後又是操作操作操作!@#$@%##$%^才能下載
OS:「想下載一張圖片也太麻煩了吧!」
不用擔心了!因為真正的 Instagram 下載神器出爐了!操作簡單快速又方便,又可以快速跟在 Line 群組與好友們一起分享圖片!

以下會先講解製作此專案時時運用 API 的邏輯,歡迎大家一起串接實作~


我用此篇 API 實作了一個【Instagram小幫手】的 Linebot
以下為實作 Demo 結果


開始實作前,先告知大家,此做法有風險,因為有可能該帳號會被封鎖的危險XD

取得帳戶資料後請勿做商業行為,否則後果自行承擔唷~


進入正題

此次實作目的:

  • 獲取 Instagram 上公開帳號的的資料(照片/影片/文章/愛心數/留言數等等)
  • 獲取 Instagram 個人帳戶中的追蹤名單

需要使用的api為以下:

  1. https://www.instagram.com/{account}/?a=1
  2. https://www.instagram.com/graphql/query/?query_hash={XXXXXXXXXXXX}

第一組 api 只需要輸入該 Instagram 的 account 即可取得資訊
第二組 api 只要 query_hash 參數不同,就能對應到各種不同的 api,所以需要仔細觀察一下喔~

實作步驟為:

  1. 先獲取 Instagram 上公開帳號的 ID 流水號(此部分很重要,因為後面所有 api 都需要 ID 的存在)
    打這支 https://www.instagram.com/{account}/?a=1
    理應回傳的資料應該為
    {
        "logging_page_id":"profilePage_XXXXXXXX",
        "show_suggested_profiles":false,
        "show_follow_dialog":false,
        "graphql": {
            "user": {
                ...
                ...
                "id": "XXXXXXX", //用戶ID,很重要!!
                ...
                ...
            }
        }
     }
  1. 透過步驟一的 ID 獲取 Instagram 上公開帳號文章列表
    打這支 https://www.instagram.com/graphql/query/?參數
    參數:query_id=17888483320059182&id={剛剛取得用戶ID}&first={要顯示數量(最多50筆)} > *固定的 query_id,表示只要用這組query_id就可以取得個人文章列表
    理應回傳的資料應該為
    {
        "data": {
            "user": {
                "edge_owner_to_timeline_media": {
                "page_info": {
                    "has_next_page": true,
                    "end_cursor": "XXXXXXXXX" //上方after該帶入的資料
                    },
                 "edges":[
                     {
                         "node":{
                         ...
                         ...
                         ...
                         "shortcode":XXXXXX //等等下個步驟會使用到,是取得單篇文章的資訊
                         }
                     },
                     ...
                     ...
                 ]
                 ....
                }
            } 
        }
    }
  1. 透過步驟二的 shortcode 獲取 Instagram 上公開帳號單篇文章資訊
    打這支 https://www.instagram.com/graphql/query/?參數一&參數二
    參數一:query_hash=2c4c2e343a8f64c625ba02b2aa12c7f8 > 固定的 queryhash,表示只要用這組queryhash就可以取得個人單篇文章資料
    參數二:variables = { "shortcode":"XXXXXXXXX" }
    理應回傳的資料應該為
{
    "data": {
    "shortcode_media": {
        "__typename": "GraphSidecar",
        "id": "2487561472394557464",
        "shortcode": "CKFl_q_BngY",
        ...
        ...
        ...
    }
}

整個api邏輯是這樣
如此一來就能獲的 Instagram 用戶的個人資料了/images/emoticon/emoticon42.gif


總結
最後需要提醒一下
上述 Instagram api 僅能取得

公開帳號

公開帳號

公開帳號

的資料,很重要!需要講三遍XD

私人帳號的部分

畢竟 Instagram 本來就有固定規則是「先追蹤,若對方同意追蹤」才能查看資料

或許有人會質疑:「幹嘛這麼大費周章!我直接看IG就好了啊!」
我的答覆:「實作動機是我在IG上有追蹤一個可愛的明星,然後有天看到她po文章照片,我實在覺得很可愛XD,想要保存照片當作手機桌布(抱歉癡漢本色爆發XDD),但此時我發現IG沒有提供【下載圖片/影片】的功能,然而必須要透過電腦瀏覽器的開發者模式,找到相對應的 Elements,再細追圖片來源在哪或者是找另外的app或網站額外下載。
由於這樣實在太麻煩了!所以才做了這個 Linebot,同時如果在朋友群組內也可以直接顯示該IG帳號的照片讓朋友一起看,而且不得不說....Linebot的輪播效果真的很棒,所以看的時候觀感更好XDDD」

最後附上傳送門
ID可搜尋:@418jlhkf
Instagram小幫手
(由於server是架在heroku上,難免會有輸入後出現等待的情況...相信工程師各位都能瞭解QQ)

其實還有蠻多小細節,例如cookie或其他更多的應用方式其實沒講到
若真的有蠻多人對此專案有興趣的話
我會在寫詳細的教學實作文章出來並放上 source code
感謝大大們的觀看
/images/emoticon/emoticon41.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
snk
iT邦新手 5 級 ‧ 2021-01-29 15:07:57

感謝.bot回復的速度滿快的

snk iT邦新手 5 級 ‧ 2021-01-29 15:16:48 檢舉

原來是因為只有七個人訂閱 也許可以去ptt之類的論壇宣傳看看 通常這種bot 遊戲類的會比較多人使用 像是公主連結競技場或rank表之類的

Gary iT邦新手 3 級 ‧ 2021-01-29 21:25:38 檢舉

感謝建議~我會在其他地方宣傳看看的^^

0
Robert Chen
iT邦新手 5 級 ‧ 2021-02-04 22:06:38

求 source code /images/emoticon/emoticon07.gif

Gary iT邦新手 3 級 ‧ 2021-02-07 23:59:27 檢舉

最近先把code整理一下哈哈 之後在一次 open source/images/emoticon/emoticon41.gif

0
as130232
iT邦新手 5 級 ‧ 2021-04-13 09:40:43

您好,想請問您將服務部屬在Heroku上
連接instagram公開帳號時,是否有遇到轉導登入頁面的問題呢?

我要留言

立即登入留言