Home
dump -0f - /dev/mind
Баечки о мобильной связи (GSM, CDMA) и IT индустрии
Поиск по русским именам фильмов на imdb.com и автоматическое извлечение данных о фильме оттуда же 
17th-Mar-2008 06:21 pm
Сегодня я с некоторым офигением обнаружил, что можно вбить в Google поисковый запрос "Кто вы, мистер Брукс? site:imdb.com" и получить первым результатом ссылку на страницу этого фильма на imdb.com.

Не выходя из состояния офигения, я достал из загашников старый полу-работающий скриптик для извлечения основных данных о фильме с imdb.com и довел его до работоспособного состояния.

Кому интересно, скрипт и пример его использования - под катом.

Вот скрипт:

#!/bin/bash
request="$@"
file="imdb_dump.html"

wget -U Firefox "http://www.google.com/search?q=$request site:imdb.com&btnI=I\`m Feeling Lucky" -O "$file"

title=$(grep "<title>" "$file" | sed -e 's/<[^ ]*>//g')
rating=$(grep -A1 "<b>User Rating:</b>" "$file" | grep -o '[0-9][0-9./]*')
votes=$(grep -o '[0-9,]* votes' "$file")
genre=$(grep -A1 "<h5>Genre:</h5>" "$file" | grep -o ">[A-Z][a-zA-Z]*<" \
               | sed -e 's/[<>]//g' | paste - - - - - - - - - | sed -e 's/[ \t]*$//' -e 's/\t/,/g')
url=http://www.imdb.com/$(grep -o 'title/tt[0-9]*' "$file" | head -1)

echo "$request|$title|$url|$genre|$rating|$votes" | tee -a movies.csv


Запустив скрипт (пусть он лежит в файле imdb-search.sh) вот так: "imdb-search.sh Кто вы, мистер Брукс", вы получите на экране такой вот результат:


Кто вы, мистер Брукс?|Mr. Brooks (2007)|http://www.imdb.com/title/tt0780571|Crime,Drama,Mystery,Thriller|7.6/10|27,269 votes


Все эти данные будут продублированы в файле movies.csv, в текущей директории. Можно сделать несколько запросов, загрузить movies.csv в oocal или excel и там их покрутить.

PS
Это в связи с вновь доступным "безлимитным" интернетом мы разгребаем список "а вот это, возможно, хотелось посмотреть" :)
Comments 
17th-Mar-2008 04:48 pm (UTC) - поделитесь пожалуйста списком
Если возможно, поделитесь пожалуйста Вашим списком "а вот это, возможно, хотелось посмотреть".
17th-Mar-2008 04:55 pm (UTC)
Мне лично было удобнее скачать их базу локально и проводить поиск уже по ней. :)
17th-Mar-2008 09:49 pm (UTC)
А я про эту тему знал, но - наоборот, никогда руки не доходили :(
17th-Mar-2008 05:56 pm (UTC) - приколись, вот так тоже работает
Anonymous
imdb:"pulp fiction"
и это куда правильнее, чем "поиск по сайту", заданный через site:imdb.com
17th-Mar-2008 06:30 pm (UTC) - Re: приколись, вот так тоже работает
почему это правильнее? два результата с imdb, остальное левак
17th-Mar-2008 07:19 pm (UTC) - Re: приколись, вот так тоже работает
А теперь предлагаю сравнить результаты работы двух запросов:
1)Криминальное чтиво site:imdb.com
2)imdb:"Криминальное чтиво"

И мне пофиг, что из них правильнее. Главное - чтобы работало. Первое - работает. Второе - очевидно, не всегда.
18th-Mar-2008 11:28 pm (UTC) - Re: приколись, вот так тоже работает
Я это уже года 2 как в поисковие по файлам в домашней сети использую :-).
вобще "imdb: терминатор" == "imdb терминатор"
в вашем случае (что бы сразу рэнк выдирать без участия человека) лучше с site:
Без него будут часто в топе появляться русские сайты со сылкой на imdb. В случае поиска самому в гугле иногда удобщее без site, так больше шансов найти малоизвестные фильмы.
17th-Mar-2008 06:40 pm (UTC)
Однако. Никогда в голову не приходила такая идея. Я, обычно, фильмы на посмотреть выбираю не так. Беру какое-либо кино, которое мне понравилось. После этого иду на Википедию, нахожу этот фильм и брожу по всем линкам на странице - по именам актеров, датам, наградам и т.п. Что понравилось - записываю. И не только кино :). Как-то, начав читать про виноделие, добрел до отрезания голов шахидами (вино - Франция - революция - гильотина - декапитация - война в Ираке). Эвристический метод такой :). А тут - чистая математика :).
17th-Mar-2008 09:52 pm (UTC)
Ну, у меня задача была чуть другая - "просеять" список названий, которые когда-то почему-то были записаны в "черную книжечку" и отделить то, что стоит смотреть, от того, что не стоит.

