Frage So rufen Sie die Anzahl der Videoaufrufe von der Instagram API ab


Instagram hat kürzlich damit begonnen, die Anzahl der Aufrufe in Videos anzuzeigen. Gibt es eine Möglichkeit, diese Daten aus der API zu ziehen?

Ich lese durch die Dokumentation aber ich konnte nichts über "Views" nur "Likes" finden.


9
2018-02-28 18:29


Ursprung


Antworten:


Ja, Sie können es bekommen, wenn Sie Ihre Facebook- und Instagram-Konten verknüpft haben und Ihr Instagram-Konto ein Geschäftsprofil hat, machen Sie folgende GET-Anfrage:

https://graph.facebook.com/v3.0/instagram_video_id/insights/video_views

Sie erhalten eine Antwort in diesem Format:

{
  "data": [
    {
      "name": "video_views",
      "period": "lifetime",
      "values": [
        {
          "value": 123
        }
      ],
      "title": "Video Views",
      "description": "Total number of times the video has been seen",
      "id": "instagram_video_id/insights/video_views/lifetime"
    }
  ]
}

1
2018-05-28 09:51



Noch nicht über die öffentliche API verfügbar.


4
2018-03-05 10:48



Der einzige Weg, den ich gefunden habe, besteht darin, die Permalinks von Beiträgen systematisch mit Hilfe von Browser-Automatisierung wie Seleniuim zu kratzen (mit einer gewissen Logik, die die Formatierung mit 5.6k Views gegenüber 1.046 Views behandelt) und das entsprechende Element auswählt. Eine einfache GET-Anfrage führt nicht zum gewünschten DOM, da Javascript nicht gefunden wurde.

In Python:

from bs4 import BeautifulSoup
from selenium import webdriver

def insertViews(posts):
    driver = webdriver.PhantomJS('<path-to-phantomjs-driver-ignoring-escapes>')
    views_span_dom_path = '._9jphp > span'

    for post in posts:
        post_type = post.get('Type')
        link = post.get('Link')
        views = post.get('Views')

        if post_type == 'video':
            driver.get(link)
            html = driver.page_source

            soup = BeautifulSoup(html, "lxml")
            views_string_results = soup.select(views_span_dom_path)
            if len(views_string_results) > 0:
                views_string = views_string_results[0].get_text()
            if 'k' in views_string:
                views = float(views_string.replace('k', '')) * 1000
            elif ',' in views_string:
                views = float(views_string.replace(',', ''))
            elif 'k' not in views_string and ',' not in views_string:
                views = float(views_string)
        else:
            views = None

        post['Views'] = views
    driver.quit()
    return posts

Der PhantomJS-Treiber kann heruntergeladen werden Hier.


3
2017-10-17 16:56