123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Symfony\Component\DomCrawler\Crawler;
- class GalleryController extends Controller
- {
- private $url = 'http://www.kansk-tc.ru';
- /**
- * Метод для получения списка альбомов
- * @return \Illuminate\Http\JsonResponse
- */
- public function albums()
- {
- /*
- * Получаем HTML со страницы альбомов
- */
- $html = file_get_contents($this->url . '/zhizn_kolledzha/fotogalereya');
- /*
- * Создаем экземпляр класса Crawler для дальнейшего парсинга данных
- */
- $crawler = new Crawler($html);
- /*
- * Переменная для хранения списка альбомов
- */
- $albums_list = [];
- /*
- * Перебираем все найденые альбомы и упаковываем в $albums_list
- * Примечание: из-за того, что html приходит в кривом виде, приходится узнавать кол-во альбомов по количеству заголовков
- * каждого альбома и уже потом, зная номер итерации, обращаться к нужному элементу и вытаскивать информацию
- */
- for ($i = 0; $i < count($crawler->filter('.newgallery')->filter('.gallery_cat')); $i++) {
- $albums_list[] = [
- "id" => explode('?cid=', $crawler->filter('.newgallery')->filter('.gallery_cat')->eq($i)->attr('href'))[1] * 1,
- "title" => $crawler->filter('.newgallery')->filter('.title')->eq($i)->text(),
- "date" => $crawler->filter('.newgallery')->filter('.date')->eq($i)->text(),
- "preview" => $this->url . $crawler->filter('.newgallery')->filter('.gallery_cat')->eq($i)->filter('img')->attr('src')
- ];
- }
- /*
- * Возвращаем список альбомов в JSON массиве
- */
- return response()->json($albums_list);
- }
- public function album($id)
- {
- /*
- * Получаем HTML со страницы альбома
- */
- $html = file_get_contents($this->url . '/zhizn_kolledzha/fotogalereya?cid=' . $id);
- /*
- * Создаем экземпляр класса Crawler для дальнейшего парсинга данных
- */
- $crawler = new Crawler($html);
- /*
- * Переменная для хранения списка фотографий
- */
- $photos = [];
- /*
- * Перебираем список фотографий и упаковывем в $photos
- */
- for ($i = 0; $i < count($crawler->filter('.newgalleryphoto')); $i++) {
- $photos[] = $this->url . $crawler->filter('.newgalleryphoto')->eq($i)->attr('href');
- }
- /*
- * Возвращаем ответ в виде JSON
- */
- return response()->json($photos);
- }
- }
|