0 Daumen
913 Aufrufe

Wie erhalte ich FT-Artikel über ihre API?

Nachdem ich nach einem Schlüssel gefragt hatte, verwendete ich zuerst einen Python-API-Wrapper für die Inhalts-API, Version 2. Also lief ich folgendes:

from pyft import FT

ft = FT()
# the id can be pulled from the slug url of an FT.com story
content = ft.get_content("6f2ca3d6-86f5-11e4-982e-00144feabdc0")
print(content)

Und bekam

{'error': 'Access to this API has been disallowed'}

Also folgte ich den offiziellen Anweisungen, bekam aber den gleichen Fehler.

Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort

Stelle sicher, dass "6f2ca3d6-86f5-11e4-982e-00144feabdc0" eine gültige item_id germäß API Reference ist.

HTTP-Anfragen sollen an https://api.ft.com gesendet werden, die von dir verwendete Bibliothek sendet an http://api.ft.com.

Stelle sicher, dass du den API Key zusammen mit der HTTP-Anfrage sendest. Dein Quelltext tut das nicht.

Also folgte ich den offiziellen Anweisungen

Welche waren das im Einzelnen?

Avatar von 5,7 k

Ich denke, dass der von mir bereitgestellte Abfrageparameter apiKey gut ist. Ich habe es auch mit anderen ausprobiert und habe das Problem immer noch.

Wie kann ich http in https ändern?

Ich denke, ich sende den API-Schlüssel dank der Datei .ft.key, die ich unter Users\ antoi\ und an pyft FT abgelegt habe.

Wie kann ich http in https ändern?

In der Datei __init__.py von pyft.

Ich denke, ich sende den API-Schlüssel dank der Datei .ft.key, die ich unter Users\ antoi\ und an pyft FT abgelegt habe.

pyft liefert leider keine Fehlermeldung, falls dabei etwas schief läuft. Zumindes am Ende wo "#Raise Custom Exception" steht, solltest du selbst eine Ausnahme werfen.

pyft liefert leider keine Fehlermeldung, falls dabei etwas schief läuft. Zumindes am Ende wo "#Raise Custom Exception" steht, solltest du selbst eine Ausnahme werfen.


Ok, zum Beispiel mit dem API-Schlüssel? Aber da ich es nicht übertragen kann, kann ich diesen Ort nicht offenbaren.

Du kannst keine Ausnahme mit dem API-Schlüssel werfen. Wenn das Programm zum Teil "#Raise Custom Exception" kommt, dann nur deshalb, weil der API-Key nicht gefunden wurde. Aktuell wird diese Tatsache einfach ignoriert. Das darf nicht sein, Fehler dürfen nicht einfach ignoriert werden.

Die Ausnahme ist dazu da, dass du definitiv entscheiden kannst, ob der API-Key übertragen wird oder nicht. Dann brauchst du darüber nämlich ("Ich denke, ich sende den API-Schlüssel") kein Vermutung anstellen.

Aber da ich es nicht übertragen kann, kann ich diesen Ort nicht offenbaren.

Worauf bezieht sich "es" und was ist mit "diesen Ort" gemeint?

"Es" was fur die API-Schlüssel. Entschuldigung Ich weiß nicht, was ich mit dieser Ausnahme machen soll. Aber plötzlich gehe ich mit gewalt mit übertragen.

api_key = "59cbaf20e3e06d3565778e7blablabla"
Das funktioniert aber auch nicht.

api_key = "59cbaf20e3e06d3565778e7blablabla"

Einfacher wäre

ft = FT("59cbaf20e3e06d3565778e7blablabla")

ft.get_content_notifications funktioniert, vielen Dank! Durch die Nachteile kann ich immer noch nicht auf den Json von der Slug-URL eines Artikels mit ft.get_content zugreifen.

Um auf /content/{itemid} zuzugreifen benötigst du eine Datamining License. Mit der kostenlosen Headline License geht das nicht. Außerdem bist du damit auf zwei Anfragen pro Sekunde beschränkt.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community