• Liebe User mit web.de oder gmx.de E-Mail-Adressen: Bitte ändert eure Adressen, da wir nicht garantieren können das E-Mails vom Forum an euch ankommen. Genaueres dazu im Feedbackforum
  • Liebe Community,
    am 21.04.2021 wird unsere Domain in ein neues Rechenzentrum umziehen.
    Daher wird das Forum zwischen 00:00 und 04:00 Uhr nicht unter broodwar.net erreichbar sein,
    stattdessen könnt ihr das Forum unter https://85.214.102.212/forum/ ansurfen. Beachtet dabei bitte, dass ihr euch dafür extra einloggen müsst.
    Sobald alles erledigt ist, sind wir ganz normal wieder erreichbar.

Kurzlink API Nutzung

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
17.329
Reaktionen
31
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
196
Reaktionen
0
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
17.329
Reaktionen
31
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
17.329
Reaktionen
31
Dann müsste ich die short Links ja selber irgendwo hosten bzw. die redirects, oder nicht?
 

skY

Mitglied seit
03.01.2006
Beiträge
196
Reaktionen
0
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
17.329
Reaktionen
31
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
17.329
Reaktionen
31
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
196
Reaktionen
0
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
17.329
Reaktionen
31
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