dastapov: (Default)
[personal profile] dastapov
Сегодня я с некоторым офигением обнаружил, что можно вбить в 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
Это в связи с вновь доступным "безлимитным" интернетом мы разгребаем список "а вот это, возможно, хотелось посмотреть" :)
From: [identity profile] kapmah.livejournal.com
Если возможно, поделитесь пожалуйста Вашим списком "а вот это, возможно, хотелось посмотреть".

(no subject)

Date: 2008-03-17 04:55 pm (UTC)
From: [identity profile] dfyz.livejournal.com
Мне лично было удобнее скачать их базу локально и проводить поиск уже по ней. :)

(no subject)

Date: 2008-03-17 09:49 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А я про эту тему знал, но - наоборот, никогда руки не доходили :(
From: (Anonymous)
imdb:"pulp fiction"
и это куда правильнее, чем "поиск по сайту", заданный через site:imdb.com
From: [identity profile] restyler.livejournal.com
почему это правильнее? два результата с imdb, остальное левак
From: [identity profile] http://users.livejournal.com/_adept_/
А теперь предлагаю сравнить результаты работы двух запросов:
1)Криминальное чтиво site:imdb.com
2)imdb:"Криминальное чтиво"

И мне пофиг, что из них правильнее. Главное - чтобы работало. Первое - работает. Второе - очевидно, не всегда.
From: [identity profile] vbuka.livejournal.com
Я это уже года 2 как в поисковие по файлам в домашней сети использую :-).
вобще "imdb: терминатор" == "imdb терминатор"
в вашем случае (что бы сразу рэнк выдирать без участия человека) лучше с site:
Без него будут часто в топе появляться русские сайты со сылкой на imdb. В случае поиска самому в гугле иногда удобщее без site, так больше шансов найти малоизвестные фильмы.

(no subject)

Date: 2008-03-17 06:40 pm (UTC)
From: [identity profile] shmyg.livejournal.com
Однако. Никогда в голову не приходила такая идея. Я, обычно, фильмы на посмотреть выбираю не так. Беру какое-либо кино, которое мне понравилось. После этого иду на Википедию, нахожу этот фильм и брожу по всем линкам на странице - по именам актеров, датам, наградам и т.п. Что понравилось - записываю. И не только кино :). Как-то, начав читать про виноделие, добрел до отрезания голов шахидами (вино - Франция - революция - гильотина - декапитация - война в Ираке). Эвристический метод такой :). А тут - чистая математика :).

(no subject)

Date: 2008-03-17 09:52 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ну, у меня задача была чуть другая - "просеять" список названий, которые когда-то почему-то были записаны в "черную книжечку" и отделить то, что стоит смотреть, от того, что не стоит.

Imdb score в этом деле - хорошее первое приближение. А дальше уже можно идти по выдернутой ссылке и смотреть актеров-режисеров и прочее краткое изложение сюжета.

(no subject)

Date: 2008-03-18 05:05 am (UTC)
From: [identity profile] shmyg.livejournal.com
Может быть. Кстати, интересный вопрос - может, ты в курсе. Почему на Википедии никогда (по крайней мере, в той сотне фильмов, о которых я читал) нет ссылок на рейтинги из imdb, а только rottentomatoes?

(no subject)

Date: 2008-03-18 07:02 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Либо авторы их больше любят, либо imdb не нравятся такие внешние ссылки. Хотя из всех других мест вроде бы ссылки на imdb стоят замечательным образом.

Нет, не только не знаю, но и даже придумать подходящего повода не могу.

(no subject)

Date: 2008-03-18 06:43 am (UTC)
From: [identity profile] mou-ngaged.livejournal.com
Согласен. То что на IMDB ниже 5-6 из 10 в корзину. С остальным можно подробнее смотреть.

(no subject)

Date: 2008-03-18 11:30 pm (UTC)
From: [identity profile] vbuka.livejournal.com
За кино лучше в IMDB лазить. Там отличная база. К тому же по рейтингу можно отсетить откровенный мусор на просмотр которого не стоит тратить время.

(no subject)

Date: 2008-03-19 05:55 am (UTC)
From: [identity profile] shmyg.livejournal.com
К сожалению, не всегда. Вчера вот посмотрел "No country for old men". Сказать, что я удивлен по поводу присуждения фильму Оскара - ничего не сказать.

(no subject)

