Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.

Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. (http://xbmc.ru/forum/index.php)
-   Поддержка локальной разработки модулей (http://xbmc.ru/forum/forumdisplay.php?f=12)
-   -   Скраппер для своего сайта (http://xbmc.ru/forum/showthread.php?t=4343)

LA_ 12.03.2014 23:05

Скраппер для своего сайта
 
У меня есть свой с описаниями отдельных фильмов. Мне нужен скраппер для этого сайта. По названию файла сайт будет выдавать описание. Соответственно, поскольку это мой собственный сайт, то формат выдачи я могу сделать каким угодно (json, xml и т.п.).

Интересует вопрос - есть ли готовый скраппер, который нужно минимально переделать (название :), url и т.п.), чтобы не изобретать велосипед и максимально упростить свою работу в этой части?

Сайт сможет выдавать в т.ч. постер, url трейлера, кинопоиск id.

DiMartino 13.03.2014 11:21

Если знаешь инглиш, то тебе стоит заглянуть в официальный вики Scrapers и HOW-TO:Write media scrapers.

Я мало знаком с теорией, скорее всего удобнее будет выдача в xml (с заменой спецсимволов), потому что сраппер представляет из себя набор регулярных выражений, а для json будет сложнее регулярки писать.

Из того что твой сайт может выдавать, я думаю следует добавить фан-арт (это просто красиво), а не только постер. На счет кинопоиск id, не думаю что он кому-то нужен, лучше сразу рейтинг, количество проголосовавших и т.п.

Я думаю наиболее продвинутым считается стандартный themoviedb.org, хотя и не уверен, в любом случае можешь просто открыть в редакторе его. Если хочешь посмотреть пример выдачи по фильму, то нужно включить Дебаг в Настройках-Система и запустить скраппер, но так что бы были удачные попытки, в логе останется url с api-key и запросом.

LA_ 13.03.2014 11:25

Да, вики уже читаю.
Надеялся, что есть что-то готовое :)

Кинопоиск id - думал как раз про ваш сервис MyShows (Service), что ему он понадобится. Но (спасибо за ответ в соотв. теме) теперь понятно, что он не нужен.

Где лучше всего (и проще) фан-арты брать? На кинопоиске их ведь нет?

DiMartino 13.03.2014 11:32

Цитата:

Сообщение от LA_ (Сообщение 61298)
Да, вики уже читаю.
Надеялся, что есть что-то готовое :)

Кинопоиск id - думал как раз про ваш сервис MyShows (Service), что ему он понадобится. Но (спасибо за ответ в соотв. теме) теперь понятно, что он не нужен.

Где лучше всего (и проще) фан-арты брать? На кинопоиске их ведь нет?

Ну фан-арт это я сказал как привык в XBMC, на самом деле это обои http://www.kinopoisk.ru/film/418839/wall/ типо этих, на themoviedb.org тоже есть. Короче большая прямоугольная картинка на весь экран.

LA_ 14.03.2014 14:43

Начал писать свой скрапер и столкнулся с огромной проблемой - в скрапере не удается получить оригинальное имя файла (XBMC его предварительно "очищает" - удаляет точки, расширение, DVDRip и т.п.). Это как-то лечится?

DiMartino 14.03.2014 17:58

Цитата:

Сообщение от LA_ (Сообщение 61335)
Начал писать свой скрапер и столкнулся с огромной проблемой - в скрапере не удается получить оригинальное имя файла (XBMC его предварительно "очищает" - удаляет точки, расширение, DVDRip и т.п.). Это как-то лечится?

Судя по моему расследованию все сводится к функции в VideoInfoScanner.cpp под названием CVideoInfoScanner::RetrieveInfoForMovie строка 549. К скрапперу ведет "FindVideo(pItem->GetMovieName(bDirNames), info2, url, pDlgProgress))" на 585, т.е. она идет к Scraper.cpp функции CScraper::FindMovie на 556. Получается из оригинального имени файла в Название превращает pItem->GetMovieName(bDirNames), соответственно это CFileItem::GetMovieName на 2552 FileItem.cpp. Дальше я копать не стал, но судя по входным данным, там нет выбора использовать Название или имя файла. Похоже что бы это исправить нужно вводить новую настройку и перекомпилировать XBMC.
По сути это правильно, потому что бывает фильм в виде образа диска, там какой-нибудь VTS_01_0.VOB, или в meta-полях контейнера скрыто нормальное название, а эта функция как раз возвращает Название фильма, а не преобразованное имя файла.

