Редактор темы

Реклама
Реклама
Реклама
Реклама

Модуль парсинга с сайта shikimori

alukardua мальчик, что за херню ты несешь? Где я забанен на многих форумах?
 
Автор темы
Автор темы
Новая версия парсера
Переделал поднятие новости, теперь новость поднимается не только при выходе новой серии но и при обновлении релиза на мунвалке
Теперь если на мунвалке указан ID кинопоиска то происходит подгрузка режиссера и актеров если они указаны
 

Вложения

Спасибо за модуль. А можете все таки добавить функционал, чтобы он парсил когда добавляешь новость?
 
Автор темы
Автор темы
Новая версия парсера
1. Полностью переделана админка, теперь она смотрится красиво
2. Расширен функционал обновления названия, метатега и чпу
3. добавлена в добавлении и редактировании кнопка спарсить с шикимори (парсит по id с шикимори)
так как это альфа версия в ней пока нет парсинга обложки и скриншотов
если обнаружите ошибки пишите
 

Вложения

Новая версия парсера
1. Полностью переделана админка, теперь она смотрится красиво
2. Расширен функционал обновления названия, метатега и чпу
3. добавлена в добавлении и редактировании кнопка спарсить с шикимори (парсит по id с шикимори)
так как это альфа версия в ней пока нет парсинга обложки и скриншотов
если обнаружите ошибки пишите
1. Где проверка на админа в engine/ajax ?
2. Где проверка на хэш юзера в engine/ajax ?
3. Почему файл называется class и лежит с другими классами но не является классами?
4. Некоторый код был позаимствован с моего модуля но об этом конечно писать не стоит.
5. Зачем писать так?
PHP:
$fields = array('field_kinopoisk_id'    => array('' => '----'), //id кинопоиск
    'field_world_art_id'    => array('' => '----'), //id world-art
    'field_shikimori_id'    => array('' => '----'), //id Shikimori
    'field_english_name'    => array('' => '----'), //английское название на Shikimori
    'field_japan_name'      => array('' => '----'), //японское название на Shikimori
    'field_age_limitation'  => array('' => '----'), //возрастное ограничение на Shikimori
    'field_release_year'    => array('' => '----'), //год выпуска на Shikimori
    'field_release_date'    => array('' => '----'), //дата начала выпуска на Shikimori
    'field_expiration_date' => array('' => '----'), //дата завершения выпуска на Shikimori
    'field_series_in'       => array('' => '----'), //количество серий на Shikimori
    'field_status'          => array('' => '----'), //статус на Shikimori
    'field_duration'        => array('' => '----'), //длительность на Shikimori
    'field_tip'             => array('' => '----'), //тип на Shikimori
    'field_studios_sp'      => array('' => '----'), //озвучивание на moonwalk
    'field_studios_rl'      => array('' => '----'), //все озвучки на moonwalk
    'field_series_out'      => array('' => '----'), //текущая серия на moonwalk
    'field_season_mod'      => array('' => '----'), //форматированный сезон
    'field_series_mod'      => array('' => '----')  //форматированная серия
);

$all_field = xfieldsload();

if ($all_field)
foreach ($all_field as $key => $value)
{
    $fields['field_kinopoisk_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_world_art_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_shikimori_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_english_name']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_japan_name']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_age_limitation']["{$value[0]}"]  = " {$value[1]} ";
    $fields['field_release_year']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_release_date']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_expiration_date']["{$value[0]}"] = " {$value[1]} ";
    $fields['field_series_in']["{$value[0]}"]       = " {$value[1]} ";
    $fields['field_status']["{$value[0]}"]          = " {$value[1]} ";
    $fields['field_duration']["{$value[0]}"]        = " {$value[1]} ";
    $fields['field_tip']["{$value[0]}"]             = " {$value[1]} ";
    $fields['field_studios_sp']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_studios_rl']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_series_out']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_season_mod']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_series_mod']["{$value[0]}"]      = " {$value[1]} ";
}
Когда это делается так
PHP:
$all_xfield = xfieldsload();
$count_all_xfield = count($all_xfield);

$xfield = [];

