Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-03-18 04:55 am Заголовок сообщения: Новое - хорошо забытое старое или ротация файлов в каталоге |
|
|
Думаю, что не у меня одного юзеры по большей части качают недавно добавленные файлы, а старые им смотреть лень, хотя, среди "старья" есть масса интересных вещей. Многим было тяжело смотреть что есть на сервере, в момент, когда мы за несколько дней добавляли все что до этого лежало на фтп, это обычно бывает сразу после покупки каталога.
В результате имеем груду файлов, которые лежат на серверах, занимают место, а толку от них ноль. Как-то не правильно, согласитесь?
Решено было написать скрипт, который раз в какое-то время будет лезть в базу, находить не очень популярные фильмы/альбомы давно лежащие на сервере и добавлять их как новые.
Вот что получилось:
Код: | #!/usr/bin/perl -w
use strict;
use DBI;
# База данных MySQL
my $DB_NAME = 'database';
my $DB_LOGIN = 'login';
my $DB_PASSWD = 'passwd';
# Будем обрабатывать фильмы в видео-каталоге?
my $DO_VIDEO = 1;
# Будем обрабатывать альбомы в аудио-каталоге?
my $DO_AUDIO = 1;
# Меньше скольки хитов должно быть у "поднимаемого" фильма/альбома?
my $HITS = 5;
# Сколько фильмов/альбомов будем "поднимать" за один проход?
my $COUNT = 3;
# Конец пользовательских настроек, далее идет код
my $dbh = DBI->connect("DBI:mysql:$DB_NAME", $DB_LOGIN,$DB_PASSWD)
or die "Error connecting to mysql database";
$dbh->do("
UPDATE films SET `CreateDate` = NOW()
WHERE `Hit` <= '$HITS'
AND `CreateDate` < (NOW() - INTERVAL 1 MONTH)
ORDER BY `CreateDate` ASC
LIMIT $COUNT;") if $DO_VIDEO;
$dbh->do("
UPDATE music_albums SET `CreateDate` = NOW()
WHERE `Hit` <= '$HITS'
AND `CreateDate` < (NOW() - INTERVAL 1 MONTH)
ORDER BY `CreateDate` ASC
LIMIT $COUNT;") if $DO_AUDIO;
$dbh->disconnect();
|
Конечно никто не мешает запустить это с помощью mysql -e, но мы планируем развивать этот скрипт, поэтому выбран perl.
ps Скрипт не обрабатывает фильмы добавленные за последний месяц, это сделано специально.
pps Если у кого-то есть поправки, идеи по развитию логики скрипта, пожалуйста, пишите здесь.
Ну а если Илья включит этот скрипт в contrib, буду на седьмом небе от счастья
Последний раз редактировалось: Hiller (2008-03-19 02:00 am), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
Instruktor
Зарегистрирован: 29.02.2008 Сообщения: 89
|
Добавлено: 2008-03-18 06:36 am Заголовок сообщения: |
|
|
Смысл есть. Большенство юзеров видят "поднятые" фильмы впервые, как будто только что добавленные.
и было бы неплохо:
- учитывать мировой рейтинг (что бы "самый лучший фильм" или "ширли-мырли" не поднимать наверх);
- учитывать сколько реально новых фильмов добавлено на текущий момент. |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-03-18 07:18 am Заголовок сообщения: |
|
|
Про учет реально новых фильмов - без проблем, сделаю.
Про мировой рейтинг - брать за основу рейтинг IMDB?
Добавлено спустя 6 minutes 42 seconds:
Кстати, а зачем нам учитывать мировой рейтинг? Если фильм не качали, а он так-то популярный, пускай он попадается на глаза и его будут качать?
И еще, можно по подробнее про критерий с кол-вом "реально новых фильмов"?
Сделать, опцию в которой указывается кол-во "реально новых фильмов", при котором поднятие старых не происходит?
Или как-то иначе? |
|
Вернуться к началу |
|
Instruktor
Зарегистрирован: 29.02.2008 Сообщения: 89
|
Добавлено: 2008-03-18 08:15 am Заголовок сообщения: |
|
|
Hiller писал(а): | Про мировой рейтинг - брать за основу рейтинг IMDB?
Кстати, а зачем нам учитывать мировой рейтинг? Если фильм не качали, а он так-то популярный, пускай он попадается на глаза и его будут качать? |
Тут можно как угодно, на своё усмотрение. Былоб неплохо поднимать бывшие хиты каталога и фильмы с высоким IMDB-рейтингом.
Цитата: | И еще, можно по подробнее про критерий с кол-вом "реально новых фильмов"?
|
К примеру на первой странице выводится 30 фильмов. За последние 3 дня модеры добавили 15 фильмов, а другие 15 получается будут висеть 4-й день подряд. Их можно заменить поднятыми старыми.
т.е. 15 добавили 15 подняли, через 3 дня 5 добавили 25 подняли.
Типа того.
А вообще к старым файлам у меня вот такое отношение:
http://forum.lanmediaservice.com/viewtopic.php?t=36
|
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-03-18 11:10 am Заголовок сообщения: |
|
|
Все понятно, ок, так и сделаем.
А по поводу отношения - какой смысл грохать старое, если можно тупо винты апгрейдить? А как же новые абоненты, может они найдут в вашем каталоге то, что давно искали, а в магазинах этого уже не продают... А это ВАШИ деньги и хорошая репутация. |
|
Вернуться к началу |
|
Илья Спесивцев Администратор
Зарегистрирован: 26.02.2008 Сообщения: 703 Откуда: Техподдержка
|
Добавлено: 2008-03-18 13:23 pm Заголовок сообщения: |
|
|
Можно заменить:
"DATE_FORMAT(`CreateDate`, '%Y-%m') != DATE_FORMAT(NOW(),'%Y-%m')"
на
`CreateDate` < (NOW() - INTERVAL 1 MONTH)
тогда получится не будут подниматься фильмы за последний месяц с текущего дня. |
|
Вернуться к началу |
|
Instruktor
Зарегистрирован: 29.02.2008 Сообщения: 89
|
Добавлено: 2008-03-18 13:27 pm Заголовок сообщения: |
|
|
К сожалению правка кода убивается после очередного обновления каталога. |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-03-19 01:56 am Заголовок сообщения: |
|
|
Илья Спесивцев писал(а): | Можно заменить:
"DATE_FORMAT(`CreateDate`, '%Y-%m') != DATE_FORMAT(NOW(),'%Y-%m')"
на
`CreateDate` < (NOW() - INTERVAL 1 MONTH)
тогда получится не будут подниматься фильмы за последний месяц с текущего дня. |
Спасибо за подсказку, поправил в первом сообщении...
Добавлено спустя 1 minute 16 seconds:
Instruktor писал(а): | К сожалению правка кода убивается после очередного обновления каталога. |
Этот скрипт не входит в контрибы, поэтому он заменяться при обновлениях не будет. |
|
Вернуться к началу |
|
Instruktor
Зарегистрирован: 29.02.2008 Сообщения: 89
|
Добавлено: 2008-04-21 06:57 am Заголовок сообщения: |
|
|
Мне показалось или после апания фильма, который когда то был хитом, некорректно определяется "относительная популярнось"? После поднятия он постоянно торчит во главе списка. |
|
Вернуться к началу |
|
Илья Спесивцев Администратор
Зарегистрирован: 26.02.2008 Сообщения: 703 Откуда: Техподдержка
|
Добавлено: 2008-04-21 07:34 am Заголовок сообщения: |
|
|
Instruktor писал(а): | Мне показалось или после апания фильма, который когда то был хитом, некорректно определяется "относительная популярнось"? После поднятия он постоянно торчит во главе списка. |
Да, формула расчета относительной популярности:
кол-во дней в каталоге/кол-во хитов |
|
Вернуться к началу |
|
60659
Зарегистрирован: 04.05.2008 Сообщения: 3
|
Добавлено: 2008-05-04 22:03 pm Заголовок сообщения: |
|
|
идея вообще замечательная!
но мне кажется такая ротация нелогична, смысл менять реальную дату, почему бы не создать дополнительное поле в базе(или же наверняка есть неиспользованные поля), и уже по нему менять даты( соответственно один раз копируем даты, а далее меняем как хотим), и в "Сортировке" добавляем что то типа "по дате добавления (активная)", и ставим её за основу.
Таким образом реальная дата оставаётся и сортировка по дате адекватна. Зачем? Вот не было юзера например неделю, хочет посмотреть что добавили за это время , а так будет в перемешку и новое и не новое, что не совсем адекватно.
опять же с рейтингами всё ок |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-05-22 03:05 am Заголовок сообщения: |
|
|
В таком случае, какой смысл "поднимать" фильм, если на него не будут обращать внимание?
Вы "поднимаете" фильм для того, чтобы на него обратили внимание и скачали. Данным скриптом результат достигается, наилучшим образом. |
|
Вернуться к началу |
|
60659
Зарегистрирован: 04.05.2008 Сообщения: 3
|
Добавлено: 2008-06-03 21:28 pm Заголовок сообщения: |
|
|
а в вашем случае практически невозможно отследить реально новые фильмы , если старым дату добавления менять
в твк если сделать одельную сортировку , и сделать её "по умолчанию" то те кому надо всё равно смогут проверить последнии обновления , в то время как старые будут фильмы будут будут подняты |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2008-06-04 00:54 am Заголовок сообщения: |
|
|
Фильмы поднимаются для того, чтобы на них обратили внимание и скачали их. Акцентировать внимание на том, что этот фильм есть уже давно не имеет смысла. Человек должен "клюнуть" на фильм, при этом не важно, был ли этот фильм раньше. |
|
Вернуться к началу |
|
|