Kurzlink API Nutzung

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
Moin,

ich würde gerne über eine API tausende Links kürzen. Wie so häufig, hab ich dank meiner IT nur die Möglichkeit, dass in R zu machen. Der IT Kollege kann den Request in Postman abschicken, aber ich bekomms nicht in R hin, obwohl gedacht hätte, dass sowas mit dem httr package von R geht.

Der Befehl den er sonst abschickt ist der:
curl -X POST \
https://t1p.de/sandbox \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'cache-control: no-cache' \
-d 'key=OURAPIKEYCODE&url=www.bundesnetzagentur.de&requesturl=bna000a&undefined'

Bei Bedarf kann nich den API key auch per pn schicken.

Bin halt völlig lost wie ich das in R abschicken könnte mit POST() aus dem httr package.
 

skY

Mitglied seit
03.01.2006
Beiträge
262
Reaktionen
10
r <- POST(url = "https://t1p.de/sandbox?key=DEIN_API_KEY&url=www.bundesnetzagentur.de&requesturl=bna000a&undefined")

das '&undefined' am ende ist ziemlich sinnlos, das kann auch raus. vermute der it kollege hats nur uebersehen.

kein plan warum da ein leerzeichen nach bundesnetzagentur eingefuegt wird. natuerlich entfernen, wenn ich den beitrag editere steht da keins :<
 
Zuletzt bearbeitet:

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
ok muss ich mal probieren, wobei es wahrscheinlich einfach an meinen Proxy Einstellungen auf der Arbeit liegt.

ich habs sonst zu Hause auch mit GET() hinbekommen und bei Bitly
test2<-paste0(test,"/v3/shorten?access_token=",
generic.bitly,
"&longUrl=http%3A%2F%2Fgoogle.com%2F")

r<-GET(test2)

Der API Key ist jetzt im Büro, eventuell versuche ichs morgen noch mal da, oder ich leb mit den Bitly short links.
 

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
Dann müsste ich die short Links ja selber irgendwo hosten bzw. die redirects, oder nicht?
 

skY

Mitglied seit
03.01.2006
Beiträge
262
Reaktionen
10
jup, brauchst irgendwo eine art backend + datenbank. je nach dem was die anwendung jetzt insgesamt machen soll.

aber ganz massiver overkill, eher so atombombe <--> spatzen
einziger grund sowas zu machen waere fuer mich, dass die links nicht bei 3rd parties gespeichert werden duerfen weil datenschutz oder bla oder chef es toll findet, wenn ihr eure eigene domain fuer die shorturls benutzt oder dergleichen.
 

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
das mit jetzt auch zu crazy.

Dooferweise, klappt der Befehl oben nicht, aber jetzt ist egal. Schon zu viel Zeit dafür investiert.
Bekomme zwar ne Antwort mit Status Meldung 200, aber kann nirgends wo das Resultat (den Kurzlink) finden.
 

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
In Python würde es wohl so aussehen und klappen. Erster Fehler ist wohl dass ich api statt sandbox nutzen müsste. Dann müsste ich aber noch irgendwas als content type und no cache angeben, damit es funktioniert.

import io

import requests

import array



file1 = open('./Mappe1_1900.txt')



list1 = file1.readlines()

file1.close()

v = ''



for x in list1 :

url = "https://t1p.de/api"

key = "key=mein API KEY"

myUrl = "&" + "url=" + x

## myReUrl = "&" + "requesturl=bna-000"

headers = {

'Content-Type': "application/x-www-form-urlencoded",

'cache-control': "no-cache",

}

response = requests.request("POST", url, data=key+myUrl, headers=headers)

v += str(response.text)

print(response.text)
 

skY

Mitglied seit
03.01.2006
Beiträge
262
Reaktionen
10
cache-control header sollte egal sein wenn der server von t1p nicht sehr sehr merkwuerdig konfiguriert ist. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

content-type ist default ueberall application/x-www-form-urlencoded, wuerde mich stark wundern wenn R da jetzt ne ausnahme macht. wenns kein riesiges geheimnis ist kannst du mir gerne mal den api key schicken, dann schaue ich noch mal nach
 

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
19.485
Reaktionen
664
Damit es für alle Zeit hier gelöst steht, die Lösung von Sky

library(httr)
library(xml2)

body <- list(key = "MEIN API KEY", url = "www.bundesnetzagentur.de")
r <- POST(url = "https://t1p.de/api", body = body, encode = "form")

response_xml <- read_xml(r)
xml_text(xml_child(xml_child(response_xml, "shorturl"), "url"))
 
Oben