LA_ 14.03.2014 18:06

Да, я тоже немного исходники смотрел. Частично может помочь настройка через advancedsettings, но в этом случае скраппер будет работать лишь у тех, у кого такая настройка сделана (и перестанут работать другие скрапперы) - что мне совсем не нравится. Пытался на github'e зарегистрировать соответствующий запрос ("передавать имя файла в $$3 в скраппер"), но он был закрыт с комментарием, что они принимают только pull-реквесты. Но в С++ я совсем не разбираюсь ((

Upd. т.е. на самом деле не нужно вместо "названия фильма" передавать имя файла. К передающимся сейчас в $$1 названии фильма и в $$2 - году нужно добавить $$3 с именем файла.

Upd2. следующее интересное наблюдение - в output можно использовать переменную вида $INFO[language] - подставляет язык XBMC. Есть ли аналог, содержащий имя файла - пока не ясно.
Upd3. хм, нет. $INFO позволяет получать данные из настроек скрипта, т.е. мне никак не поможет.

easy 29.04.2014 12:03

Цитата:

Сообщение от LA_ (Сообщение 61340)
К передающимся сейчас в $$1 названии фильма и в $$2 - году нужно добавить $$3 с именем файла.

Имя файла не обязательно. Тут два выхода есть
1. Держать библиотеку в папках с названием фильма а в XBMC ставить галку "Файлы в отдельных папках с названиями фильмов". Тогда в $$1 будет название.
2. Своя база - тут и карты в руки. Сам сейчас пишу что-то подобное. У меня, к примеру, есть такая табличка
Код:

CREATE TABLE `searchindex` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `mid` int(10) unsigned NOT NULL,
  `title` varchar(255) NOT NULL,
  `originaltitle` varchar(255) NOT NULL,
  `translit` varchar(255) DEFAULT NULL,
  `badencoding` varchar(255) DEFAULT NULL,
  `year` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mid` (`mid`),
  FULLTEXT KEY `FTSEARCH` (`title`,`originaltitle`,`translit`,`badencoding`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


выгребаю оттуда mid так -
Код:

SELECT *, MATCH (title,originaltitle,translit,badencoding) AGAINST ('$query' IN BOOLEAN MODE) AS Relevance
FROM searchindex
WHERE MATCH (title,originaltitle,translit,badencoding) AGAINST ('$query' IN BOOLEAN MODE)
ORDER BY Relevance DESC, year ASC


предварительно удалив из $query (это поисковый запрос) всё кроме букв цифр и пробелов. В title,originaltitle,translit,badencoding тоже лишние символы удалены
Цитата:

Мне нужен скраппер для этого сайта. По названию файла сайт будет выдавать описание ... формат выдачи я могу сделать каким угодно (json, xml и т.п.).
Я выдаю в xml с заголовком header("Content-Type: text/xml");
А скрапер такой -
Код:

<?xml version="1.0" encoding="utf-8"?>
<scraper framework="1.1" name="Scraper v1.2" content="movies" thumb="icon.png" ServerContentEncoding="utf-8" language="ru">
    <CreateSearchUrl SearchStringEncoding="UTF-8" dest="3">
                <RegExp input="$$1" output="&lt;url&gt;http://yoursitename.org/search/\1/xml&lt;/url&gt;" dest="3">
                        <expression noclean="1"/>
                </RegExp>
        </CreateSearchUrl>
        <GetSearchResults dest="8">
                <RegExp input="$$1" output="\1" dest="8">
                        <expression noclean="1"></expression>
                </RegExp>
        </GetSearchResults>
        <GetDetails clearbuffers="no" dest="3">
            <RegExp input="$$1" output="\1" dest="3">
                <expression noclean="1"></expression>
                </RegExp>
        </GetDetails>
</scraper>


LA_ 29.04.2014 12:08

Это естественно, что есть множество обходных путей (я, например, в результате стал использовать nfo файлы), но все они неудобны и некрасивы. Имя файла в $$3 очень бы помогло.

LA_ 17.04.2016 13:23

Вернулся к XBMC (точнее, теперь уже к Kodi)... Передачу имени файла не реализовали?)


Текущее время: 15:05. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.