Imdb score в этом деле - хорошее первое приближение. А дальше уже можно идти по выдернутой ссылке и смотреть актеров-режисеров и прочее краткое изложение сюжета.
18th-Mar-2008 05:05 am (UTC)
Может быть. Кстати, интересный вопрос - может, ты в курсе. Почему на Википедии никогда (по крайней мере, в той сотне фильмов, о которых я читал) нет ссылок на рейтинги из imdb, а только rottentomatoes?
18th-Mar-2008 07:02 pm (UTC)
Либо авторы их больше любят, либо imdb не нравятся такие внешние ссылки. Хотя из всех других мест вроде бы ссылки на imdb стоят замечательным образом.

Нет, не только не знаю, но и даже придумать подходящего повода не могу.
18th-Mar-2008 06:43 am (UTC)
Согласен. То что на IMDB ниже 5-6 из 10 в корзину. С остальным можно подробнее смотреть.
18th-Mar-2008 11:30 pm (UTC)
За кино лучше в IMDB лазить. Там отличная база. К тому же по рейтингу можно отсетить откровенный мусор на просмотр которого не стоит тратить время.
19th-Mar-2008 05:55 am (UTC)
К сожалению, не всегда. Вчера вот посмотрел "No country for old men". Сказать, что я удивлен по поводу присуждения фильму Оскара - ничего не сказать.
19th-Mar-2008 08:57 am (UTC)
Ну это вы, наверное, такой особенный. :-)
Я считаю что фильм у которых рейтинг высокий на IMDB, вероятно понравится и мне. За последние 7 лет не часто мой мнение о фильме сильно расходилось с общественным (imdb).

И что то не понял, как преимущества в этом имеет wiki? Как правило она хороша там, где нет специализированных ресурсов, или пока не знаешь как их найти.

PS. А мне этот фильм понравился :-).
19th-Mar-2008 09:00 am (UTC)
Понял. Вы еще уходите с фильма и на другие темы. Тогда википедия удобнее.
19th-Mar-2008 09:14 am (UTC)
Так я же и говорил, что для меня рейтинг - не основное. Хотя тоже является фактором. Википедия имеет же множество ссылок как на актеров, так и на события, описываемые в фильме. Мне лично это интересно
17th-Mar-2008 07:41 pm (UTC)
Интересно, почему всем почти всегда (и мне тоже) проще кажется написать grep x | sed s/y/z/, чем sed -n '/x/ s/y/z/p', хотя второе, вроде сильно короче...

Кстати, выдержка из копирайтов имдб: Robots and Screen Scraping: You may not use data mining, robots, screen scraping, or similar data gathering and extraction tools on this site, except with our express written consent as noted below.

Но несмотря на то, что именно туда идёт ссылка с сайта выкачки их полной базы данных, я сходу не обнаружил в тексте лицензии про ограничения на БД. Странные они.
17th-Mar-2008 07:42 pm (UTC)
PS. А за привлечение внимания к греповскому флажку -o большое спасибо. Мне его очень не хватало, а почему-то в мане мимо него всегда смотрел... :)
18th-Mar-2008 07:05 pm (UTC)
Тут надо только помнить, что это гнутый флажок, и в самый ответственный момент на каком-нибудь солярисе или чпуксе можно оказаться без него :)

PS
А "grep-отдельно, sed - отдельно" происходит, скорее всего, потому, что сначала ты несколько раз запускаешь grep, "подгоняя" регулярное выражение, а потом уже задаешься вопросом "а как бы теперь отрезать лишнее?".

Соответственно, изжить эту привычку можно только отказавшись от grep-а вообще в пользу sed -n, чего никто, естественно, делать не будет.
18th-Mar-2008 07:20 pm (UTC)
Эх, я вообще давненько за негнутые юниксы не держался, думаю, у меня там не только с grep -o будут проблемы, если придётся...
17th-Mar-2008 09:07 pm (UTC)
Спасибо, крайне полезный скрипт!
18th-Mar-2008 08:34 pm (UTC)
Дима, а не пробовал на питоне или руби такие вещи писать, или нам молодежи не понять стариков у которых баш в в крови? :)
27th-Mar-2008 11:40 pm (UTC)
Да, дело именно в идиомах-привычках.

Да и что тут можно существенно выиграть, написав код на питоне или руби? (я не говорю про случай наличия какой-нибудь libruby-imdb-complete-parser)

Я мог втиснуться в такое же примерно кол-во кода с Haskell и HaXml, но - зачем? Плюс, вместо regexp-ов было бы правильнее присать XPath queries, и пошло-поехало - кто помнит синтаксис XPath на память, а? Потом бац - и обнаруживаешь, что уже час пишешь то, что на shell-utils делается за пять минут. Зато у тебя оно уже с GUI, кроссплатформенное, многотредовое и сохраняет результаты в базе :)
19th-Mar-2008 12:45 pm (UTC)
Дима, вопрос: поломается ли скрипт, если у wget отобрать `-U Firefox'?
19th-Mar-2008 06:56 pm (UTC)
Поломается. Wget перестанут пускать на imdb (403).
20th-Mar-2008 12:55 am (UTC)
Может быть, wget -q, чтобы экран не засорять?
27th-Mar-2008 11:31 pm (UTC)
Да, безусловно.
13th-Apr-2008 11:41 pm (UTC)
Полезный скрипт. И для изучения тоже, спасибо, узнал кое-что новое.
This page was loaded May 12th 2008, 11:16 am GMT.