vdrnfofs mit Python 3

  • Ich habe vdrnfofs mal in meinen GitHub-Account geforkt und für Python 3 fit gemacht:


    https://github.com/M-Reimer/vdrnfofs


    Das offizielle Repo sieht schon seit fast 10 Jahren keine Updates. Mit projects.vdr-developer.org werde ich mich nicht mehr rumärgern. Folglich der Umzug auf GitHub.


    Ich habe den Stand mal als Version 0.9 getaggt. Ich will mich noch um einen Fehler kümmern mit gelöschten Aufnahmen und dann wird das als Version 1.0 rausgegeben. War lange genug 0.x.


    Gerne Pull-Requests oder Issues anlegen. Bessere Anpassung auf alte VDR-Aufnahmen nehme ich aber nur als Pull-Request an. Issues schließe ich sofort. Kann ich selber nicht testen!

  • Danke erstmal :)

    Macht bei mir aber noch nicht, was es soll:

    Code
    vdrnfofs /mnt/vdrnfofs -o video=/srv/vdr/video,allow_other
    INFO:root:Starting vdrnfofs
    
    # export LANG=C;ls /mnt/vdrnfofs
    
    ls: reading directory '/mnt/vdrnfofs': Software caused connection abort
    # ls /mnt/vdrnfofs
    ls: cannot access '/mnt/vdrnfofs': Transport endpoint is not connected

    Wobei nach dem mount auch nichts im "df" erscheint.

    Hier das strace von "vdrnfofs /mnt/vdrnfofs ..." und den ls-Versuch.

    Dateien

  • Bei mir scheitert die Installation:


    Code
    gentoo vdrnfofs # ./setup.py install
    Traceback (most recent call last):
      File "/usr/local/src/vdrnfofs/./setup.py", line 23, in <module>
        import setuptools
    ModuleNotFoundError: No module named 'setuptools'
    Code
    gentoo vdrnfofs # emerge -pv dev-python/setuptools
    
    These are the packages that would be merged, in order:
    
    Calculating dependencies... done!
    [ebuild   R    ] dev-python/setuptools-50.3.0::gentoo  USE="-test" PYTHON_TARGETS="python3_8 (-pypy3) (-python3_6) -python3_7 -python3_9" 0 KiB
    
    Total: 1 package (1 reinstall), Size of downloads: 0 KiB

    D.h. setuptools sind installiert.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ist python3 bei dir als python im PATH verfügbar? Ansonsten musst du vermutlich den Shebang in https://github.com/M-Reimer/vdrnfofs/blob/master/setup.py#L1 anpassen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Code
     gentoo vdrnfofs # python3
    Python 3.9.0 (default, Jan  4 2021, 15:28:06)
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Gefunden: python3 ging auf python-3.9 und setuptools auf python-3.8


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Jetzt legt er das Filesystem an, ich kann die Dateien jedoch nicht lesen.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Me too. D.h. das "vdrnfofs ..." tut anscheinend und sagt auch "starting vdrnfofs", aber beim Versuch, nur "ls /mnt/vdrnfofs" zu machen, segfaultet es.

    Habe oben schon die strace-Ausgaben gepostet.

  • Ich muss das mal später probieren, wenn ich ein VDR-Aufnahmeverzeichnis zum Experimentieren zur Verfügung habem aber warum wird da eigentlich StringIO genutzt (historisch gesehen hat Python2 ja munter Bytestrings und Unicode-Strings gemischt)? Sollte man da nicht besser BytesIO nutzen? Und in https://github.com/M-Reimer/vd…enated_file_reader.py#L50 müsste man dann open mit 'rb' aufrufen, um nackte Bytes zu lesen, statt zu versuchen UTF-8 zu dekodieren, was bei Binärdateien früher oder später zwangsläufig schiefgehen wird.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Jetzt sehe ich auch warum die Tests gelaufen sind. Die mounten ja garnicht richtig sondern importieren Bestandteile des Filesystem-Treibers direkt um direkt ohne Fuse mit denen zu sprechen.


    Zumindest im Hintergedanken möchte ich auch mal behalten, dass eventuell hier eine optionale Anbindung an mein noch in Entwicklung befindliches SVDRP-Modul denkbar wäre. Also nur rein theoretisch und ohne jetzt zu viel versprechen zu wollen. Grund: Ich fände es eigentlich recht praktisch auch Aufnahmen einfach durch Löschen der zugehörigen Dateien löschen zu können. Wenn, dann aber richtig und sauber. Soll heißen: Nicht durch Löschen von irgendwas im Dateisystem sondern durch Absetzen von "DELR" an den VDR.

  • Ja, BytesIO ist besser. Das hat zumindest bei meinem Test schonmal die ".mpg"-Dateien gefixt.

    Man könnte auch mal schauen, ob es nicht schneller ist mmap zu nutzen, um in den Dateien zu suchen und den Buffer als MemoryView abbilden (die Größe, die man allozieren muss, ist ja vorab bekannt).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke mal wieder :)

    Hat aber immer noch nicht geklappt.

    In dmesg krieg ich den segfault:

    [47473.079131] vdrnfofs[1560067]: segfault at 0 ip 00007ff382e02675 sp 00007ffd7ff25858 error 4 in libc-2.31.so[7ff382c9c000+178000]

    [47473.079276] Code: 00 00 0f 1f 00 31 c0 c5 f8 77 c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 89 f9 48 89 fa c5 f9 ef c0 83 e1 3f 83 f

    9 20 77 2b <c5> fd 74 0f c5 fd d7 c1 85 c0 0f 85 eb 00 00 00 48 83 c7 20 83 e1


    Soll ich nochmals die strace-Ausgaben attachen?

  • Kannst du mal versuchen vdrnfofs mit einem höheren Debug-Level als info im Vordergrund zu starten?

    vdrnfofs /mnt/vdrnfofs -d -o video=/srv/vdr/video,allow_other -o loglevel=debug


    Ist das Paket python3-fuse installiert?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hier der debug-Start:

    ~# apt-cache policy python3-fuse

    python3-fuse:

    Installiert: 2:1.0.0-3build1


    ~# apt-cache policy libfuse2

    libfuse2:

    Installiert: 2.9.9-3


    Nach "ls /mnt/vdrnfofs" dann

    Hmmm ...

  • Kannst du mal zeigen, was für Inhalt dein Aufnahmeverzeichnis in der ersten Ebene hat? ls -lsh /srv/vdr/video/


    Kann es eventuell sein, dass du da eine NFS-Freigabe im Aufnahmeverzeichnis hast, die mit root squash exportiert wurde und dadurch das Skript (das du vermutlich als root laufen lässt) nicht die nötigen Zugriffsrechte hat?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Hi Seahawk,


    hier nur der Beginn:

    wobei ich selbst erst vor kurzem die Schreibrechte für die Gruppe "vdr" hinzugefügt habe.

    Der "leere" Eintrag zu Beginn, den hab ich selbst noch nicht entdeckt, werde den mal löschen ...


    Hmm, hab das getan, leider keine Änderung.

  • Ich könnt mir vorstellen, dass dieser Name "Bridget_Jones'_Baby_-_Bridget_Jones's_Baby" nicht so ideal ist mit Hochkomma und Anführungszeichen?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Hab das umbenannt, auch keine Änderung ...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!