ubuntuusers.de

Übergabe "..", '..' Problem

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 820

In mpv(input.conf) lässt sich bspw. mit

<Taste> run sh -c '<Script> "${media-title}"'

Script aufrufen mit ${media-title} Übergabe. media-title selbst könnte aber " oder ' enthalten(neben allen möglichen Leer --zeichen), also Problem.

Was bietet sich an um das zu realisieren?

@Verschiebe KI

Das "mpv" nicht zu hoch hängen.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Bin mir noch nicht sicher, sieht so aus als würde das funktionieren:

gelöscht

edit Nö.,

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Habe mich entschieden vor Übergabe an mpv mit sed was " und ' betrifft zu filtern. Damit brauchbar.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6487

Wohnort: Hamburg

Ich hatte vor einiger Zeit ähnliche Probleme (nicht nur mit mpv). Aber wenn man in C oder C++ programmiert, kann man die Namen, mit den entsprechenden Funktionen, auch ungefiltert übergeben.

Aber ich sehe immer wieder, wie das in der Konsole gemacht wird. Da wird nicht gequoted. Es werden stattdessen alle problematischen Zeichen einzeln maskiert. Ist umständlich, funktioniert aber immer.

Als Kontrolle funktioniert oft, in der Konsole, die Autovervollständigung. Beispiel:

$ mpv Some[TAB]

ergibt z.B.:

$ mpv Some\ Swingin\'\ Fingerpickin\'\ Ragtime\ Guitar\!-7Lu9EfIyatQ.mp4

Klartext:

Some Swingin' Fingerpickin' Ragtime Guitar!-7Lu9EfIyatQ.mp4

