Player.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <div class="bg-gray-800 rounded-sm">
  3. <div class="flex items-center space-x-3.5 sm:space-x-5 lg:space-x-3.5 xl:space-x-5">
  4. <Button class='text-red-400' ref='button' @play='play' @stop='stop' />
  5. <div class="min-w-0 flex-auto space-y-0.5">
  6. <!-- //- <p class="text-white text-sm sm:text-base lg:text-sm xl:text-base font-semibold uppercase">
  7. //- <abbr title="Episode">Ep.</abbr> 128
  8. //- </p> -->
  9. <h2 class="text-white text-base sm:text-xl lg:text-base xl:text-xl font-semibold truncate" v-text='title'>
  10. </h2>
  11. <!-- //- <p class="text-gray-400 text-base sm:text-lg lg:text-base xl:text-lg font-medium">
  12. //- Full Stack Radio
  13. //- </p> -->
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import eventBus from '../js/eventBus'
  20. import { Howl } from 'howler'
  21. import Button from './Button.vue'
  22. export default {
  23. components: { Button },
  24. data () {
  25. return {
  26. loading: true,
  27. status: 'pause',
  28. volume: 100,
  29. title: 'RadioBlackout > DIRETTA',
  30. subtitle: '',
  31. live: true,
  32. player: null
  33. }
  34. },
  35. destroyed () {
  36. eventBus.$off('play:now')
  37. },
  38. mounted () {
  39. const t = this
  40. eventBus.$on('play:now', function (url) {
  41. t.play(url)
  42. })
  43. },
  44. methods: {
  45. play (url) {
  46. var urls;
  47. if (url === undefined) {
  48. const rnd = Math.random()
  49. urls = [
  50. 'https://stream.radioblackout.org/blackout.ogg?rnd=' + rnd,
  51. 'https://stream.radioblackout.org/blackout.mp3'
  52. ]
  53. } else {
  54. urls = [url]
  55. }
  56. this.player = new Howl({
  57. autoSuspend: false,
  58. html5: true,
  59. preload: true,
  60. src: urls,
  61. })
  62. console.log(this.player)
  63. this.player.play()
  64. },
  65. stop () {
  66. if (this.player) {
  67. this.player.stop()
  68. }
  69. this.$refs.button.stop()
  70. },
  71. }
  72. }
  73. </script>