module Airplay::CLI

Public: Airplay CLI module

Constants

VERSION

Public Class Methods

doctor() click to toggle source
# File lib/airplay/cli.rb, line 93
      def doctor
        puts <<-EOS.gsub!(" "*10, "")

          This will run some basic tests on your network trying to find errors
          and debug information to help fix them.

        EOS

        who = Airplay::CLI::Doctor.new

        puts "Running dns-sd tests:"
        who.information
      end
help() click to toggle source

Public: Shows CLI help

Returns nothing.

# File lib/airplay/cli.rb, line 17
      def help
        Airplay.configuration.load
        puts <<-EOS.gsub!(" "*10, "")
          Usage: air [OPTIONS] ACTION [URL OR PATH]

          Command line for the apple tv.
          Example: air play my_video.mov

          Actions:

          list    - Lists the available devices in the network.
          help    - This help.
          version - The current airplay-cli version.
          play    - Plays a local or remote video.
          view    - Shows an image or a folder of images, can be an url.
          doctor  - Shows some debug information to trace bugs.

          Options:

          --device      - Name of the device where it should be played (Default: The first one)
          --wait        - The wait time for playing an slideshow (Default: 3)
          --interactive - Control the slideshow using left and right arrows.
          --password    - Adds the device password
          --url         - Allows you to specify an Apple TV url

        EOS
      end
list() click to toggle source

Public: Lists all the devices to STDOUT

Returns nothing.

# File lib/airplay/cli.rb, line 49
      def list
        Airplay.devices.each do |device|
          puts <<-EOS.gsub(/^\s{12}/,'')
            * #{device.name} (#{device.info.model} running #{device.info.os_version})
              ip: #{device.ip}
              mac: #{device.id}
              password?: #{device.password? ? "yes" : "no"}
              type: #{device.type}
              resolution: #{device.info.resolution}

          EOS
        end
      end
play(video, options) click to toggle source

Public: Plays a video given a device

video - The url or file path to the video options - Options that include the device

* device: The device in which it should run

Returns nothing.

# File lib/airplay/cli.rb, line 71
def play(video, options)
  device = options[:device]
  password = options[:password]
  url = options[:url]

  Airplay.devices.add("Apple TV", url) if url
  device.password = password if password

  player = device.play(video)
  puts "Playing #{video}"
  bar = ProgressBar.create(
    title: device.name,
    format: "%a [%B] %p%% %t"
  )

  player.progress -> playback {
    bar.progress = playback.percent if playback.percent
  }

  player.wait
end
version() click to toggle source

Public: Shows the current CLI version

Returns nothing

# File lib/airplay/cli.rb, line 148
      def version
        Airplay.configuration.load
        v = Airplay::CLI::VERSION
        puts <<-EOS

                            i@@@@@@@@@@@@@@@@@@@@@@@@@
                          i80000000000000000000000000000
                        i80000000000000000000000000000000G
                      i8000000000000000000000000000000000000
                    i80000000000000000000000000000000000000000
            @00000    @0000000000000000000000000000000000000@   000000@
            @0000008    @000000000000000000000000000000000@   80000000@
            @001          @00000000000000000000000000000@          100@
            @001            @0000000000000000000000000@            100@
            @001              80000000000000000000008              t00@
            @001                8000000000000000008                t00@
            @001                  800000000000008                  t00@
            @001                    G000000000G                    t00@
            @001                      G00000G                      t00@
            @001                        L0L                        t00@
            @001                                                   t00@
            @001                        air                        t00@
            @001                       #{v}                       t00@
            @001                                                   t00@
            @001                                                   t00@
            @001                                                   100@
            @00000000000000000000000000000000000000000000000000000G000@
            @000000000000000000000000000000000000000000000000000000000@

        EOS
      end
view(file_or_dir, options) click to toggle source

Public: Show an image given a device

file_or_dir - The url, file path or folder path to the image/s options - Options that include the device

* device: The device in which it should run
* interactive: Boolean flag to control playback with the
               arrow keys

Returns nothing.

# File lib/airplay/cli.rb, line 117
def view(file_or_dir, options)
  device = options[:device]
  password = options[:password]
  url = options[:url]

  if url
    Airplay.configure { |c| c.autodiscover = false }
    device = Airplay.devices.add("Apple TV", url)
  end
  device.password = password if password

  viewer = ImageViewer.new(device, options)

  if File.directory?(file_or_dir)
    files = Dir.glob("#{file_or_dir}/*")

    if options[:interactive]
      viewer.interactive(files)
    else
      viewer.slideshow(files)
    end
  else
    viewer.view(file_or_dir)
    sleep
  end
end