$xfield['-'] = '-';
for ($i = 0; $i < $count_all_xfield; $i++) {
    $xfield[$all_xfield[$i][0]] = $all_xfield[$i][1];
}

$xfOptions = [
    'field_kinopoisk_id' => 'Дополнительное поле с ID Кинопоиск',
    'field_world_art_id' => 'Дополнительное поле с ID world-art',
    'field_shikimori_id' => 'Дополнительное поле с ID Shikimori',
    'field_english_name' => 'Дополнительное поле с английским названием',
];

foreach ($xfOptions as $key => $value) {
    showRow(
        $value,
        '',
        makeDropDown($xfield, "save_con[opt][{$key}]", $shiki_opt['opt']['field_kinopoisk_id'])
    );
}
6. Запись которую ты взял у меня, не сделал проверку на данные
PHP:
foreach ($save_con as $index => $item)
foreach ($item as $key => $value)
{
$shiki[$index][$key] = $value;
}
Где фильтрация? Где безопасность?
7. Вместо _REQUEST - _POST. Где провека на хэш юзера?
8. Опять таки взял код и не доделал
PHP:
curl_setopt($curl, CURLOPT_USERAGENT, $config['http_home_url']);
У тебя переменной config нет в функции, у тебя пустой юзер агент.
9. Зачем создавать файл с единственным подключением? То есть, у тебя не ведет в какую-то другую директорию где все файлы, а просто ты подключаешь файл внутри этого же каталога, зачем?
PHP:
<?php
require_once ENGINE_DIR . '/modules/shikimori/shikimori.php';

Ну в общем код был явно взят с моего модуля, но править есть еще много чего. Безопасности нет, плохого кода много. Удачи.
 
Автор темы
1. Где проверка на админа в engine/ajax ?
2. Где проверка на хэш юзера в engine/ajax ?
3. Почему файл называется class и лежит с другими классами но не является классами?
4. Некоторый код был позаимствован с моего модуля но об этом конечно писать не стоит.
5. Зачем писать так?
PHP:
$fields = array('field_kinopoisk_id'    => array('' => '----'), //id кинопоиск
    'field_world_art_id'    => array('' => '----'), //id world-art
    'field_shikimori_id'    => array('' => '----'), //id Shikimori
    'field_english_name'    => array('' => '----'), //английское название на Shikimori
    'field_japan_name'      => array('' => '----'), //японское название на Shikimori
    'field_age_limitation'  => array('' => '----'), //возрастное ограничение на Shikimori
    'field_release_year'    => array('' => '----'), //год выпуска на Shikimori
    'field_release_date'    => array('' => '----'), //дата начала выпуска на Shikimori
    'field_expiration_date' => array('' => '----'), //дата завершения выпуска на Shikimori
    'field_series_in'       => array('' => '----'), //количество серий на Shikimori
    'field_status'          => array('' => '----'), //статус на Shikimori
    'field_duration'        => array('' => '----'), //длительность на Shikimori
    'field_tip'             => array('' => '----'), //тип на Shikimori
    'field_studios_sp'      => array('' => '----'), //озвучивание на moonwalk
    'field_studios_rl'      => array('' => '----'), //все озвучки на moonwalk
    'field_series_out'      => array('' => '----'), //текущая серия на moonwalk
    'field_season_mod'      => array('' => '----'), //форматированный сезон
    'field_series_mod'      => array('' => '----')  //форматированная серия
);

$all_field = xfieldsload();

if ($all_field)
foreach ($all_field as $key => $value)
{
    $fields['field_kinopoisk_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_world_art_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_shikimori_id']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_english_name']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_japan_name']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_age_limitation']["{$value[0]}"]  = " {$value[1]} ";
    $fields['field_release_year']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_release_date']["{$value[0]}"]    = " {$value[1]} ";
    $fields['field_expiration_date']["{$value[0]}"] = " {$value[1]} ";
    $fields['field_series_in']["{$value[0]}"]       = " {$value[1]} ";
    $fields['field_status']["{$value[0]}"]          = " {$value[1]} ";
    $fields['field_duration']["{$value[0]}"]        = " {$value[1]} ";
    $fields['field_tip']["{$value[0]}"]             = " {$value[1]} ";
    $fields['field_studios_sp']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_studios_rl']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_series_out']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_season_mod']["{$value[0]}"]      = " {$value[1]} ";
    $fields['field_series_mod']["{$value[0]}"]      = " {$value[1]} ";
}
Когда это делается так
PHP:
$all_xfield = xfieldsload();
$count_all_xfield = count($all_xfield);

