Forum: PC-Programmierung Zuverlässig Links erkennen - wie?


von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Hallo Leute,

ich habe folgendes Problem:
Ich bin viel auf der Streamingplatform www.twitch.tv (Spielestreams) 
unterwegs, und diese Platform bietet neben Stream auch immer bei jedem 
Kanal einen Chat an, damit ein Streamer mit seinen Zuschauern 
"interagieren" kann.
Für diese Chats gibt es Bots (z.B. der Nightbot), die die Chats in einem 
gewissen Maße moderieren können, unter anderem können diese Bots 
gepostete Links löschen (zum Schutz der Zuschauer).

Und genau hier liegt auch das Problem:
Oftmals werden Nachrichten gelöscht, mit der Bemerkung, das ein Link 
gepostet wurde, obwohl dies nicht der Fall war. Wenn man in einen Post 
z.B. Sachen einbaut wie: "... a.k.a. ...", dann ist der Bot der Meinung, 
das wäre ein Link und löscht den Post.

Die Begründung für dieses Verhalten ist in etwa so:
die Bots reagieren darauf, wenn ein Wort nen Punkt in der Mitte hat, 
ohne Leerzeichen. Das ist normalerweise nur bei Links der Fall.

Das ist meiner Meinung nach aber nicht so wirklich das gelbe vom Ei und 
bedarf einer Verbeserung.

Und jetzt stell ich mir die Frage:
Wie kann man Links zuverlässig von solchen Sachen unterscheiden?

Auf eine Endung bzw, ein Vorkommen von .de, .com usw. kann man sich in 
Zeiten von Linkshortener, wie Bitly und Co., nicht verlassen.
Auf ein Vorkommen des Protokolls (z.B. http oder https) oder auf das 
Vorkommen vom Berühmten "www" kann man sich ebenfalls nicht verlassen, 
denn ich kann z.B. einfach "mikrocontroller.net" Posten, und der Link 
funktioniert.

Ein gülltiger Link wäre z.B. ( bit(dot)ly/1MoWCHj -> führt auf 
mikrocontroller.net | Das (dot) musste ich einbauen, weil die 
Forensoftware sonst Mekert :) )
Dieser Link enthält weder Protokoll, noch www, noch tld...

Habt ihr eine Idee, wie man sowas zuverlässig hinbekommen könnte?

Die Chats auf twitch.tv sind per IRC erreichbar, d.h. als Sprache für 
einen entsprechenden Bot könnte man z.B. Python nehmen.

Grüße

von Peter II (Gast)


Lesenswert?

Kaj G. schrieb:
> Habt ihr eine Idee, wie man sowas zuverlässig hinbekommen könnte?

die Frage ist doch viel mehr, welche Software erzeugt wirklich den 
"link". wenn ich einfach www.test.de schreibe ist das ja noch lange kein 
link. Oder ist das bei dir schon ein link?

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Peter II schrieb:
> Oder ist das bei dir schon ein link?
Bei mir vielleicht nicht, für den "twitchchat" aber schon, also die 
Adresse wird "anklickbar" und es öffnet sich die Seite zu 
Stiftungwarentest, wenn man draufklickt.
In diesem Sinne würde ich sagen: Ja, das ist ein "Link".

von Peter II (Gast)


Lesenswert?

Kaj G. schrieb:
> Bei mir vielleicht nicht, für den "twitchchat" aber schon, also die
> Adresse wird "anklickbar" und es öffnet sich die Seite zu

dann müsste mal halt den Algorithmus wissen den twitchchat einsetzt um 
ein link zu erzeugen. Wenn der BOT html versteht, kann er ja auch 
einfach prüfen on es ein link ist, ohne das er den "text" verstehen 
muss.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Peter II schrieb:
> dann müsste mal halt den Algorithmus wissen den twitchchat einsetzt um
> ein link zu erzeugen. Wenn der BOT html versteht, kann er ja auch
> einfach prüfen on es ein link ist, ohne das er den "text" verstehen
> muss.
Ok, danke für den Hinweis :)
Ich werde mal sehen, ob ich da was finde.

von Peter II (Gast)


Lesenswert?

ein link (URL) muss nicht mal ein punkt haben.

http://dk/

von Kaj G. (Firma: RUB) (bloody)


Angehängte Dateien:

Lesenswert?

Peter II schrieb:
> dann müsste mal halt den Algorithmus wissen den twitchchat einsetzt um
> ein link zu erzeugen.
Danke für diesen Hinweis Peter.

Ich hab mal mit dem Twitchchat gespielt und rausgefunden, das praktisch 
jeder Mist in einen "Link" umgewandelt wird. (siehe Bild)
Es muss lediglich ein Punkt und danach mind. 2 Buchstaben ohne 
Leerzeichen kommen, schon wird es zu einem Link gemacht.
kommt nach dem ersten Punkt mind. 2 Buchstaben und dann ein "/" können 
beliebig viele weitere Punkte enthalten sein.
Also
1
a.k.a
2
3
// oder auch
4
5
http://dk/
wird nicht in einen Link umgewandelt, aber
1
a.ka/de.was.wauch.immer
sehr wohl.

Anhand dessen scheint es mir unmöglich, Links wirklich zuverlässig zu 
erkennen. Damit hat sich das ganze dann eigentlich schon wieder 
erledigt.
Die Chatfunktionalität basiert auf JavaScript.

Naja, trotzdem Danke für die Hilfe :)

Grüße

von Tom (Gast)


Lesenswert?

Kaj G. schrieb:
> dann müsste mal halt den Algorithmus wissen den twitchchat einsetzt

Twitchchat ist Open Source, einfach unten in Helper.java nachsehen.
"The regex String for finding URLs in messages"
Da versteht man zwar auch nichts, weil Regexe sogar Perl in Bezug auf 
Write-Only-Qualitäten übertreffen, kann den Wust aber einfach kopieren, 
falls Java keine speziellen Regexe benutzt.

von Tom (Gast)


Lesenswert?

Ich Horst habe TwitchChat und den Client "chatty" verwechselt. Was ich 
oben schrieb, gilt für letzteren.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Kaj G. schrieb:
> Ich hab mal mit dem Twitchchat gespielt und rausgefunden, das praktisch
> jeder Mist in einen "Link" umgewandelt wird. (siehe Bild)

Versuche mal, hier im Forum z.B. den Wert der Referenzspannung von UH 
als Text zu posten (s. Bild) ;-)

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Wolfgang schrieb:
> Versuche mal, hier im Forum z.B. den Wert der Referenzspannung von UH
> als Text zu posten (s. Bild) ;-)
Ok, habs probiert und verstehe das Problem :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.