dns2316 / php-laravel-experience

GNU General Public License v3.0
0 stars 0 forks source link

Parse torrentino with DOMXPath #7

Open dns2316 opened 7 years ago

dns2316 commented 7 years ago

url_serial = site/serial/id-name/season-season_int/episode-episode_int url_movie = sitemovie/id-name


serials

id-name

list_all_seasons = div [class: tab, tab0, open]

h4 (number season)
table(list episodes)

_(foreach all h4 in list_allseasons) season_number = h4 a

list_episodes_in_season = table[class: table-list seasons]

   link = tr [class: item]      number_episode = td [class: first, episode] a      name = td [class: name] a      date = td [class: date]      download_button = td [class: last, link-to] a

if download_button: have link for download series

===

id-name/season-season_int/episode-episode_int

  list_all_links_episode = table [main class: table-list] [second class: quality, series]

   line with links (all td with [class: column])

   link = tr [class: item]      quality = td [class: first, video]      audio = td [class: audio]      size = td [class: size]      seed = td [class: seed-leech] -> span [class: seed]      download_url = td [class: last, download] -> a [data-default] <- magnet link


movies

name_ru = div[class: header-group] h1[itemprop=name] name_eng = div[class: header-group] h1[itemprop=alternateName]

table_links = div[class: list-start]

     name_table_links = div[class: head] h3      table = table[table-list quality collapsing]      quality = tr [class: item group-head] <- add class open for open list      quality_name = td [class: first, quality] a      quality_resolution = td [class: video]      quality_audio = td [class: audio]      quality_lang = td [class: languages]      seed = td [class: seed-leech] span[class: seed]      update_date = td [class: updated]      download_link = td [class: last, download] a [data-default]

kefzce commented 7 years ago

u should use this command Get dependencies in the constructor via DI pattern and use aggregation put in object property something like:

class myClass
protected $dependency
public function __construct(Dependency $dependency)
{
$this->dependency = $dependency
}

and use like:

$this->dependency->method()

run command typing : php artisan movie:parse

dns2316 commented 7 years ago

Guzzle

// Подключаем класс Client
use GuzzleHttp\Client;

// Инициализируем класс для работы с удаленными веб ресурсами
$client = new Client();

// Выполняем GET запрос к ресурсу - https://api.github.com/user, при этом используя авторизацию
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);

// Получаем код ответа сервера (200 - успешно, 404 - страница не найдена)
$code = $res->getStatusCode();

// Извлекаем содержимое удаленного ресурса
$text = $res->getBody();

PHP Simple HTML DOM

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';

     

// Ищем все гиперссылки,
// возвращаем массив объектов
 $ret = $html->find('a');

// Ищем N-ю гиперссылку, возвращаем объект
// или null если ничего не найдено
 $ret = $html->find('a', 0);

// Ищем все <div> с атрибутом id=foo
 $ret = $html->find('div[id=foo]'); 

// Ищем все <div> с id атрибутом
 $ret = $html->find('div[id]');

// Ищем все элементы с атрибутом  id
 $ret = $html->find('[id]');

DOMXPath

$xp=new DOMXPath((@DOMDocument::loadHTMLFile('http://www.google.com/‌​'))); 
foreach($xp->query("//div[@class='name_class']") as $div)
{
echo $div/text()[1].'<br/>';
}