GalleryController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Symfony\Component\DomCrawler\Crawler;
  5. class GalleryController extends Controller
  6. {
  7. private $url = 'http://www.kansk-tc.ru';
  8. /**
  9. * Метод для получения списка альбомов
  10. * @return \Illuminate\Http\JsonResponse
  11. */
  12. public function albums()
  13. {
  14. /*
  15. * Получаем HTML со страницы альбомов
  16. */
  17. $html = file_get_contents($this->url . '/zhizn_kolledzha/fotogalereya');
  18. /*
  19. * Создаем экземпляр класса Crawler для дальнейшего парсинга данных
  20. */
  21. $crawler = new Crawler($html);
  22. /*
  23. * Переменная для хранения списка альбомов
  24. */
  25. $albums_list = [];
  26. /*
  27. * Перебираем все найденые альбомы и упаковываем в $albums_list
  28. * Примечание: из-за того, что html приходит в кривом виде, приходится узнавать кол-во альбомов по количеству заголовков
  29. * каждого альбома и уже потом, зная номер итерации, обращаться к нужному элементу и вытаскивать информацию
  30. */
  31. for ($i = 0; $i < count($crawler->filter('.newgallery')->filter('.gallery_cat')); $i++) {
  32. $albums_list[] = [
  33. "id" => explode('?cid=', $crawler->filter('.newgallery')->filter('.gallery_cat')->eq($i)->attr('href'))[1] * 1,
  34. "title" => $crawler->filter('.newgallery')->filter('.title')->eq($i)->text(),
  35. "date" => $crawler->filter('.newgallery')->filter('.date')->eq($i)->text(),
  36. "preview" => $this->url . $crawler->filter('.newgallery')->filter('.gallery_cat')->eq($i)->filter('img')->attr('src')
  37. ];
  38. }
  39. /*
  40. * Возвращаем список альбомов в JSON массиве
  41. */
  42. return response()->json($albums_list);
  43. }
  44. public function album($id)
  45. {
  46. /*
  47. * Получаем HTML со страницы альбома
  48. */
  49. $html = file_get_contents($this->url . '/zhizn_kolledzha/fotogalereya?cid=' . $id);
  50. /*
  51. * Создаем экземпляр класса Crawler для дальнейшего парсинга данных
  52. */
  53. $crawler = new Crawler($html);
  54. /*
  55. * Переменная для хранения списка фотографий
  56. */
  57. $photos = [];
  58. /*
  59. * Перебираем список фотографий и упаковывем в $photos
  60. */
  61. for ($i = 0; $i < count($crawler->filter('.newgalleryphoto')); $i++) {
  62. $photos[] = $this->url . $crawler->filter('.newgalleryphoto')->eq($i)->attr('href');
  63. }
  64. /*
  65. * Возвращаем ответ в виде JSON
  66. */
  67. return response()->json($photos);
  68. }
  69. }