$xfield = [];

$xfield['-'] = '-';
for ($i = 0; $i < $count_all_xfield; $i++) {
    $xfield[$all_xfield[$i][0]] = $all_xfield[$i][1];
}

$xfOptions = [
    'field_kinopoisk_id' => 'Дополнительное поле с ID Кинопоиск',
    'field_world_art_id' => 'Дополнительное поле с ID world-art',
    'field_shikimori_id' => 'Дополнительное поле с ID Shikimori',
    'field_english_name' => 'Дополнительное поле с английским названием',
];

foreach ($xfOptions as $key => $value) {
    showRow(
        $value,
        '',
        makeDropDown($xfield, "save_con[opt][{$key}]", $shiki_opt['opt']['field_kinopoisk_id'])
    );
}
6. Запись которую ты взял у меня, не сделал проверку на данные
PHP:
foreach ($save_con as $index => $item)
foreach ($item as $key => $value)
{
$shiki[$index][$key] = $value;
}
Где фильтрация? Где безопасность?
7. Вместо _REQUEST - _POST. Где провека на хэш юзера?
8. Опять таки взял код и не доделал
PHP:
curl_setopt($curl, CURLOPT_USERAGENT, $config['http_home_url']);
У тебя переменной config нет в функции, у тебя пустой юзер агент.
9. Зачем создавать файл с единственным подключением? То есть, у тебя не ведет в какую-то другую директорию где все файлы, а просто ты подключаешь файл внутри этого же каталога, зачем?
PHP:
<?php
require_once ENGINE_DIR . '/modules/shikimori/shikimori.php';

Ну в общем код был явно взят с моего модуля, но править есть еще много чего. Безопасности нет, плохого кода много. Удачи.
Не делай себя семь пядей во лбу, каждый пишет как может, а так как это еще альфа версия он будет дорабатыватся
 
Не делай себя семь пядей во лбу, каждый пишет как может, а так как это еще альфа версия он будет дорабатыватся
Ничего себе, я дал советы, указал на ошибки а ты начал дерзить? Мальчик, успокойся и веди себя прилично. А пиздить чужой код, ctrl+c - ctrl+v, не делает из тебя программиста.
 
Автор темы
Ничего себе, я дал советы, указал на ошибки а ты начал дерзить? Мальчик, успокойся и веди себя прилично. А пиздить чужой код, ctrl+c - ctrl+v, не делает из тебя программиста.
я не дерзил, просто не все твои замечания актуальны
<?php
require_once ENGINE_DIR . '/modules/shikimori/shikimori.php';
если посмотриш по внимательнее то это сам модуль подьема новости, переадресацию оставил для совместимости со старой версией модуля
$fields = array('field_kinopoisk_id' => array('' => '----'), //id кинопоиск
'field_world_art_id' => array('' => '----'), //id world-art
'field_shikimori_id' => array('' => '----'), //id Shikimori
'field_english_name' => array('' => '----'), //английское название на Shikimori
'field_japan_name' => array('' => '----'), //японское название на Shikimori
'field_age_limitation' => array('' => '----'), //возрастное ограничение на Shikimori
'field_release_year' => array('' => '----'), //год выпуска на Shikimori
'field_release_date' => array('' => '----'), //дата начала выпуска на Shikimori
'field_expiration_date' => array('' => '----'), //дата завершения выпуска на Shikimori
'field_series_in' => array('' => '----'), //количество серий на Shikimori
'field_status' => array('' => '----'), //статус на Shikimori
'field_duration' => array('' => '----'), //длительность на Shikimori
'field_tip' => array('' => '----'), //тип на Shikimori
'field_studios_sp' => array('' => '----'), //озвучивание на moonwalk
'field_studios_rl' => array('' => '----'), //все озвучки на moonwalk
'field_series_out' => array('' => '----'), //текущая серия на moonwalk
'field_season_mod' => array('' => '----'), //форматированный сезон
'field_series_mod' => array('' => '----') //форматированная серия
);