Date: 2008-03-19 08:57 am (UTC)
From: [identity profile] vbuka.livejournal.com
Ну это вы, наверное, такой особенный. :-)
Я считаю что фильм у которых рейтинг высокий на IMDB, вероятно понравится и мне. За последние 7 лет не часто мой мнение о фильме сильно расходилось с общественным (imdb).

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

PS. А мне этот фильм понравился :-).

(no subject)

Date: 2008-03-19 09:00 am (UTC)
From: [identity profile] vbuka.livejournal.com
Понял. Вы еще уходите с фильма и на другие темы. Тогда википедия удобнее.

(no subject)

Date: 2008-03-19 09:14 am (UTC)
From: [identity profile] shmyg.livejournal.com
Так я же и говорил, что для меня рейтинг - не основное. Хотя тоже является фактором. Википедия имеет же множество ссылок как на актеров, так и на события, описываемые в фильме. Мне лично это интересно

(no subject)

Date: 2008-03-17 07:41 pm (UTC)
From: [identity profile] dendik.livejournal.com
Интересно, почему всем почти всегда (и мне тоже) проще кажется написать 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.

Но несмотря на то, что именно туда идёт ссылка с сайта выкачки их полной базы данных, я сходу не обнаружил в тексте лицензии про ограничения на БД. Странные они.

(no subject)

Date: 2008-03-17 07:42 pm (UTC)
From: [identity profile] dendik.livejournal.com
PS. А за привлечение внимания к греповскому флажку -o большое спасибо. Мне его очень не хватало, а почему-то в мане мимо него всегда смотрел... :)

(no subject)

Date: 2008-03-18 07:05 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Тут надо только помнить, что это гнутый флажок, и в самый ответственный момент на каком-нибудь солярисе или чпуксе можно оказаться без него :)

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

Соответственно, изжить эту привычку можно только отказавшись от grep-а вообще в пользу sed -n, чего никто, естественно, делать не будет.

(no subject)

Date: 2008-03-18 07:20 pm (UTC)
From: [identity profile] dendik.livejournal.com
Эх, я вообще давненько за негнутые юниксы не держался, думаю, у меня там не только с grep -o будут проблемы, если придётся...

(no subject)

Date: 2008-03-17 09:07 pm (UTC)
From: [identity profile] goh-dan.livejournal.com
Спасибо, крайне полезный скрипт!

(no subject)

Date: 2008-03-18 08:34 pm (UTC)
From: [identity profile] mickolka.livejournal.com
Дима, а не пробовал на питоне или руби такие вещи писать, или нам молодежи не понять стариков у которых баш в в крови? :)

(no subject)

Date: 2008-03-27 11:40 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Да, дело именно в идиомах-привычках.

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

Я мог втиснуться в такое же примерно кол-во кода с Haskell и HaXml, но - зачем? Плюс, вместо regexp-ов было бы правильнее присать XPath queries, и пошло-поехало - кто помнит синтаксис XPath на память, а? Потом бац - и обнаруживаешь, что уже час пишешь то, что на shell-utils делается за пять минут. Зато у тебя оно уже с GUI, кроссплатформенное, многотредовое и сохраняет результаты в базе :)

(no subject)

Date: 2008-03-19 12:45 pm (UTC)
From: [identity profile] vorotylo.livejournal.com
Дима, вопрос: поломается ли скрипт, если у wget отобрать `-U Firefox'?

(no subject)

Date: 2008-03-19 06:56 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Поломается. Wget перестанут пускать на imdb (403).

(no subject)

Date: 2008-03-20 12:55 am (UTC)
From: [identity profile] frogstail.livejournal.com
Может быть, wget -q, чтобы экран не засорять?

(no subject)

Date: 2008-03-27 11:31 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Да, безусловно.

(no subject)

Date: 2008-04-13 11:41 pm (UTC)
From: [identity profile] alogic.livejournal.com
Полезный скрипт. И для изучения тоже, спасибо, узнал кое-что новое.

Еще одна поправочка

Date: 2008-06-26 06:04 am (UTC)
From: [identity profile] alexanc.livejournal.com
Для отображения жанров, содержащих символ "-" (таких как Sci-Fi, например), необходимо немножко поправить строку с определением переменной genre:
grep -o ">[A-Z][a-zA-Z]*<"
заменить на
grep -o ">[A-Z][a-zA-Z-]*<"

P.S. Спасибо за скрипт, сам недавно хотел написать на перле, а оказалось, уже есть Ваш на баше :)

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags