Я сделал нечто подобное, используя phantomjs и wget. Этот бит фантомов принимает поисковый запрос и возвращает URL-адрес постера фильма первого результата. Вы можете легко изменить его на свои нужды.
var system = require('system');
if (system.args.length === 1) {
console.log('Usage: moviePoster.js <movie name>');
phantom.exit();
}
var formattedTitle = encodeURIComponent(system.args[1]).replace(/%20/g, "+");
var page = require('webpage').create();
page.open('http://m.imdb.com/find?q=' + formattedTitle, function() {
var url = page.evaluate(function() {
return 'http://www.imdb.com' + $(".title").first().find('a').attr('href');
});
page.close();
page = require('webpage').create();
page.open(url, function() {
var url = page.evaluate(function() {
return 'http://www.imdb.com' + $("#img_primary").find('a').attr('href');
});
page.close();
page = require('webpage').create();
page.open(url, function() {
var url = page.evaluate(function() {
return $(".photo").first().find('img').attr('src');
});
console.log(url);
page.close();
phantom.exit();
});
});
});
Я загружаю изображение, используя wget для многих фильмов в каталоге, используя этот скрипт bash. Файлы mp4 имеют имена, которые нравятся IMDB, и поэтому первый результат поиска почти гарантированно будет правильным. Имена, такие как «Love Exposure (2008) .mp4».
for file in *.mp4; do
title="${file%.mp4}"
if [ ! -f "${title}.jpg" ]
then
wget `phantomjs moviePoster.js "$title"` -O "${title}.jpg"
fi
done
Затем minidlna использует постер фильма при создании базы данных миниатюр, поскольку у него такое же имя, что и у видеофайла.