Funktioniert aber nur, wenn die Anfangssequenz eindeutig ist. Ich denke, das könnte bei der Erstellung des Filters helfen.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Geht hier alles über Playlist. Also aus Zwischenablage oder übergebenem Pfad/Pfaden wird mittels Script generell in tmp.m3u geschrieben(Ggf. #EXTINF Titel mittels (basename) o.ä. noch erzeugt), diese dann an mpv übergeben. Dadurch lässt sich gut filtern. Egal ob interne Pfade oder ext. m3u.

Übrigens, die Zwischenschaltung der tmp.m3u(egal ob 1 oder X Einträge) hat gute Vorteile:

  • mit(eigenen) oder ohne Titel Zuweisung möglich

  • in Titeln kann fast jeder Quatsch stehen

  • jeder Player kommt damit klar

Das hat sich als gut praxistauglich herausgestellt.

Das Thema des Fadens war ja die native Weitergabe von Problemfällen von ${media-title} aus mpv heraus, etwa um andere Player(mit ${path}) zu starten oder Titel und Pfad in andere m3u zu schreiben. Viel Hoffnung hatte ich nicht, dass das mit bash/sh Mitteln zur Abdeckung aller möglichen Fälle hinzubekommen sei. (wenn nicht auch nicht tragisch)

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13173

Marantkurz schrieb:

<Taste> run sh -c '<Script> "${media-title}"'

Script aufrufen mit ${media-title} Übergabe. media-title selbst könnte aber " oder ' enthalten(neben allen möglichen Leer --zeichen), also Problem.

Bin mir nicht sicher, was genau Du vorhast - vielleicht auch, weil ich mpv nicht kenne. Wenn Du so quotest, wie dargestellt, dann wüsste ich nicht, welcher Fall nicht geht.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Ich lasse mpv weg. Das "sh -c" hat ja nix mit mpv selbst zu tun.

Im Prinzip echo "<String>". <String> kann < " ' ? & > usw. beinhalten. Gemischt, auch vielfach, ohne feste Struktur. Bsp. Die Titel der Videos bei den Videoplattformen, wo Zeichen gesetzt werden wie Jeder will. mpv(müsste den per yt-dlp holen) zeigt die Titel fast immer korrekt an, aber den Titel dann heraus aus mpv klappt eben aufgrund des Inhalts ggf. nicht immer. Müsste irgendwie maskiert werden.

Wie lässt sich bspw.

var=    / # ( ` " ' " ' ' ?"
echo $var

maskieren? 🙄 👍

edit

Habe das Bsp. etwas geändert. Quoting mit Absicht(weiß eben nicht wie) weggelassen.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6487

Wohnort: Hamburg

Ich habe mal eine Datei mit Namen

test # ( " ' " ' ' ?".txt

angelegt (den Schrägstrich musste ich weglassen, ist in Dateinamen nicht erlaubt).

ls macht daraus:

$ ls test*
'test # ( " '\'' " '\'' '\'' ?".txt'

p.s. das kommt mir jetzt auch etwas schräg vor, aber die Datei lässt sich genau so mit dem String mit nano öffnen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13173

Marantkurz schrieb:

<Taste> run sh -c '<Script> "${media-title}"'

Marantkurz schrieb:

Ich lasse mpv weg. Das "sh -c" hat ja nix mit mpv selbst zu tun.

Zunächst einmal ist media-title kein gültiger Shell-Variablenname.

1
2
3
4
5
6
7
8
9
$ echo "<${media-title}>"
<title>
$ media-title='foo * bar'
media-title=foo * bar: command not found
$ echo "<${media-title}>"
<title>
$ media=foo
$ echo "<${media-title}>"
<foo>

Die Ausgabe ergibt sich durch die Parameter Expansion Logik (siehe Zeilen 7 und 8).

Machen wir also weiter mit media_title. Bin mir nicht sicher, ob ich das Problem völlig verstanden habe. Es wäre interessant zu erfahren, woher ${media_title} seinen Inhalt bekommt. An sich sind Sonderzeichen in der Variable kein Problem:

1
2
3
$ media_title='foo * '\'' ? & bar'
$ echo "<${media_title}>"
<foo * ' ? & bar>

Im Prinzip echo "<String>". <String> kann < " ' ? & > usw. beinhalten. Gemischt, auch vielfach, ohne feste Struktur. Bsp. Die Titel der Videos bei den Videoplattformen, wo Zeichen gesetzt werden wie Jeder will. mpv(müsste den per yt-dlp holen) zeigt die Titel fast immer korrekt an, aber den Titel dann heraus aus mpv klappt eben aufgrund des Inhalts ggf. nicht immer. Müsste irgendwie maskiert werden.

Du kannst ja mal args.sh von meiner Benutzerseite nehmen und durch mpv aufrufen lassen. Dann siehst Du, was beim Prozess ankommt. Ich gehe im Übrigen davon aus, dass man sh nicht braucht, sondern direkt das Skript oder Binary angeben kann, das dann etwas mit dem Titel tun soll.

Wie lässt sich bspw.

var=    / # ( ` " ' " ' ' ?"
echo $var

maskieren? 🙄 👍

In einem Shell-Skript oder einem Shell-Prompt ist das einfach. Du musst eigentlich nur ' maskieren (in Zeilen 4, 9 und 14 am Ende Strg-K drücken, damit man einen Newline einfügen kann):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$ var='    / # ( ` " '\'' " '\'' '\'' ?"'
$ echo "<${var}>"
<    / # ( ` " ' " ' ' ?">
$ var='    / # ( ` " '\'' " 
> '\'' '\'' ?"'
$ echo "<${var}>"
<    / # ( ` " ' " 
' ' ?">
$ var='    / # ( ` " '\'' " 
'\'' '\'' \?"'
$ echo "<${var}>"
<    / # ( ` " ' " 
' ' \?">
$ var='    / # ( ` " '\'' " 
'\'' '\'' \\?"'
$ echo "<${var}>"
<    / # ( ` " ' " 
' ' \\?">

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Ich antworte mal in Teilen. Bin noch nicht durch.

Zunächst einmal ist media-title kein gültiger Shell-Variablenname.

Sage ich auch nicht. s. https://mpv.io/manual/stable/#command-interface-media-title

Es wäre interessant zu erfahren, woher ${media_title} seinen Inhalt bekommt.

Ich denke einmal durch yt-dlp. Vmtl. so:

  • Netzadresse wird durch User an mpv übergeben

  • mpv fordert zum Streamstart yt-dlp an

  • Stream läuft, yt-dlp holt danach Titel seperat

  • yt-dlp wird nur zum Anlauf gebraucht

Wenn keine Netzadresse wird das lgw. ohne yt-dlp laufen. Dann entweder Titel aus m3u oder (basename). Wie konkret die Unterscheidung abläuft wäre von meiner Seite reine Mutmaßung.

Ich gehe im Übrigen davon aus, dass man sh nicht braucht, sondern direkt das Skript oder Binary angeben kann, das dann etwas mit dem Titel tun soll.

Nein, ohne bash/sh. Teste es selbst. Eintrag in ~/.config/mpv/input.conf , Taste F5

F5 run bash -c "/usr/bin/notify-send '${media-title}'"

edit

F5 run firefox https://forum.ubuntuusers.de/topic/uebergabe-problem/

geht

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Folgendes geht doch:

<Taste> run <Script> ${path} ${media-title}

Damit wird's nun einfacher, mal weiter testen.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 820

Ja, und das ist mir doch peinlich. Freue mich über das Ergebnis aber auch sehr. Ohne "sh -c" und Quoting läuft es.

@rklm, ich danke Dir!

@Dakuan, auch Dir Danke!

@rklm Ich gehe Deine Antwort in Ruhe die nächsten Tage noch mal durch(unten). Auch um was zu kapieren.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13173

Marantkurz schrieb:

Ja, und das ist mir doch peinlich. Freue mich über das Ergebnis aber auch sehr. Ohne "sh -c" und Quoting läuft es.

😀

@rklm, ich danke Dir!

Gerne.

@rklm Ich gehe Deine Antwort in Ruhe die nächsten Tage noch mal durch(unten). Auch um was zu kapieren.

Am besten mal ein bisschen herumspielen und verschiedene Möglichkeiten ausprobieren. Dabei lerne ich jedenfalls am meisten.

Antworten |