Проверьте подкаст RSS / XML-канал с php [дубликата]

0

В настоящее время я работаю над тем, чтобы проверить, соответствует ли данный URL-адрес правильно отформатированному подкастному каналу.

Сейчас у меня есть двухфазный подход, который, по-видимому, действует как достаточно достаточный. Первый - это просто использование CURL для проверки ответа, но затем я использую DOMDocument validateOnParse для проверки форматирования, т.е.

$dom = new DOMDocument();
$dom->validateOnParse = true;
if($dom->load($url, LIBXML_NOERROR)){

Который, кажется, немного сверхчувствителен и иногда будет отклонять плохо структурированные подкасты. Он также передает регулярные, не подкасты rss-каналы.

Примечание. Я уверен, что плохо структурированные подкасты по-прежнему приемлемы, поскольку я тестировал их, подписываясь на них через приложение подкаста.

Очевидно, validateOnParse специально не предназначен для проверки подкастов, но есть ли другой метод или библиотека? Похоже, что очень мало соответствует каким-либо стандартам со стороны производителей подкастов.

-- ОБНОВИТЬ --

Любой, кто искал и рассматривал этот вопрос, скорее всего, найдет дубликат в качестве подходящего решения. Однако в моем случае оказалось, что вместо плохого форматирования я получал ошибки, потому что некоторые запросы на $ url блокировались на основе того, что мой сервер предоставлял в качестве User Agent.

Проще говоря, решение этого заключалось в том, чтобы подделать User Agent, что-то вроде этого:

$options  = array('http' => array('user_agent' => 'some user agent string'));
$context  = stream_context_create($options);

$file = file_get_contents($url,false,$context);

Это, казалось, решает все случаи ложноотрицания, и дубликат, похоже, фиксирует ложные срабатывания.

  • 0
    Если предложенный дубликат вам не помог, оставьте уведомление. Также, пожалуйста, предоставьте два или три примера подкастов: один не подкаст, один недействительный, но работающий, и один действительный, например.
Теги:
rss
podcast

1 ответ

0

Используйте знак "@" следующим образом:

@$dom->validateOnParse = true;

Поскольку вы не всегда найдете проверенные документы, знак "@" будет игнорировать любые предупреждения, которые могут возникнуть.

  • 0
    $dom->validateOnParse = true; никогда не выдаст предупреждение (если $dom правильно инициализирован), поэтому размещение оператора управления ошибками в лучшем случае вводит в заблуждение.
  • 0
    Да, ты прав, извини, мой плохой ^^

Ещё вопросы

Сообщество Overcoder
Наверх
Меню