[Python] python pipes deprecated - interact with mpg123 server

Discussão em 'Python' iniciado por Stack, Abril 28, 2025.

  1. Stack

    Stack Membro Participativo

    I wrote some years ago an iTunes-replacing program in Python, with mpg123 accessed by a pipe (from the manual: -R, --remote: Activate generic control interface. mpg123 will then read and execute commands from stdin. Basic usage is ``load <filename>'' to play some file).

    I dont have available a machine with the old python & pipes still working so it's hard to give you an example, but it was something like this:

    import subprocess,pipes

    mpgpipe = "/tmp/mpg123remote.cmd"
    mpgout = "/tmp/mpg123.out"

    fmpgout=open(mpgout,"w")
    mpg123proc = subprocess.Popen(["/usr/bin/mpg123", "-vR", "--fifo", mpgpipe ], stdin=subprocess.PIPE, stdout=fmpgout)

    t = pipes.Template()
    t.append("echo load \"%s\"" % "test.mp3", '--')
    f = t.open(mpgpipe, 'w')
    f.close()


    Recently I started to get a warning DeprecationWarning: 'pipes' is deprecated and slated for removal in Python 3.13 - and now it happened: the pipes library isnt available anymore.

    This is the test code I'm using, trying to access mpg123 by a named pipe:

    import os, io, subprocess

    mpgpipe = "/tmp/mpg123remote.cmd"
    try:
    os.mkfifo(mpgpipe)
    print("Named pipe created successfully!")
    except FileExistsError:
    print("Named pipe already exists!")
    except OSError as e:
    print(f"Named pipe creation failed: {e}")


    fmpgout=open("/tmp/mpg123.out","w")
    mpg123proc = subprocess.Popen(["/usr/bin/mpg123", "-a", "default", "-vR", "--fifo", mpgpipe ], stdout=fmpgout)

    pipfd = os.open(mpgpipe, os.O_RDWR | os.O_NONBLOCK)
    songname = "test.mp3"
    command=f"load \"{songname}\"\n"
    with io.FileIO(pipfd, 'wb') as f: f.write(command.encode())


    but it doesnt work: no audio, no error, and this text output :

    High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
    version 1.32.9; written and copyright by Michael Hipp and others
    free software (LGPL) without any warranty but with best wishes
    Decoder: x86-64 (AVX)
    Trying output module: alsa, device: default


    (of course the audio device is ok and listening to test.mp3 with mpg123 from the terminal works perfectly...)

    any idea???

    Continue reading...

Compartilhe esta Página