MusicController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Music;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Storage;
  6. use Illuminate\Support\Str;
  7. class MusicController extends Controller
  8. {
  9. /**
  10. * Display a listing of the resource.
  11. *
  12. * @return \Illuminate\Http\Response
  13. */
  14. public function index()
  15. {
  16. // list all songs
  17. $songs = Music::all();
  18. return view('home', ['song_list' => $songs]);
  19. }
  20. public function playLog(Music $music)
  21. {
  22. // add one to played log
  23. $music->played += 1;
  24. $music->save();
  25. return $music->played;
  26. }
  27. public function dwLog(Music $music)
  28. {
  29. // add one to download log
  30. $music->downloads += 1;
  31. $music->save();
  32. return $music->downloads;
  33. }
  34. public function fileRefresh()
  35. {
  36. // Scan for files
  37. $fIndex = array();
  38. try {
  39. $files = Storage::disk('local')->listContents('public/audio', true);
  40. } catch (\Exception $e){
  41. $files = array();
  42. }
  43. //return $files;
  44. // Update storage index
  45. $songs = Music::all();
  46. foreach ($files as $f) {
  47. $fix_path = Str::replaceFirst('public/', 'storage/', $f['path']);
  48. // add NEW files to DB
  49. if (!Music::where('file_name', $fix_path)->first()) {
  50. $melody = new Music();
  51. $melody->title = $f['filename'];
  52. $melody->description = $f['filename'];
  53. $melody->played = 0;
  54. $melody->downloads = 0;
  55. $melody->hidden = 0; // visible
  56. $melody->file_name = $fix_path;
  57. if ($f['type'] == 'dir') {
  58. $melody->type = 'dir';
  59. } elseif ($f['type'] == 'file') {
  60. if ($f['extension'] == 'txt') {
  61. $melody->type = 'txt';
  62. $melody->description = Storage::disk('local')->read($f['path']);
  63. } else {
  64. $melody->type = $f['extension'];
  65. }
  66. }
  67. $melody->save();
  68. }
  69. $fIndex[] = $fix_path;
  70. }
  71. // Clean DB of OLD files
  72. $musicdB = Music::all();
  73. foreach ($musicdB as $song) {
  74. if (!in_array($song->file_name, $fIndex)) {
  75. $song->delete();
  76. }
  77. }
  78. return $files;
  79. }
  80. public function null(Music $music)
  81. {
  82. return null;
  83. }
  84. /**
  85. * Show the form for creating a new resource.
  86. *
  87. * @return \Illuminate\Http\Response
  88. */
  89. public function create()
  90. {
  91. //
  92. }
  93. /**
  94. * Store a newly created resource in storage.
  95. *
  96. * @param \Illuminate\Http\Request $request
  97. * @return \Illuminate\Http\Response
  98. */
  99. public function store(Request $request)
  100. {
  101. //
  102. }
  103. /**
  104. * Display the specified resource.
  105. *
  106. * @param \App\Music $music
  107. * @return \Illuminate\Http\Response
  108. */
  109. public function show(Music $music)
  110. {
  111. //
  112. }
  113. /**
  114. * Show the form for editing the specified resource.
  115. *
  116. * @param \App\Music $music
  117. * @return \Illuminate\Http\Response
  118. */
  119. public function edit(Music $music)
  120. {
  121. //
  122. }
  123. /**
  124. * Update the specified resource in storage.
  125. *
  126. * @param \Illuminate\Http\Request $request
  127. * @param \App\Music $music
  128. * @return \Illuminate\Http\Response
  129. */
  130. public function update(Request $request, Music $music)
  131. {
  132. //
  133. }
  134. /**
  135. * Remove the specified resource from storage.
  136. *
  137. * @param \App\Music $music
  138. * @return \Illuminate\Http\Response
  139. */
  140. public function destroy(Music $music)
  141. {
  142. //
  143. }
  144. }