$all_field = xfieldsload();

if (
$all_field)
foreach (
$all_field as $key => $value)
{
$fields['field_kinopoisk_id']["{$value[0]}"] = " {$value[1]} ";
$fields['field_world_art_id']["{$value[0]}"] = " {$value[1]} ";
$fields['field_shikimori_id']["{$value[0]}"] = " {$value[1]} ";
$fields['field_english_name']["{$value[0]}"] = " {$value[1]} ";
$fields['field_japan_name']["{$value[0]}"] = " {$value[1]} ";
$fields['field_age_limitation']["{$value[0]}"] = " {$value[1]} ";
$fields['field_release_year']["{$value[0]}"] = " {$value[1]} ";
$fields['field_release_date']["{$value[0]}"] = " {$value[1]} ";
$fields['field_expiration_date']["{$value[0]}"] = " {$value[1]} ";
$fields['field_series_in']["{$value[0]}"] = " {$value[1]} ";
$fields['field_status']["{$value[0]}"] = " {$value[1]} ";
$fields['field_duration']["{$value[0]}"] = " {$value[1]} ";
$fields['field_tip']["{$value[0]}"] = " {$value[1]} ";
$fields['field_studios_sp']["{$value[0]}"] = " {$value[1]} ";
$fields['field_studios_rl']["{$value[0]}"] = " {$value[1]} ";
$fields['field_series_out']["{$value[0]}"] = " {$value[1]} ";
$fields['field_season_mod']["{$value[0]}"] = " {$value[1]} ";
$fields['field_series_mod']["{$value[0]}"] = " {$value[1]} ";
}
так мне удобнее
foreach ($save_con as $index => $item)
foreach (
$item as $key => $value)
{

$shiki[$index][$key] = $value;
}
зачем тут фильтрация, если все происходит в самой админке и сохраняет только в конфиг
 
я не дерзил, просто не все твои замечания актуальны

если посмотриш по внимательнее то это сам модуль подьема новости, переадресацию оставил для совместимости со старой версией модуля

так мне удобнее

зачем тут фильтрация, если все происходит в самой админке и сохраняет только в конфиг
1. Ладно, первого я не знал.
2. Удобней тебе, но не в плане оптимизации кода.
3. Фильтрация нужна всегда, притом ты используешь var_export без явного приведение к типу число будет считаться за строку. В плане оптимизации и той же безопасности всегда нужно делать фильтрацию, особенно в подобном случае так как var_export этого не делает.
 
Автор темы
3. Фильтрация нужна всегда, притом ты используешь var_export без явного приведение к типу число будет считаться за строку. В плане оптимизации и той же безопасности всегда нужно делать фильтрацию, особенно в подобном случае так как var_export этого не делает.
конфиг у меня и приведен в строку, а безопасность в принцыпе делает сам движок, так как админка выведена не отдельным модулем, а встроена как и все модули движка
 
Автор темы
3. Почему файл называется class и лежит с другими классами но не является классами?
в таком варианте оно будет не долго, в следующих версиях будет переделано
 
Автор темы
А пиздить чужой код, ctrl+c - ctrl+v, не делает из тебя программиста.
тогда можно сказать такое про 99% программистов, так как все уже кто то придумал и описал))))
 
конфиг у меня и приведен в строку, а безопасность в принцыпе делает сам движок, так как админка выведена не отдельным модулем, а встроена как и все модули движка
Она не делает проверку на безопасность данных. У тебя записывается открытый массив в конфиг а не строка.
 
Автор темы
Она не делает проверку на безопасность данных. У тебя записывается открытый массив в конфиг а не строка.
ну это приму к сведению, посмотрю
а так это альфа версия то она сыровата
выложил для отлова всех ошибок работы
 
Автор темы
Новая версия
Исправлена проблема с парсингом с мунвалка при добавлении новости
Исправлены ошибки статуса релиза и озвучивание при обновлении новости
и другие известные проблемы самого модуля
 

Вложения

Похожие темы Последние темы Популярные темы

Назад
Сверху