• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Airplay 'Now Playing' module - help badly needed

Scheduled Pinned Locked Moved Development
16 Posts 8 Posters 12.0k Views 9 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    darrene
    last edited by Oct 29, 2016, 12:04 PM

    Hmm, using a child process doesn’t return anything either :(

    The shairport metadata reader is a compiled C program which uses printf to return the metadata to the console:

    pi@raspberrypi:~/fifo-js $ ~/shairport-sync-metadata-reader/shairport-sync-metadata-reader < /tmp/shairport-sync-metadata
    
    Artist: "Sohn".
    Title: "Tremors".
    
    ^C
    pi@raspberrypi:~/fifo-js $ 
    

    But I dont’ seem to be able to parse what’s being sent to stdout from my javascript

    If anyone has any examples that work, I’d be grateful.

    J 1 Reply Last reply Dec 13, 2016, 3:52 AM Reply Quote 0
    • J Offline
      jdfraser @darrene
      last edited by Dec 13, 2016, 3:52 AM

      Hi @darrene ,

      How did you ever make out with your module? I’ve started down the same path, I’m also using shairport-sync but in conjunction with forked-daapd (an airplay server for Raspbian).

      As forked-daapd can also use mpd commands I’ve been trying to use komponist, which I’ve managed to make return the playing song, album, etc. print out to the console but as I’ve never really done any javascript before am trying to piece together building a module for MM.

      If you’ve made any progress on your module, I’d love to see it as it may help me finish mine.

      1 Reply Last reply Reply Quote 1
      • V Offline
        vogelboy
        last edited by Jan 5, 2017, 5:02 PM

        I’m just dropping by to express my encouragement for this effort! I would love to have a now-playing module that used the shairport-sync metadata :)

        1 Reply Last reply Reply Quote 1
        • ? Offline
          A Former User
          last edited by Jan 17, 2017, 2:12 PM

          Are there any updates to this module?

          1 Reply Last reply Reply Quote 1
          • B Offline
            Brice
            last edited by Jan 25, 2017, 1:24 PM

            I’m also interested in the development of this module.
            I’ve started to recompile Shairport-sync so it can write a plain .TXT file with the metadata each time a new song is detected, now I have to read the last line of this TXT file through a MM-module. But I don’t know if this is the right direction, editing the core of Shairport-sync seems like a bad idea (no updates, etc). I wish I could read metadatas via the pipe in a less complex way. Anyone has worked on this ? Thanks !

            1 Reply Last reply Reply Quote 0
            • S Offline
              surekap
              last edited by Jan 29, 2017, 9:25 PM

              ANNOUNCE: Check out https://github.com/surekap/MMM-ShairportMetadata

              Its my first attempt at writing anything in node.js so I basically wrote a python script to translate the XML from shairport-sync into json objects.
              The module manages a child process which pipes the XML to the Py script and reads the json and displays it.

              1 Reply Last reply Reply Quote 1
              • B Offline
                Brice
                last edited by Jan 30, 2017, 8:51 AM

                Thanks a lot @surekap for this amazing module. It works !
                Quick suggestions :

                • hide the module if no airplay device is connected / no song playing
                • align text & image on left/right depending on the module position (currently both centered in its container)
                S 1 Reply Last reply Jan 30, 2017, 11:29 AM Reply Quote 0
                • S Offline
                  surekap @Brice
                  last edited by Jan 30, 2017, 11:29 AM

                  @Brice changes made. Check out the “alignment” config option.

                  The hide behaviour is not perfect - takes a few seconds to hide the module - this is because we issue the hide command in case of ‘pfls’ [play flush] and ‘pend’ [play end] metadata commands. Unfortunately, the ‘pfls’ command is followed up with fresh metadata and it takes a few seconds for the ‘pend’ to come from the iPhone.

                  Tested with playing and pausing repeatedly.

                  1 Reply Last reply Reply Quote 1
                  • 1
                  • 2
                  • 2 / 2
                  • First post
                    Last post
                  Enjoying MagicMirror? Please consider a donation!
                  MagicMirror created by Michael Teeuw.
                  Forum managed by Sam, technical setup by Karsten.
                  This forum is using NodeBB as its core | Contributors
                  Contact | Privacy Policy