I’m making a Python script to play music through VLC and I wanted to add a way to control audio playback of VLC, like pause/play, next/previous, etc.

I know I can change shuffle mode before launching VLC with the --random and --no-random arguments. However, is there a way to change playback settings through the Linux terminal while VLC is running?

  • utopiah@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    17 hours ago

    I tinker with VLC using and… so far my “trick” is a bit dirty, namely I don’t “control” it as much as I killall potential running instances then I start cvlc again with the right parameters. If you want continuity though you might not want that.

    Note also that if you plan to do scripting check mpv as it’s a bit easier to tinker with IMHO.

    Python

    Check https://pypi.org/project/python-vlc/ then for Python bindings, that should give you the affordances you need.

    • flameleaf@lemmy.ml
      link
      fedilink
      English
      arrow-up
      6
      ·
      22 hours ago

      VLC also appears to have a TUI interface. Check out the VLC wiki

      There’s also a CLI interface accessible through cvlc

    • AstroLightz@lemmy.worldOP
      link
      fedilink
      arrow-up
      2
      ·
      1 day ago

      Thank you so much! One more thing: would there be a way to check if the user has playerctl installed on their system? Or is there a Python package like it?

      • floquant@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        14 hours ago

        You can test if a command exists in several ways, but the most portable one should be using command -v which is POSIX.

        if command -v playerctl &> /dev/null
          # do things
        else
          # warn and exit (or prompt for installation)
        end
        
      • Maxy@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        2
        ·
        18 hours ago

        That depends on your distro. On Debian/ubuntu(-based) distro’s, you can try apt list --installed playerctl, which will output nothing if the package isn’t yet installed, or the package name with version info if it is installed. To install it, run sudo apt install playerctl

        On arch(-based) distro’s, you can try pacman -Qi playerctl, which should return an error if there is no such package installed, or several lines of info if it is installed. To install it, run sudo pacman -S playerctl, ideally after running a full system upgrade with sudo pacman -Syu

        • floquant@lemmy.dbzer0.com
          link
          fedilink
          arrow-up
          2
          ·
          14 hours ago

          Testing if the current shell can execute something does not require looking at the installed packages, there are portable ways to do that

        • floquant@lemmy.dbzer0.com
          link
          fedilink
          arrow-up
          3
          ·
          14 hours ago

          whereis is not a Bash built-in so it may itself not be installed, plus it exits 0 and returns output even on no match requiring additional logic/processing. which or command are more robust choices for this usecase

      • felsiq@piefed.zip
        link
        fedilink
        English
        arrow-up
        1
        ·
        23 hours ago

        If you don’t want a playerctl dependency you can use a dbus library to check for mpris players manually, though it’s a little less readable