app.rb 814 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. require 'sinatra'
  2. require 'sinatra/contrib'
  3. require 'json'
  4. get '/' do
  5. erb :index
  6. end
  7. post '/add' do
  8. puts params.to_s
  9. if params[:link] and params[:link] =~ /http(s):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-]+)(&(amp;)?[\w\?=]*)?/
  10. File.open('/tmp/radio', 'w') do |f|
  11. f.puts(params[:link])
  12. f.flush
  13. end
  14. 200
  15. else
  16. 403
  17. end
  18. end
  19. get '/playlist', :provides => [:html, :json] do
  20. songs = `mpc playlist | cut -d '#' -f 2 | base64 -d`
  21. songs = songs.split("\n")
  22. respond_to do |format|
  23. format.json { songs.to_json }
  24. format.html { erb :playlist, locals: { songs: songs } }
  25. end
  26. end
  27. get '/info' do
  28. title = `mpc | head -n 1 | cut -d '#' -f 2 | base64 -d`
  29. title.gsub("\n", "")
  30. content_type :json
  31. {
  32. title: title
  33. }.to_json
  34. end