• Unix based operating system
  • PHP with Safe_mode set OFF
  • GD Library
  • Zend optimizer Ioncube Loader
  • Mysql database
  • Image Magick
  • Crontab demon
  • 1-5 лицензий — $150 USD за лицензию.
  • 6-10 лицензий — $125 USD за каждую дополнительную лицензию.
  • 11-20 лицензий — $100 USD за каждую дополнительную лицензию.
  • Больше 20 лицензий — $75 USD за каждую дополнительную лицензию.

Скрипт можно оплатить с помощью Paxum, Payonner, Webmoney. Свяжитесь с нами по электронной почте или ICQ для уточнения деталей.

Условно-бесплатная – забирает в качестве оплаты за использование 1% кликов, а также несколько урезанная функционально. В настоящее время в ней недоступно удаленное хранение тумб. Скачать файл инсталятора можно передейдя по следующей ссылке: install.zip (iinstall_70.zip для php 7.0.x, iinstall_71.zip для php 7.1.x и более новых)

1. Введение

  StreamRotator — это программный комплекс, предназначенный для автоматизации управления контентом на сиджах, содержащий в себе модули граббера и ротатора. Реализован на php с использованием ZendOptimizer, GdLib, mysql, ImageMagick, cron. Имеет 2 варианта - условно-бесплатный (в качестве оплаты взимается 1% кликов, некоторые ограничения в функциональности) и платный.

  Основная задача, которая стояла при разработке скрипта — умение выжать из сайта максимальную продуктивность. Для этого был разработан, воплощен в код и оттестирован ряд уникальных алгоритмов, каждый из которых в отдельности заслуживает патентования, ну а в комплексе... В комплексе они просто изменят Ваше представление о том, как должны расти сайты, какая должна быть продуктивность, какой ским, сколько, в конце концов, Вы можете зарабатывать. Это не просто громкие слова или самореклама. Это мнение тестеров, которые наблюдали за поведением ротатора не один месяц и не на одном десятке своих сиджей.

2. Установка

  Загрузите архив http://streamscripts.com/rotator/install.zip, распакуйте, загрузите содержимое на свой сервер в корень домена. Установите на корневую директорию домена права 777. В строке броузера введите http://yourdomain.com/install.php Вы увидите нечто подобное:

Mysql host, mysql user, mysql password, mysql database — параметры подключения к базе данных mysql, которая будет использоваться ротатором.
Mysql utility location and mysqldump utility location — расположение утилит базы данных- mysql и mysqldump соответственно. Используются при создании или резервных копий и при восстановлении. Уточните расположение этих утилит у своего администратора.
IM convert utility location — расположение утилиты convert из пакета утилит ImageMagick. Уточните у своего администратора.
PHP location — расположение интерпретатора php. Не используется в работе, но необходимо для правильного написания задания cron-а. Уточните у своего администратора.
Script directory — каталог в котором будет находиться скрипт ротатора.

Примечание. Инсталлятор пытается сам определить конфигурацию сервера и заполнить значения для параметров mysql utility location, mysqldump utility location, IM convert utility location, PHP location, поэтому не удивляйтесь, если в этих полях будут проставлены пути. Если вы все правильно заполнили, то после нажатия кнопки«install» вы увидите список установленных файлов, и перечень созданных таблиц базы данных. В самом низу будет что-то типа:

all right!
delete install.php
change password in admin zone (default password: adminpass)
make cronjob:
* * * * * cd /home/yourdomain/streamrotator; /usr/local/bin/php -q cron.php 1>/dev/null 2>/dev/null


Создайте задания для крона, установите старые права на корневую директорию домена (обычно 755), удалите install.php и переходите в админку.

3. Быстрый старт

Как запустить ротатор потратив на это минимум времени? Рецепт нашего фастфуда:
1. В разделе settings заполняем поля:
  email – почтовый ящик на который будут приходить сообщения об ошибках ротатора;
  niche – ниша сайта (можно выбрать несколько);
  new password and confirm new password – пропишите тут новый пароль.
Нажимаем «save changes». Более подробное описание этих и других настроек вы сможете прочитать в соответствующем разделе этого руководства.

2. Создаем один или несколько ротаторов. Ротатор - это совокупность позиций на морде сиджа под тумбы/дески характеризующаяся одинаковыми параметрами такими как высота/ширина. Возможно не лучшее определение, но думаю, если вы читаете это руководство то понимаете о чем идет речь:) В разделе «rotators» вы сможете создавать, редактировать и удалять ротаторы. Создайте необходимые вам ротаторы. Типы ротаторов:
  images (pics+movies) – в этот тип будут попадать пиксовые и мувисные галереи;
  images (pics) – только галереи содержащие картинки;
  images (movies) – только галереи содержащие мувики;
  descs – тип ротатора для десков.
Для чего нужно 3 типа пиксовых ротаторов. Рассмотрим пример - мы хотим, чтобы на морде было 2 блока тумб - на первом только пиксовые гали, на втором только мувисные. Но проблема в том, что у спонсора пиксовые и мувисные fhg идут вразброс. Для того чтобы не сортировать fhg вручную мы просто создаем 2 ротатора и присвоим им соответствующий тип. У первого будет «images (pics)» у второго «images (movies)». Таким образом, во время граба в первый ротатор будут попадать только пиксовые fhg, во второй только мувисные.

3. Настройки качества создаваемых тумб. Вообще говоря, этот пункт можно пропустить. Дело в том, что настройки по умолчанию выставлены оптимально (на мой взгляд), и удовлетворят большинство пользователей ротатора. Если у вас все-таки возникло желание изменить что-то в этих параметрах, загляните в раздел crop profiles part. Описание этого режима вы найдете в соответствующем разделе этого руководства.

4. Создайте в разделе affiliate manager записи для своих спонсоров и платников. При импорте галерей их можно привязать к соответствующему платнику. Это можно сделать и позже, но процесс потребует больше времени.

5. В разделе import вводим список наших галерей, выбираем ротатор, профайл кропа (если мы его задавали) и нажимаем «add to grab list».

6. Осталось только создать шаблон морды и состыковать его с сриптом сиджа. Об этом можно узнать в соответствующем разделе мануала.

Теперь скрипт загружен работой и у вас есть время более подробно изучить StreamRotator.

4. Общие принципы функционирования StreamRotator-а

  Граббер. Берем список спонсорских fhg, импортируем его в ротатор. В фоновом режиме начинает работать граббер. Он загружает галереи, выдергивает из них ссылки на картинки (или превьюшки мувиков) и делает из них тумбы, используя ранее заданные crop profiles (в которых задаются такие параметры как яркость, насыщенность, нанесение мувисного логотипа и еще куча всяких полезных вещей).

  Граббер имеет 3 режима работы: полный автомат (auto), полуавтомат (semiauto), и ручной режим нарезки тумб (manual). В первом случае галереи для грабинга выбираются вразнобой, также и картинка для создания тумбы выбирается случайная, т.е. вновь отграбленные тумбы будут самыми разнообразными. Они сразу попадают в ротацию. Во втором режиме гали грабятся тоже автоматически, но в ротацию попадают только тумбы, отобранные вами. Для гали можно выбрать как одну, так и несколько тумб. Там же вы можете выставить повышенный приоритет тестирования тумб, которые на ваш взгляд будут наиболее популярными (это ускорит рост продуктивности на ранней стадии жизни сайта), вручную откропить тумбы, требующие коррекции, отредактировать url и desc, поменять ротатор галереи. Выбор отграбленных тумб и добавление их в ротацию осуществляется в режиме grab list, там же можно посмотреть и галереи, которые не были срагблены по тем или иным причинам (например, из-за отсутствия конетнта на гале) - их можно удалить из списка или переграбить заново.

  Ротатор во время работы высчитывает для каждой тумбы показатель rank - по сути это ctr тумбы с поправкой на кликабельность ячеек в которых эта тумба показывалась. Тумбы с самым высоким rank-ом показываются на самых лучших позициях. Уникальной особенностью StreamRotator-а является то, что для вычисления кликабельности ячеек не нужен специальный обучающий режим - все коэффициенты высчитываются в фоновом режиме без потери трафика. Более того, при первой генерации морды скрипт пытается выставить коэффициенты в зависимости от положения ячейки таким образом, чтобы в дальнейшем изменения этого коэффициента были минимальными. В дальнейшем эти показатели очень плавно подстраиваются под существующую статистику кликабельности ячеек.

  В процессе ротации, после того как все тумбы для определенной гали показались как минимум N-раз (парамет new thumbs lifetime в настройках), в ротации остается только лучшая тумба а все остальные удаляются. Это довольно длительный процесс, но в результате скрипт сможет выжать из контента максимальный эффект. Кстати хоть этот процесс и продолжительный, он вполне безболезненный, так как на морде присутствует только небольшое количество тестируемых тумб (параметр new thumbs percent в настройках), все остальные - 'лучшие из лучших'.

  Еще одной отличительной особенностью скрипта является то, что на статистку ротатора не влияют подозрительные на чит клики/показы, например действия посетителей с выключенными cookie или js, посетители из нежелательных стран также не будут влиять на статистику. Все параметры, по которым вычисляется чит, я не буду расписывать, скажу лишь, что они аналогичны механизмам, применяемым в cj-скриптах.

  Ну а теперь пару слов о самом эффективном механизме StreamRotator-а, который позволяет очень существенно поднять проду на сайте. Это механизм показа новых тумб для неуникальных посетителей. Проще говоря, если посетитель побывал на вашем сайте, перешел на какого-то вашего трейдера, и вернулся окольным путем обратно, то ему будут показаны совершенно новые тумбы. Несомненно, у него будет большая мотивация посмотреть что скрывается за этими новыми тумбами, чем если бы он увидел тот же сайт с тем же контентом. Или, если ваш сайт окажется в букмарках, то посетитель при каждом посещении будет видеть все новый и новый контент. Этакая иллюзия очень быстро обновляемой tgp. Какие преимущества это дает, думаю объяснять не надо. Опытный вебмастер в этом месте возразит, что такая схема работы будет крайне ресурсоемкой, и... будет неправ :) Во-первых, для уникальных посетите лей всегда будет показываться статика, которая генерируется через определенные промежутки времени, как это обычно делается в скриптах подобного рода. Морда с новыми тумбами будет генерироваться "на лету" только для неуникальных посетителей, процент которых обычно колеблется в пределах 10-15%. Более того, эти дополнительные морды для неуников тоже кешируються, и если есть необходимый "свежий" фейс в кеше, то он не будет генерироваться! Во-вторых, морда генерируется не из шаблона заданного в админке, и из некоего полуфабриката, "промежуточного слоя", заточенного под быстрые выборки и быстрое формирование морды сиджа. В-третьих, движок скрипта в своей работе активно использует heap-таблицы mysql. Этот тип таблиц mysql-сервер хранит в оперативной памяти и запросы к ним выполняются на несколько порядков быстрее, чем к обычным таблицам. По итогам тестов, среднее время in-а (при котором формируются и новые морды для неуников) составляет всего несколько сотых долей секунды. Что является очень неплохим результатом.

  Скорость обновления морды. Скорость зависит от состояния статистики по тумбам. Если статистики мало, морда обновляется каждую минуту. Если статистики много - 1 раз в 20 минут. Для непопулярных нишевых страниц обновление может происходить еще реже. Такая гибкость позволяет, во-первых, молниеносно выбирать наиболее кликабельные тумбы и соответственно поднимать проду на минимальном трафике, а во-вторых, максимально щадяще относиться к ресурсам сервера на "набравшем обороты" сидже.

  Особенности использования heap-таблиц. Маленькая справка - в отличие от всех остальных видов таблиц mysql, heap-таблицы существуют только в памяти компьютера. Это позволяет работать с ними на несколько порядков быстрее, чем с обычными данными. Обратная сторона медали - при сбое сервера myslq их содержание теряется. Для того чтобы обезопасить себя от несчастных случаев скрипт время от времени делает копию этих данных. Периодичность бакапа - каждые 5 минут. Кроме того, каждую минуту делается проверка, если произошла потеря heap-таблиц, они восстанавливаются из бакапа. В случае сбоя овнер информируеться о типе ошибки на email. Таким образом, в худшем случае мы потеряем статистику за последние 5 минут. Хотя следует заметить, что при правильной настройке сервера mysql он будет работать безпроблемно годами. Подобная организации хранения данных позволяет в иметь в базе данных десятки и сотни тысяч тумб, и выдерживать трафик сотни тысяч посетителей в сутки на сервере средней производительности.

  Система распределения нагрузки между стримами на сервере. На сервере формируется общая для всех ротаторов очередь. При попытке выполнить задание крона для определенного экземпляра стрима, скрипт проверяет свое место в очереди заданий (здесь и далее под "заданием крона" подразумевается срипт ротатора, который отрабатывает каждую минуту, результат работы которого - генерация морды, граббинг галерей, формирование тумб (кроппинг), обновление статистики и другие сервисные функции). Если место в очереди меньше или равно 5, то задание выполняется, и после этого ротатор становится в хвост очереди. Более того, есть еще одна очередь для процедур граба/кроппинга галерей, которые, как известно, генерируют самую большую нагрузку на сервер. По умолчанию на сервере не будет одновременно выполняться более 5 заданий крона и 1 кроппинга/граббинга. Эти параметры для мощных серверов можно увеличить. Делается это двумя переменными в php.ini streamrotator_max_crons and streamrotator_max_grabs максимальное разрешенное количество одновременно запущенных заданий крона стримротатра и граба соответственно. Например, сделав следующую запись в php.ini:
  streamrotator_max_crons=7
  streamrotator_max_grabs=2
Вы получите 7 (или менее) запускаемых каждую минуту заданий крона стрима и 2 (или менее) выполняемых заданий кропа/граба. Если в php.ini ничего не прописано, то стримротатор считает, что streamrotator_max_crons=5 и streamrotator_max_grabs=1.

  Теперь немного о том что, представляет из себя очередь кронов физически. Каждая позиция очереди – этой файлик нулевой длинны, имя которого представляет из себя «streamXXXXXX…..», где «XXXX.....» хаотичный набор цифр и букв. Длина имени файла 42-43 символа. Находятся эти файлы в директории /tmp сервера. Если по каким-то причинам такой директории на сервере нет (например, window-хостинг), в php.ini нужно прописать переменную streamrotator_order_dir и указать в ней директорию, доступную для всех юзеров сервера. Иногда возникает необходимость почистить очередь кронов стрима, для этого достаточно просто удалить эти файлы с сервера. Процедура безболезненна, очередь будет сформирована при следующем запуске кронов ротаторов. Необходимость в ней возникает крайне редко, например при удалении ротаторов с сервера – для того чтобы «выкинуть» из очереди те стримы, которые мы удалили. «Потерянные» файлы очереди стримов будут автоматически удалены из очереди через 3 часа, поэтому и чистить их особой необходимости нет.

  Просмотреть логи запуска крона Вы можете, кликнув в админке по ссылке времени «Last cronjob started at:» Тут будет время старта крона данного стрима, время, затраченного на генерацию морды и обновление статистики (stat), время, потраченное на граб и кропинг (grab), время, отведенное на аплоад тумб на удаленный сервер (для платной версии - ftp), и прочие операции (other). Тут же можно посмотреть параметры streamotator_max_crons and streamrotator_max_grabs. Кликнув по ссылке «Show Order» вы увидите очереди кронов (первый столбец) и грабов (второй столбец). Красным подсвечно место в очереди текущего экземпляра стрима.

5. Home

Новости и апдейты.

6. Affiliate Manager

  Раздел поможет "разложить по полочкам" информацию о платниках чьи галереи используются в ротаторе, а также дает возможность воспользоваться кое-какими связанными с этим полезными возможностями. Каждая галерея может быть привязана к какому-либо платнику, а платник, в свою очередь - к спонсору.

  Сверху расположен выпадающий список для установки фильтра по спонсорам, им удобно пользоваться, когда спонсоров много.

  default crop profile кроппрофайл грабинга, который будет сам выставляться в импорте при выборе платника. Это не значит, что галереи спонсора можно грабить только с этим кроппрофайлом, но жизнь немного облегчает;

  Max face % максимальный процент галь, который стрим будет выводить на морде. Играет роль предохранителя от излишней загруженности морды галями одного платника/спонсора. Пример - если выставить этот параметр в 20%, то скрипт не будет искусственно повышать количество галь платника на морде, если по рейтингу таких галь должно быть 10%. С другой стороны, если платник популярен, и галь на морде раньше было 30%, то теперь стрим заполнит морду только на 20%. Это не жесткое условие, оно носит рекомендательный характер и в ряде случаев может не выполняться, но стрим будет стараться :) Следует также заметить, что применение этих настроек может отразится на продуктивности сайта, так как мы нарушаем оптимальное расположение тумб на морде. Использовать можно, но осторожно;

  Skim String позволяет вносить в url аута сиджа какую-либо дополнительную строку с помощью тега #SKIM_STRING# субтемплейтов. Это может быть не обязательно ским. Просто в том месте субтемплейта, где стоит этот тег, при формировании страницы скрипт выставит значение этого поля. Простой пример для atl3. Имеем субтемплейт вида: <a href="streamrotator/out.php?l=#POS#&u=cgi-bin/at3/out.cgi?#SKIM_STRING#&u=#GAL#">
для одного спонсора выставляем параметр Skim String s=100& для остальных платников оставляем это поле пустым. В итоге получаем ским для галерей этого спонсора равным 100%, для всех остальных - ским, заданный по умолчанию в настройках cj-скрипта.

  Колонка galleries - количество галерей данного спонсора, участвующих в показах (active) и общее количество галерей (total).

  Чекбоксы желтых колонок таблицы спонсоров предназначены для массэдита галерей платника. Ставим галочку в колонке нужного нам действия, нажимаем update и готово.
TПоследняя розовая колонка позволяет удалить спонсора, при этом гали, которые были привязаны к этому спонсору, не удаляются.
Привязать новые гали к какому либо спонсору можно при импорте. Галереи, не имеющие платника, можно привязывать через multiedit в разделе Stats.

  А теперь о самом интересном – колонке rss. Многие спонсоры предоставляет среди прочих промотулзов так называемые rss-ленты со списком своих свежих fhg. Используются они в основном для блогов, но и для нас могут быть полезны. Для каждого из адвертов спонсоры генерируют уникальные rss-ленты с его id. Нажав кнопку edit в колонке rss, мы имеем возможность добавить неограниченное количество url-ов rss-ов нашего спонсора и задать нехитрые правила импорта fhg (reader name, crop profile, rotator) Теперь каждые 6 часов стрим будет заглядывать в спонсорский rss-feed, тянуть оттуда список новых fhg, и импортировать их себе. Как вы наверняка уже поняли, при появлении у спонсора новых галь он будет выкладывать их в свои рассылки, и соответственно в кратчайшие сроки новинки будут добавятся в ваш ротатор, о чем вы получите извещение на email. Не вечный двигатель для сайта, но уже что-то.

  К сожалению, никаких стандартов что и как выкладывать в rss-ы, нет. Каждый спонсор сует туда то, что считает нужным. Например описания галерей, могут находиться как в самом теле сообщения, так и в заголовке, или вообще в ссылках. Для того, чтобы выбрать источник десков, в рассылке существует поле descs source, в большинстве случаев все прекрасно работает с auto, но все-таки выполнять test перед добавлением ридера не повредит.

  Очень часто у спонсора существует масса fhg с одинаковым контентом, но выполненных в разном дизайне. Если при ручном импорте еще можно напрячься и отобрать уникальные галереи, то контролировать то что приходит в rss-рассылках невозможно. Эту проблему решает парамет Check Doubles в настройках скрипта. При грабе стрим будет осуществлять необходимые проверки и не допускать появления дубликатов. Дубли ищутся в рамках ротатора. Фича крайне полезна сама по себе, а в связке с rss-ридером просто незаменима. Настоятельно рекомендую обратить на нее внимание.

7. Import

  Импорт списка галь в базу данных ротатора. При импорте вы можете указать платник, к которому будет «привязана» галя, ротатор (можно добавить как во все ротаторы сразу, так и в какой-то один), профайл кропинга, а также формат строк для импортируемого списка. Непосредственно в строках импорта вы можете указать url галереи, ее описание (description), путь(пути) к тумбам, количество картинок и мувиков в галерее. Если при импорте указаны одно или два последних поля (pics count and movies count), то граббер не будет анализировать наличие контента в html-е, а сразу возьмет необходимые числа из импорта. Это необходимо в первую очередь мастерам, использующим свои галереи нестандартного формата, которые не "по зубам" грабберу. Галочка «Remember» позволит запоминать формат импорта и не вводить его заново в дальнейшем.

  Кроме того, в ротатор можно загрузить уже готовые тумбы. Сделать это можно 4-мя способами:

  1. В разделе MULTI IMPORT ри импорте галерей через разделители указать один или несколько урлов к тумбам. Например:
http://galleries.com/1;desc_1;http://galleries.com/1_1.jpg; http://galleries.com/1_2.jpg;http://galleries.com/1_3.jpg
где:
gallery url; description; thumb path; thumb path; thumb path

  2. В MULTI IMPORT для поля Thumb Path вместо пути к одиночной тумбе указать массив путей неограниченной длины к тумбам, разделенным «|» и заключенным в фигурные скобки. Пример:
http://galleries.com/1;desc_1;{http://galleries.com/1_1.jpg| http://galleries.com/1_2.jpg| http://galleries.com/1_3.jpg}
где:gallery url; description; thumb path
Это позволит экспортировать/импортировать галереи со всеми тумбами, вне зависимости, от их количества.

  3. Тоже самое, только вместо урлов тумб, указываем путь к ним на сервере. Путь может быть как относительно директории ротатора, так и полный путь на сервере.

  4. Через раздел SINGLE IMPORT Тут все стандартно, пояснений думаю не требуеться.

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

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

8. Grab List

  Сразу после импорта гали попадают в этот раздел. Также здесь будет список галерей, которые ротатор не смог сграбить, например при невозможности открыть url, корректно его пропарсить и т.д. Причина будет указана рядом с сообщением об ошибке. Сюда же попадают предупреждения. Пример - ротатор имеет тип images (pics), а галя содержит только мувики. В ротацию такая галя не попадает, так как не соответствует типу ротатора, в то же время ошибки при граббинге не было. Когда ротатор находится в полуавтоматическом режиме semiauto то в этом разделе будут показаны все гали, которые находятся в состоянияхready или grabbing. Grabbing галерея сейчас граббится. Ready все тумбы уже готовы, но в ротацию не отправлены. Чтобы отобрать лучшие тумбы и пустить их "в оборот", выберите все Ready и нажмите «Select Thumbs&Add to Rotation». Точно также можно удалить (delete) или перекропить заново (reset state) выбранные галереи.

  О режиме выбора тумб для отправки в ротацию в режиме semiauto необходимо рассказать подробно. Во-первых, для тумб, которые по вашему мнению являются наиболее удачными кандидатурами на топовые позиции, можно выставить повышенный приоритет для тестирования (т.е. тестироваться они будут в первую очередь) – для этого нужно 2 раза кликнуть на тумбе, чтобы рамка вокруг нее стала красной. Использование этой возможности, как правило, дает более быстрый рост продуктивности на ранних стадиях жизни сайта. Во-вторых, под каждой картинкой есть желтая кнопка «Manual Recrop» при нажатии на которую можно подкорректировать нарезанную автоматом тумбу. «Manual Recrop» позволяет избегать трудоемкого режима manual, но в тоже время максимально контролировать качество тумб. В-третьих, можно подкорректировать урл, деск, и изменить ротатор гали.

  Если ни одна из тумб не была выбрана, галерея приобретает статус Warning, Wrong Content status.

  При выставленном grabber mode=manual в grab list-е появляется кнопка "manual crop" назначение которой, думаю, понятно.

9. Rotators

   Раздел для создания, редактирования, удаления, а также просмотра статистики ротаторов. Ротатор имеет 4 вида:
    images (pics+movies) — в этот тип попадут и писксовые и мувисные гали;
    images (pics) — только пиксовые гали;
    images (movies) — только мувисные гали;
    desc — все гали, имеющие описание (description).

  Такое разделение ротаторов на виды позволяет не сортировать смесь из мувисных и пиксовых спонсорских fhg вручную для каждого из ротаторов. Мы просто задаем тип ротатора и граббер сам определит, какой контент содержится на гале и нужно ли ее (галю) добавлять в ротатор. В этом разделе также можно увидеть сколько в каждом ротаторе галерей (количество использующихся в ротации и общее) и тумб.

  Примечание. Интерфейс админки не позволит удалять и редактировать ротаторы, содержащие галереи или используемые в шаблоне.

10. Templates

   Шаблон морды. Тут, наверное, будет проще увидеть пример готового шаблона :) Сделать это можно по ссылке "Example". В шаблоне Вы увидите тэги типа #SUB_N#, где N - это номер субтемлейта (их описание расположено ниже). В субтемплейтах можно (и нужно) использовать следующие выражения:
#POS# — обязательное значение для параметра "l" в ауте ротатора;
#GAL# — url галереи;
#ENCODED_GAL# — кодированный url галереи. На морде можно использовать одновременно и кодированные и некодированные url-ы. Например в alt-е показывать реальный url, а в href-е кодированный;
#PICS# — количество картинок у галереи;
#MOVS# — количество мувиков у галереи;
#THUMB# — относительный путь к тумбе относительно директории ротатора или ссылка на удаленное место хранения тумбы при активированном ftp-модуле;
#LOCAL_THUMB# — относительный путь к тумбе относительно директории ротатора. На морде можно использовать одновременно и #THUMBS# и #LOCAL_THUMB#. Например в верхнем блоке выводить тумбы с локального быстрого сервера, на котором работает ротатор, а нижние с более медленного и с более дешевыми каналами сервера :)
#DESC# — description галереи.
#DESC_XXX# — description галереи, длинна вывода которого ограничена XXX символами (например #DESC_70#).
#LINK_ID# порядковый номер ссылки на морде. Некоторые cj-скрипты (из известных мне ats и ftt) в своей системе античита используют анализ статистики кликов на морде сайта. Для этого каждая ссылка должна иметь уникальный идентификатор, для чего и служит этот тэг.

Кнопка redraw all faces - регенерирует все все морды.

Колонка positions в субтемплейтах - сколько раз он вызывается из темплейта (обычно это количество тумб субтемплейта на морде).

Чекбоксreset face cellsобнуляет статсистику по кликательности ячеек морды. Рекомендую устанавливать его при изменении количества тумб в шаблоне.

Немного о формате аута ротатора. В общем виде он должен иметь следующее представление: {directory of the rotator}/out.php?l=#POS#&u={out_of_trade_script}.

При клике на ссылку на морде посетитель попадает на аут ротатора, который обрабатывает этот клик, а потом уже редиректит на аут cj-а, который уже по своему усмотрению распределяет клик дальше.

Внимание, важно! Для скриптов, реализованных на php, нужно использовать только тэг #ENCODED_GAL# с типом кодирования (см. settings) urlencode или urlencode + base64encode. Это необходимо для того, чтобы не терялись «хвосты» url-ов после символа &. Для скриптов, реализованных на cgi, можно использовать тэг #GAL# или #ENCODED_GAL# с типом кодирования base64_encode.

Ну и напоследок - как подсоединить ротатор к срипту сиджа. Для этого нужно просто добавить одну небольшую строчку в тот раздел cj-скрипта, в котором должен находиться шаблон морды. Если такого раздела нет, то строчку прописываем в индексный файл. Вот собственно строчка для индексов и скриптов на php:
<?php include("{directory of the rotator}/in.php");?>
А вот эта - для .shtml файлов:
<!--#include virtual="{directory of the rotator}/in.php?$QUERY_STRING"-->

Ротатор поддерживает многостраничность. Вы можете создать неограниченное количество шаблонов морд (выпадающий список слева над текстом шаблона). Инклуд нишевых морд выглядит следующим образом:
php файлы:
<?php $facename='__page_title__';include('streamrotator/in.php');?>
.shtml files:
<!--#include virtual="streamrotator/in.php?facename=__page_title__&$QUERY_STRING"-->

Есть специальная опция и для инклуда топов:
#INCLUDE_{name of the top file}#
Следует учесть что путь к файлу топа следует указывать от корня домена.Для того чтобы заинклудить содержание любой странички, вместо имени файла топа приписываем url этой странички, например:
#INCLUDE_http://mydomain.com/somepage.php#

Ин ротатора имеет одну небольшую но иногда полезную фичу - если слать трафик на урл типа http://mydomain.com?updatestat=off, то этот трафик не будет влиять на статистику ротатора. Для чего это может понадобиться. Например, мы разгоняем сидж с помощью ненишевого подлива, который может существенно повлиять на картину популярности тумб. Для того чтобы этого не происходило и стоит применять такой маневр.

11. Stat

  Статистика по галереям. Доступны самые разнообразные параметры для выборки статистики и сортировки. В статистике показывается наиболее популярная тумба галереи. Если необходимо посмотреть остальные тумбы, кликните на картинку. Галереи в состоянии disable подсвечены серым цветом; галереи, в которых уже определена лучшая тумба - розовым цветом. Здесь же вы сможете удалить галереи, изменить статус, а также отправить галерею на переграб. Кроме того, здесь есть замечательная кнопка MULTIEDIT с помощью которой вы можете сделать массовую замену определенной последовательности символов в url-е или desc-е на другую (для замены всех урлов/десков в поле replace укажите *), поменять ротатор или платник галерей. По желанию эти манипуляции вы можете произвести либо со всеми галереями отфильтрованными в stats (all filtered galleries), либо только с теми, возле которых проставлены чекбоксы (only selected galleries).

12. Trash

  Это "корзина". Основное предназначение - не допускать повторного импорта ранее удаленных галерей. Разумеется, корзину можно очищать как полностью, так и выборочно, а также восстанавливать галереи (они будут сграбблены заново).

13. Export

  Позволяет сделать экспорт базы данных галерей/тумб в различных форматах, заданных пользователем, удовлетворяющих условиям выставленных фильтров. Поля экспорта требуют некоторых пояснений:
    Gallery URL — урл галереи;
    Description — описание;
    Thumb Path — путь к тумбе. Таких полей в формате экспорта может быть несколько, тумбы будут выведены в порядке убывания популярности;
    Thumbs Array перечень всех тумб галереи, разделенных символом «|» и заключенных в фигурные скобки;
    Pics Count and Movies Count количество картинок и мувиков на галерее;
    Added дата добавления галереи в ротатор.

14. Settings

Раздел MYSQL SETTINGS - параметры подключения к серверу mysql, а также пути к утилитам. Эти поля заполняются во время инсталляции скрипта и обычно менять их надобности не возникает.

grabber mode — режим работы ротатора auto, semiauto, manual или stopped:
auto – автоматическое создание тумб и добавление в ротацию;
semiauto – автоматическое создание тумб, их ручной отбор (и при необходимости ручная коррекция), добавление в ротацию;
manual – полностью ручной граб;
stopped – граббер не работает.

IM convert utility location — путь к утилите convert из пакета утилит imagemagick.

Check Doubles проверка на уникальность контента. Очень часто у спонсора существует масса fhg с одинаковым контентом, но выполненных в разном дизайне. Если при ручном импорте еще можно напрячься и отобрать уникальные галереи, то контролировать то, что приходит в rss-рассылках, невозможно. Эту проблему решает парамет check doubles. При грабе стрим будет осуществлять необходимые проверки и не допускать появления дубликатов. Дубли ищутся в рамках ротатора.

new thumbs lifetime — после того как каждая тумба для какой-либо галереи покажется new thumbs lifetime раз, скрипт выберет для дальнейшего использования лучшую, остальные будут удалены.

new thumbs percent — процент от общего количества мест на морде, на которых будут тестироваться новые тумбы.

max clicks counted — максимальное количество кликов, которое может быть засчитано для уника в течение одной сессии. По действию аналогичен такому же параметру в системе античит защиты cj-скриптов.

ctr recalculation period — количество последних показов, по которым рассчитывается ctr и rank тумб. Этот параметр позволяет более оперативно реагировать на изменения статистики тумб и не держать в топе тумбы, которые раньше были очень популярны, а сейчас по тем или иным причинам перестали быть таковыми. Хочу отметить, что статистика не просто сбрасывается после ctr recalculation period количества показов, а перессчитывается плавно, без скачков.

unique lifetime — время уникальности посетителя. Если посетитель не был на сайте время большее чем unique lifetime, то ротатор будет считать его новым посетителем. Напомню, что неуникальным посетителям ротатор подсовывает морды с другими тумбами. Как только рав становится опять уником он опять увидит на морде лучшие по статистике тумбы. Это достаточно любопытный параметр, и у автора есть небольшая теория по поводу его использования :) Рассмотрим 3 варианта:
Вариант 1. Период уникальности равен 0. Это значит, что каждый раз посетитель, попадая на сайт, будет считаться уникальным, так как разница между текущим временем и временем последнего посещения больше 0. Так работают подавляющее большинство ротаторов.
Вариант 2. Период уникальности 24 часа. Как показали эксперименты, это наиболее эффективная политика в плане максимально быстрого разгона сайта. Но не самая лучшая, в плане долгосрочной перспективы. Попытаюсь объяснить свою точку зрения. Посетитель во время серфинга по сайтам с некоторой степенью вероятности может вернуться на ваш сидж. Он видит новые тумбы, кликает снова, дрок доволен, прода растет. Допустим что сайт попал к нему в букмарки. Вернувшись на сайт через несколько дней (время > 24 часа) он будет опять уником и увидит опять морду с самыми лучшими тумбами. Так как тумбы лучшие из лучших, то кликать он будет замечательно, но в букмарках скорее всего при таком раскладе наш сайт не задержится - так как контент серфер будет видеть постоянно один и тот же.
Вариант 3. Период уникальности 30 дней. В этом случае посетитель каждый раз попадая на сайт будет видеть все новые и новые тумбы. Не самые лучшие, но всегда новые. Прода в этом случае будет не максимальной, но и вероятность жить в букмарках выше.

Все это похоже на стратегию со скимом: выше ск им -больше букмарков, медленнее разгон; ниже ским - быстрее разгон, меньше букмарков.

script folder — Директория ротатора. По сути, это префикс используемый при формировании url-а для локальной тумбы. Нигде больше этот параметр не используется. Если у вас на морде пустые места, хотя в статистике тумбы отображаются нормально, то начните поиск ошибки с этого параметра.

Ignore Traffic From список «забаненных» стран. Посетители из выбранных стран будут видеть сайт также как остальные, за исключением того, что показы морд и клики не будут влиять на статистику ротатора. Для выбора более чем одной записи используйте CTRL. На сервере должен быть установлен модуль GEOIP для apache. Небольшой нюанс – если Вашего ip (из под которого вы видите админку) нет в базе GEOIP, то стрим будет информировать «GEOIP is not supported» , несмотря на то, что GEOIP установлен и нормально работает. К сожалению, средствами php невозможно корректно определить наличие или отсутствие этого модуля.

Show Galleries with the Same URL показывать ли на морде одновременно галереи с одинаковыми url-ами. Параметр по-умолчанию - OFF. Это логично и правильно. Но иногда возникают ситуации, когда этот момент нужно обойти, для этого и существует данный параметр.

Frequency of Backup Creation частота создания полных автоматических бэкапов.

Keep on Server Copies сколько копий автоматически создаваемых бэкапов необходимо хранить на сервере.

FTP SETTINGS. (Только для платной версии) Раздел настроек для удаленного хранения тумб. Используя эти параметры можно реализовать схему, когда сидж и ротатор будут установлены на одном сервере, а тумбы хранятся на другом. Сам процесс выглядит следующим образом. По расписанию запускается скрипт который проверяет, существуют ли галереи для которых произошел отбор лучшей тумбы, но которая еще не скопирована на удаленный сервер. Если такая тумба найдена, она отправляется на ftp и в базе данных делается соответствующая запись. При выборе другого ftp-сервера или другого каталога на уже используемом сервере все записи о месте размещения удаленных тумб удаляются и соответственно на морде используются локальные версии тумб. До тех пор пока они не загрузятся на новое место. Такая организация работы позволяет прописать параметры ftp сервера в любое время (не обязательно перед грабом галерей), а также изменять удаленное место хранения без копирования директории с тумбами на новое место вручную - скрипт выполнит все ваши прихоти на лету и не допустит, чтобы на морде были пустые места.

use ftp module. «Yes» - модуль удаленного хранения тумб включен, «No» - соответственно выключен.

ftp server, ftp user, ftp password, ftp folder(s). параметры подключения к ftp-серверу, а также путь по которому будут храниться наши тумбы.

remote url prefix — url, по которому сервер будет брать тумбы с удаленного сервера. Если Вы имеете несколько синонимов (разные url-ы, но ссылающиеся на одно и тоже место сервера), то их можно перечислить через запятую. Как известно, браузер имеет лимит на количество одновременных подключений к одному ip (домену). Когда тумбы раскиданы на несколько ip-адресов, мы «обманываем» браузер, и он открывает гораздо больше подключений. Происходит параллельная загрузка графики. Для этого нужно сделать несколько ip/субдоменов (далее просто ip) синонимов для ip вашего ftp (того, что прописан в remote url prefix). Нужно это для того, чтобы тумбы можно было загрузить на удаленный фтп один раз, после чего их было бы видно с нескольких url-ов синонимов. Например у меня есть _ip1_ для модуля фтп, на который стрим аплоадит тумбы. Тумба видна по урлу http://__ip1__/folder/1.jpg.
Так вот, нужно сделать так, чтобы эта же самая тумба была видна так:
http://__ip2__/folder/1.jpg
http://__ip3__/folder/1.jpg
http://__ip4__ /folder/1.jpg
http://__ip5__/folder/1.jpg
и т.д. Как это сделать - обращайтесь, пожалуйста, к админам.
После всего этого достаточно прописать в remote url prefix через запятую все ваши префиксы. В нашем примере: http://__ip1__/folder/,http://__ip2__/folder/,http://__ip3__/folder/,http://__ip4__/folder/,http://__ip5__/folder/

max files in subfolder — максимальное количество файлов в директории на ftp-сервере.

«test ftp settings» Запускает тест ftp сервера. Происходит подключение к серверу, переход в необходимую директорию, создание тестовой директории, копирование тестового файла на сервер, попытка получить этот файл через http-протокол, сравнение с исходным файлом. Если на одном из этапов теста происходит ошибка необходимо еще раз проверить параметры.

url encoding type — Тип кодирования урла при выводе тэга #ENCODED_GAL# (раздел Template). Для скриптов, реализованных на php, нужно использовать только тэг #ENCODED_GAL# темплейта с типом кодирования urlencode или urlencode + base64encode. Это необходимо для того, чтобы не терялись «хвосты» url-ов после символа &. Для скриптов, реализованных на cgi, можно использовать тэг #GAL#, либо #ENCODED_GAL# с типом кодирования base64_encode.

email — Сюда будут высылаться сообщения об ошибках mysql-сервера если таковые будут.

niche — В условно-бесплатной версии, скрипт отдает 1% кликов в качестве оплаты за использование. Выберите пожалуйста нишу сайта для того чтобы этот 1% попадал на ресурс с той же нишей что и ваш сидж. Для платной версии параметр не имеет смысла.

licension key — Номер ключа для платной версии. При приобретении лицензии вы получите сигнатуру которую нужно будет ввести в это поле.

new password и Confirm new password — новый пароль и подтверждение.

15. Сrop Profiles

  Создание, редактирование и удаление профайлов для кропинга (процесса создания тумб). Для чего это все нужно. Например, на галереях какого-либо спонсора имеется логотип, который вы ну никак не хотите видеть на своих тумбах. У другого спонсора на fhg хронически темные фотографии, у третьего не хватает контраста. Есть два способа решения проблемы:

Вариант 1 (классический). Выбираем спонсора, подкручиваем под него параметры, грабим галереи, переходим ко второму спонсору.

Вариант 2 (StreamRotator). Создаем под каждого спонсора индивидуальный crop profile и при импорте галерей указываемый соответствующий профайл. Дешево, надежно и сердито. Ну и на будущее пригодится, если партнерка регулярно выкладывает новые fhg. Нажмите «Create new profile» для создания нового профайла или edit для редактирования уже существующего. Далее введите url «подопытной» галереи и дождитесь когда появятся уменьшенные копии картинок. Выберите одну из них и погрузитесь в изучение нашего мега-редактора :) Выглядит он так:

  В левой части мы видим увеличенную картинку (original image area). Справа внизу (current thumb) - тумбу с примененными фильтрами и настройками кропа. В поле last thumb будет изображена тумба с предпоследними настройками. Т.е. изменив какой-либо параметр вы сразу увидите изменение и сможете наглядно сравнить с тем что было. Изменение параметров и наблюдение за результатами очень познавательное занятие и думаю, вы проведете в этом редакторе массу времени. Теперь о самих параметрах кропа:

Top shave, bottom shave, left shave, right shave — значения для предварительной обрезки исходной картинки в пикселах. Эти значения нужно использовать для вырезания регулярных логотипов на картинках;

Normalize color — нормализация цвета, в 95% делает картинку более привлекательной, но изредка «промахивается»;

Shine filter — фильтр добавляет блики на светлых частях изображения;

Dark filter — фильтр осветляет чрезмерно темные места изображения;

Enhance filter — сглаживает мелкие дефекты изображения;

Brightness — яркость;

Unsharp – аналог unsharp mask из photoshop-а, делает изображение резче;

Saturation — насыщенность;

Contrast — контраст;

Thumbs Amount Which Doesn’t Coincide Sides количество тумб, которое стрим будет создавать из исходной картинки при несовпадении отношения высота/ширина с таким отношением ротатора. Например, исходная картинка имеет ширину больше высоты (300x200, а-ля мувисный формат). Ротатор, в котором находится эта галя, имеет размер 150x200 – т.е. вытянута в высоту. При Thumbs Amount Which Doesn’t Coincide Sizes равным 3, из картинки будет создано 3 тумбы – с центральной, левой и правой части; при этом параметре равном 1 – одна тумба из центральной части; при 0 – тумб из этой картинки не будет нарезаться вообще. При совпадении форматов, данный параметр crop profile игнорируется, тумба нарезается из картинки всегда одна, из средней ее части. Более того, такие тумбы будут иметь повышенный приоритет при первоначальном тестировании на морде сайта;

Movie logos — логотипы которые будут наноситься на мувисные тумбы. Можно выбрать несколько (используя CTRL), в этом случае при создании тумб будет выбираться случайный логотип. В окне предпросмотра на тумбе будет первый из выбранных логотипов. Для того что бы убрать наложение логотипов на мувисные тумбы, снимите с помощью CTRL выбор со всех файлов логотипов;

Logos positions — расположение логотипа для мувисных тумб. Аналогично movie logos можно выбирать несколько значений;

Quality — качество jpeg.

После установки удовлетворительных значений параметра кропа введите имя нового (или измените имя редактируемого) ротатора и нажмите «save».

16. Backup

  Менеджер резервных копий. Создание, восстановление, удаление резервных копий.

17. Update

  Эта замечательная ссылка позволяет обновить скрипты и таблицы баз данных до последней версии. Все происходит очень удобно, быстро и без лишних вопросов. Пару слов о безопасности. Перед апдейтом скрипт проверяет целостность и соответствие контрольным суммам обновляемых файлов и структуры базы данных на сервере. Как вычисляются контрольные суммы я никогда никому не скажу, подобрать их невозможно, взломать алгоритм расчета теоретически возможно, но практически крайне сложно. Кроме всего вышеперечисленного, перед каждым апдейтом автоматически создается бакап и в случае какого-либо сбоя скрипт апдейтера автоматически произведет восстановление из резервной копии.

18. Script State

  Если существуют подозрения в некорректной настройке серверного ПО или что-то работает не так – первым делом переходим в этот раздел. Скрипт проведет анализ всего необходимого для своей работы ПО, настроек php, состояния таблиц mysql, ссылочной целостности базы данных, проверит физическое наличие файлов тумб на хосте, а также (для платной версии) - на удаленном сервере ftp. При повреждении таблиц базы данных стрим попытается их исправить. При отсутствии файлов тумб на сервере соответствующие гали будут отправлены на перекроп. Отсутствующие тумбы на удаленном хосте будут залиты туда повторно. Другими словами – все, что скрипт может исправить самостоятельно, он исправит. После всех проверок будет выведен подробный вердикт о пригодности существования Стрима на этом хосте. Разумется, при наличии каких-либо отклонений от нормы, необходимо поставить суппорт хостинга в известность о существующих проблемах.

19. Logout

Выход из админки.

Обновление от 29.04.2014 (Build: 1.012)

МНОГО МАГИИ
- уменьшение времени отклика при открытии страниц (в разы);
- снижение нагрузки на винты.


ИЗМЕНЕНИЯ В АЛГОРИТМЕ ТЕСТИРОВАНИЯ
Акцент смещен в сторону скорейшего выбора лучших тумб у топовых галерей. Это позволит быстрее начать раздельную ротацию по тэгам для популярных галерей.


#ALLTAGS_…# - очень полезный тэг для темплейта. Он позволяет выводить списки тэгов в алфавитном порядке.
Формат использования тэга: #ALLTAGS_PAR_TMPL#,
где PAR - список параметров через запятую, указывающий какие именно тэги необходимо показывать. Параметры следующие:
ALL - выводит все тэги (тэги начинающиеся на все символы);
A - выводит тэги, начинающиеся на букву A;
B - выводит тэги, начинающиеся на букву B;

Z - выводит тэги, начинающиеся на букву Z;
@ - выводит тэги, начинающиеся на небуквенные символы;
TOPNNN - выводит только NNN самых крупных тэгов. (например TOP100);
X/Y - позволяет разбивать список на несколько частей. Это необходимо например для ситуации, когда мы выводим список тэгов в несколько колонок. X - номер запрашиваемой части, Y - количество частей, на которые разбивается весь список.

TMPL - шаблон, на основе которого для каждого тэга будет сформирована некая строчка, которая будет на нашей странице. В TMPL можно использовать следующие тэги
{TAG} - имя тэга
{CNT} - количество галерей в тэге
{SIZE} - размер (от 1 до 8) тэга относительно самого крупного и самого мелкого тэгов. Это можно использовать при формировании облака тэгов.

Примеры:
#ALLTAGS_ALL_{TAG}<br>#
список из всех тэгов. Тэги будут выводиться в виде: tag1<br>tag2<br>tag3<br>….

#ALLTAGS_A_{TAG}<br>#
список из тэгов, начинающихся на букву A.

#ALLTAGS_TOP20_{TAG}<br>#
список из 20 самых крупных тэгов.

#ALLTAGS_A,TOP20_{TAG}<br>#
список из 20 самых крупных тэгов, начинающихся на букву A.

<table>
<tr>
<td>#ALLTAGS_A,1/5_{TAG}<br>#</td>
<td>#ALLTAGS_A,2/5_{TAG}<br>#</td>
<td>#ALLTAGS_A,3/5_{TAG}<br>#</td>
<td>#ALLTAGS_A,4/5_{TAG}<br>#</td>
<td>#ALLTAGS_A,5/5_{TAG}<br>#</td>
</td>
</table>

выводит таблицу тэгов, начинающихся на букву A, в таблице из 5 колонок.

#ALLTAGS_ALL_{TAG} ({CNT} videos)<br>#
список из всех тэгов. Тэги будут выводиться в виде: tag1 (NNN1 videos)<br>tag2 (NNN2 videos)<br>tag3 (NNN3 videos)<br>…

#ALLTAGS_ALL_<font size="{SIZE}pt">{TAG} ({CNT} videos)</font><br>#
список из всех тэгов. Тэги будут выводиться в виде: <font size="…pt">tag1 (NNN1 videos)</font><br><font size="…pt">tag2 (NNN2 videos)</font><br><font size="…pt">tag3 (NNN3 videos)</font><br>….

Тут целесообразнее использовать не <font size="{SIZE}pt"> а нечно вроде <span class="tag-{SIZE}"> и прописать в css классы tag-1…tag-8 с разными размерами шрифта.


404
Для несуществующих страниц появилась возможность возвращать код ошибки 404 в заголовке HTTP . В первую очередь это позволит очистить кэш поисковых систем от ненужного мусора (пустых страниц, дублей и т.д). Во вторую - это понятно серферам. Ну и вообще это очень правильно. Сам по себе заголовок 404 человеческим глазом невидим. Страница будет такая-же как и раньше, но вот для ботов это знак того, что тут нет ничего.
Под несуществующими страницами стрим понимает:
- удаленные локальные галереи;
- поисковые запросы, возвращающие нулевой результат;
- запросы на выдачу несуществующих тэгов (?tag=...), сайтов (?site=...) или ротаторов (?sub=...);
- несуществующие страницы пагинации.

Заголовок 404 нужно посылать перед любым выводом браузера, поэтому нашу стандартную схему:
инклуд cj-скрипт;
инклуд стрима;

нужно немного изменить.

в index.php (или что там у вас есть) нужно оставить только иклуд стрима. В простейшем случае:
<?php
include('streamrotator/in.php');
?>


(Ничего не должно выводиться перед инклудом стрима) Помните?

ВЕСЬ(!) необходимый html мы засовываем в темплейт.
JavaScript код рекомендуют пихать между <head> и </head>. Последуем этим рекомендациям:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php инклуд_cj-скрипта; ?>
#JSCODE#
<title>…</title>

</head>
...


тут инклуд_cj-скрипта - это… инклуд cj скрипта.
Для ATX он выглядит так: virtual("/cgi-bin/a2/in.cgi")
Для ATL: virtual("/cgi-bin/at3/in.cgi")
И т.д.
Просто перенесем инклуд cj скрипта из index.php в темплейт между <?php … ?>
Не забудьте после инклуда поставить точку с запятой.
Пример:
<?php virtual("/cgi-bin/a2/in.cgi");?>

Новй тэг #JSCODE# указывает где в темплейте должен находиться яваскрпит стрима. Если вдруг вы его забудете прописать, стрим это поймет и поставит его сам но не в рекомендуемом месте между <haed> и </head> а в самом начале.

Осталось включить отправку 404 в заголовке (settings -> send 404 header for empty pages: ON).

Возможно будет полезен новый тэг #404_…#, где вместо троеточия можно написать произвольный текст, информирующий серфера а о том что он попал на несуществующую страницу. Этот тэг будет выводиться только на пустых страницах. Использовать его необязательно.
Пример:
<title>#404_Page not found: #My site</title>

если страница не пустая, то в тайтле будет "My site", если страница пустая, будет "Page not found: My site"

В tmp/logs в файликах 404.дата.log вы сможете полюбоваться на перечень страниц, на которых был возвращен статус 404


ИЗМЕНЕНИЯ В ПОИСКЕ (search=…)
Поиск поумнел. Теперь он ищет не только в деске, но и в названиях платников (из affiliate manager-а) и в тэгах (и их синонимах).

Пример:
domain.com/?search=xhamster+big+tits+fucking

ранее - выводились галереи в деске которых есть слова xhamster+big+tits+fucking

теперь - будут выведены галереи xhamster-а, с тэгом big tits, содержащие в деске fucking. *
* при условии что у нас есть hamster в affiliate manager-е, и есть тэг big tits.

раньше чтобы получить такой список галерей нужно было использовать:
domain.com/?site=xhamster&tag=big+tits&search=fucking

И это еще не все. В случае если поисковый запрос полностью находится в affiliate manager-е и/или в тэгах (синонимах), то стрим будет вести правильную ротацию по всему этому. Другими словами навигацию по сайту можно целиком и полностью перевести на использования только поиска, так как параметры tag и site в урле можно заменить на search.


ОСТАЛЬНОЕ
Для каждого платника в affiliate manager-е можно прописать внешние или локальные урлы галь необходимо использовать
В колонке content gallery url поле для выбора типа урла:
пусто - использовать глобальные настройки из settings->content gallery url;
gallery url - внешние урлы галь;
local url - локальные урлы галь.
Напомню что если галерея неконтентная (нет локального урла), то в независимости от того что у вас прописано в settings и affiliate manager-е, выводится будут все равно внешние урлы.

2 новых поля в импорте/экспорте - sponsor и paysite

searchupdatoff=off
Если необходимо чтобы показ результатов поиска не влиял на статистику запросов при последующем создании комбо-ротатора, необходимо:
1. добавить в урл searchupdatoff=off (наприер domain.com/?search=keyword&searchupdatoff=off)
или
2. перед инклудом стрима в php файле прописать строчку
$_GET['searchupdatoff']='off';

#CONTENT_EXTERNAL_URL#
Тэг для контентных страниц, выводящий внешний урл галереи

Tags в stats
В stats теперь есть возможность выбрать галереи определенного тэга - filter: tag

Быстрый update
При апдейте больший сайтов (более 100.000 галерей), стрим предлагает сделать легкий бакап - без mysql (ранее бакап базы mysql при апдейте делался всегда). Это очень упрощает и ускоряет обновление стримов.
Но нужно быть уверенным, что у вас все в порядке с бакапами.

Поддержка memcache
Memcache - это ПО, позволяющее кэшировать данные в памяти. Его использование теоретически позволит снять в некоторой мере нагрузку с HDD за счет хранения кэша стрима в памяти. Если memcache неожиданно выключится или каким-то образом потеряется, то стрим продолжит использовать файловый кэш. На заметное падение нагрузки рассчитывать не стоит, потому что операционна система и так хорошо кэширует часто читаемые файлы. Но и хуже тоже не станет ) Попросите администраторов установить memcache и включите его в settings.

#CONTENT_ID# и #CONTENT_LOCAL_URL#
Два новых тэга для контентных страниц:
#CONTENT_ID#- ID галереи;
#CONTENT_LOCAL_URL# - локальный урл.

Для local url template доступен новый тэг #ROTATOR#

В stats в filter: tag можно указать *tag* - в этом случае будут показываться все галереи, которые имеют тэги, содержащие внутри слово tag.
Пример.
У нас есть тэги: tits, big tits, small tits
Если в фильтре указать tits, то буду показаны гали ТОЛЬКО с тэгом tits.
Если указать *tits*, то будут показаны гали содержащие один из 3 тэгов: tits, big tits, small tits

settings -> update to beta versions.
Тут нужно указать можно ли обновляться до бэта версий или нет, меня мучть просьбами больше не нужно :)

Обсудить...

Обновление от 25.06.2013 (Build: 1.011)

Раздельная ротация по тэгам
Человеческим языком - после того как для галереи отобрана 1 лучшая тумба, стрим для нее начнет вести отдельную статистику по каждому тэгу. Т.е. галерея (тумба) одна, но для каждого тэга у нее свой rank. Для оптимальной ротации больше не нужно создавать множество нишевых ротаторов, содержащими одни и те же галереи.
Включается в settings->TAGS SETTINGS->separate tags rotation
Посмотреть популярность тумбы по каждому из тэгов можно в stats по ссылке на rank-е.
На нагрузку практически не влияет.


Tube feed.
Tube feed позволят несколькими легкими движениями наполнить сайт контентом тюбов (PornHub,XHamster,YouPorn и т.д.) и автоматически поддерживать базу в актуальном состоянии - добавлять обновления, удалять удаленные тюбами видео. На момент апдейта в базе более 9 миллионов роликов, от 15 тюбов.

В affiliate manager при нажатии на edit в колонке rss видим новую кнопочку feed При нажатии появляется формочка со всякими полями.
Заполняем форму, нажимаем build url и получаем в поле RSS url результат - урл фида, размещенного на сервере стрима, на котором собрана база тюбов, с полным набором контента, который они (тюбы) предоставляют.
Если проще - мы создаем с помощью конструктора (формы) урл, по которому на стрим будут подтягиваться обновления для выбранных тюбов.

Теперь описание полей формы.

Общие параметры.
thumbs width, thumbs height - желаемая ширина и высота тумб, поступающих через rss.
Если в базе есть тумбы нужного размера, в rss будут они.
Если нужного размера нет, в rss попадут тумбы большего размера (но наиболее близкие к запрашиваемым).
Если нужного размера нет, и нет тумб большего размера, в rss попадут тумбы меньшего размера (но наиболее близкие к запрашиваемым).
Если thumbs width и thumbs height не прописаны, в рсс попадут тумбы максимального размера.
Указание размера позволит значительно повысить скорость заполнения контентом, за счет минимального времени на граб и кроп изображений.
min duration (minutes) - минимальная продолжительность ролика в минутах
thumbs per gallery - количество тумб для 1 видео (число или all). При наличии у видео нескольких тумб, тумба/тумбы будет отдаваться случайные.

Ниже таблица с тюбами, которые есть в базе. Для нужных тюбов поставьте галочку в поле USE

Колонки таблицы:
tube name - имя тюба;
tube videos - общее количество видео в базе, а также сколько было добавлено и удалено за последние 24 часа;
tube embed - предоставляет ли тюб embed-коды для видео;
min duration (minutes) - минимальная продолжительность ролика в минутах. Если значение не прописано, используется min duration из шапки таблицы.
Пример. Необходимо использовать видео со всех возможных тюбов не короче 5 минут. Но есть 1 тюб, который крайне интересен, но имеет мало роликов, и мы хотим использовать их все, даже короткие. Для этого в min duration в шапке таблицы мы прописываем 5 минут, а в колонке этого важного но маленького тюба - 1 минуту. Для остальных тюбов поле оставляем пустым.
thumbs per gallery - количество тумб для 1 видео (число или all). Если значение не прописано, используется thumbs per gallery из шапки таблицы.
Пример. Есть 3 тюба, контент от которых мы хотим получать через рсс. Первый и второй - большие, третий - маленький. Если получать по 10 тумб на видео с больших тюбов, нам не хватит трафика чтобы отротировать в разумное время их тумбы. Поэтому прописываем в шапке формы thumbs per gallery = 1 А для маленького - all.
videos in rss, active - количество видео в фиде (число или all)
videos in rss, deleted - нужно ли передавать в rss информацию об удаленных видео.

Часто задают вопрос. Можно ли вытянуть из Tube Feed только видео, определенной ниши для создания нишевого сайта?
Отвечаю. В фид попадают все ниши. Но с помощью Settings -> required keywords можно создать фильтр, который будет пускать в импорт только необходимое. Более подробно про required keywords читайте в разделе home в админке стрима.



Префиксы к тэгам темплейта.
Допустим у нас есть некоторый тэг для темплейта (сабтемплейта) #SOME_TAG#, который выводит на морду 'нечто'. Но нам хочется вывести это 'нечто' не так как есть, а заглавными буквами, и чтобы вместо пробелов были плюсики.

Решение проблемы - #UP:SOME_TAG# 'UP:' - это префикс.
Тут буква U является модификатором, который указывает что нужно использовать заглавные буквы.
P - поменять пробелы на плюсики.

Всего таких модификаторв 5:
U (upper case) - верхний регистр
L (lowe case) - нижний регистр
N (natural) - первая буква слова заглавная, остальные - строковые. Плюс адалт-аббревиатуры (bdsm,milf,pov,bbw,cfnm,ffm,hd,hq,xxx) - заглавными.
P (plus) - пробелы меняются на +
D (dash) - пробелы меняются на тире

Их можно использовать по отдельности или группами.
Пример:
#N:DESC# - 'красивый' деск, каждое слово с заглавной буквы
#LD:INFO# - поле инфо, строчными буквами, вместо пробелов тире.

Тэги, с которыми можно использовать префиксы:
CONTENT_DESC, CONTENT_DESC_XXX, CONTENT_INFO, CONTENT_INFO_XXX, CONTENT_PAYSITE, CONTENT_PAYSITE_FIELD_1, CONTENT_PAYSITE_FIELD_2, CONTENT_PAYSITE_FIELD_3, CONTENT_SPONSOR, CONTENT_TAGLIST, CONTENT_TAGLIST2, DESC, DESC_XXX, INFO, INFO_XXX, PAYSITE, PAYSITE_FIELD_1, PAYSITE_FIELD_2, PAYSITE_FIELD_3, ROTATOR_NAME, SEARCH, SPONSOR, TAG, TAGLIST, TAGLIST2
Если чтото забыли - подсказка по ссылке Tags help в разделе templates

Огромная благодароность всем, кто тестировал этот апдейт на своих сайтах. Спасибо ребята

Обсудить...

Обновление от 16.12.2012 (Build: 1.010)

Поддержка IONCUBE
Это альтернатива zend optimizer-у. Для версий php 5.3 и выше будем использовать его. Для более ранних версий php поддержка zend optimizer-а останется еще некоторое время (год минимум). Для того чтобы перевести свои скрипты на "новые рельсы" в настройках достаточно нажать test & migrate to ioncube encode type. Стрим проверит, работает ли ioncube, и накатает новые скрипты.

Ну и разумеется, если админы удумали проапдейтить php, то обязательно перед этим переведите все на ioncube.
Еще раз - php 5.3 и выше поддерживает только ioncube-версию стрима.


Новые тэги
Для темплейтов:
#PAGES_COUNT# - позволяет указывать общее количество страниц доступное для #PAGING_..#
#INCLUDEREALTIME_…# - аналог #INCLUDE_…#, но отрабатывает не во время генерации, а при кажом отображении страницы. Более подробно смотрите ниже в "Производительность".

Для темплейтов и сабтемплейтов:
#PAYSITE_FIELD_1#
#PAYSITE_FIELD_2#
#PAYSITE_FIELD_3#

Выводят содержимое полей field_1, field_2, field_3 из affiliate manager-а.

Только для контентных страниц:
#CONTENT_ADDED# - дата добавления галереи в ротацию
#CONTENT_PUB_DATE# - дата pub_date (указывается при импорте)
#CONTENT_PUB_DATE2# - дата в pub_date в формате Today или NN Days ago или NN months ago или NN years ago
#CONTENT_SE_DESC# - se-friendly description, пример - big-and-natural-boobs
#CONTENT_SE_DESC_XXX# - тоже что и #CONTENT_SE_DESC#, но не более XXX знаков


Автоматический контроль и оповещение об изменении важных параметров
К ним относятся:
- max_heap_table_size в конфигурации mysql;
- целостность структуры базы данных и скриптов (периодически сравнивает с эталоном на сервере стримротатора);
- свободное дисковое пространство.
В случае если что-то не так, вы получаете сообщение на email (пропишите его в настройках).


Производительность
В стриме существует кэш страниц, в котором хранятся сгенерированные ранее куски html. Эти файлы время от времени обновляются, старые удаляются. Когда происходит перегрузка сервера (например при одновременном запросе на создание большого количества страниц), стрим вместо обновления страниц "на лету", начинает подставлять для выдачи старые страницы из кэша. Файлы галерей и вовсе живут не изменяясь столько, сколько живет кэш. По умолчанию длинна жизни кэша равна 2-м дням. Чем больше кэш, тем реже стрим будет обновлять свои галереи, и тем меньше будет пиковая нагрузка на сервер при большом трафике. Поэтому для управления всем вышеперечисленным в настройках появились 2 опции:
cache lifetime days - время жизни кэша
cache max size - максимальный размер кэша

Кэш большого сайта может занять все свободное место, поэтому скрипт ограничивает его размер так, чтобы свободного места было не менее 15%. Смело можно cache max size ставить unlimited ;)

Так как страницы в кэше могут жить долго, а топ лист трейдером может меняться быстро, для темплейтов появился тэг #INCLUDEREALTIME_…#. Это тоже самое что и старый #INCLUDE_…#, только присоединяется содержимое не один раз в момент генерации морды, а каждый раз при показе страницы. Это дает возможность всегда показывать актуальный топ лист трейдеров (например), в не зависимости от времени жизни кэша. Влияния на нагрузку сервера при инклуде статических локальных файлов нет.

Стрми также начал контролировать место при создании бэкапов. Тут скрипт не будет переходить планку 5% свободного места. Поэтому очень рекомендую прописать email в настройках для получения предупреждений в случае невозможности создания бэкапа. (settings: alert when free space < 95%: ON/OFF)


Settings -> required keywords
Перечень слов (через запятую), которые обязательно должны присутствовать либо в деске, либо в инфо. Эта опция необходима для создания нишевых сайтов, когда источником контента служит нечто мультинишевое.
Можно использовать звездочку в конце слова. Это будет означать, что вместо звездочки может присутствовать любое количество букв-цифр.

Пример
Нам необходимо создать матюрный сайт. Прописываем в required keywords:
mom*, mature*
И после этого, чтобы мы не импортировали в стрим (через импорт или через rss), на сайт попадут только гали, содержащие в деске/инфо слова mom, moms, mature, matures, momblablabla и т.д.


Tag*
Точно также звездочку можно использовать в dictionary для формирования тэгов.
Пример.
В WHITE list with synonyms есть строка:
teen*
При разборе на тэги, всем галям с teen, teens, teenager, и т.д. будет присвоен тэг teen.


Все остальное
1. При использовании пагинации (тэг #PAGING_...#) часто необходимо чтобы ссылка на первую страницу не содержала в урле p=1. Для этого ту часть урла, которую нужно прятать, помещаем в {NOT_SHOW_FOR_FIRST_PAGE_...}.

Пример:
<!-- ссылка на первую страницу -->
#PAGING_FIRST_<a href=index.php{NOT_SHOW_FOR_FIRST_PAGE_?p={PAGE}}>first-page</a>#

<!-- ссылка на предыдущую страницу -->
#PAGING_CUR-1_ <a href=index.php{NOT_SHOW_FOR_FIRST_PAGE_?p={PAGE}}>previous-page</a>#

<!-- ссылки на NNN-2, NNN-1, NNN, NNN+1, NNN+2 страницы -->
<!-- ссылки на текущую страницу нет, так как мы и так на ней находимся-->
#PAGING_CUR-2_ <a href=index.php{NOT_SHOW_FOR_FIRST_PAGE_?p={PAGE}}>{PAGE}</a>#
#PAGING_CUR-1_ <a href=index.php{NOT_SHOW_FOR_FIRST_PAGE_?p={PAGE}}>{PAGE}</a>#
#PAGING_CUR_ {PAGE}#
#PAGING_CUR+1_ <a href=index.php?p={PAGE}>{PAGE}</a>#
#PAGING_CUR+2_ <a href=index.php?p={PAGE}>{PAGE}</a>#

<!-- ссылка на следующую страницу -->
#PAGING_CUR+1_ <a href=index.php?p={PAGE}>next-page</a>#

<!-- ссылка на последнюю страницу -->
#PAGING_LAST_ <a href=index.php?p={PAGE}>last-page</a>#


2. Settings -> rss grab frequency - частота опроса rss-ов.


3. Для rss-а в экспорте теперь можно указать какие именно удаленные галереи в него должны попадать - все или все, кроме удаленных "по лимиту". Напомню, что лимит на максимально количество отротированных галерей можно указать как для ротатора, так и для платника.

Уточнение. В рсс удаленных галь попадают только гали, удаленные из stats. Удаленные при ошибке грабера, или удаленные из граблиста - не попадают.


4. В экспорте и в рсс-ах можно отдавать как внешние, так и локальные url-ы галерей

Обсудить...


Обновление от 27.03.2012 (Build: 1.009)

Пагинация

#PAGING_…# - тэг служит для создания блока навигации (далее пагинация) по страницам (выглядит примерно так - << … 15 16 17 18 19 … >>).

Тэг достаточно гибкий, для того чтобы вывести пагинатор практически любой сложности, это плюс. Минус - прийдется немного поднапрячь серое вещество )
Напомню, что вывод страниц в стриме осуществляется с помощью параметра p=.
domain.com/index.php?p=1 - первая страница
domain.com/index.php?p=2 - вторая
и т.д.

Один тэг #PAGING_…# выводит одну ссылку на страницу. Поэтому для того чтобы в блоке пагинации были ссылки на предыдущую, последующую, первую, последнюю и т.д. нужно использовать несколько тэгов.

Примеры.
1. ссылка на первую страницу - #PAGING_FIRST_....#
.... - тут мы прописываем, как будет выглядеть html ссылки. Например, #PAGING_FIRST_<a href=index.php?p={PAGE}>first-page</a>#
{PAGE} - при формировании морды стрим поменяет это на номер страницы, которую обрабатывает сейчас тэг #PAGING_....# в нашем случае это будет 1.
Для ссылки на вторую страницу, используем #PAGING_FIRST+1_....#. Для третьей - #PAGING_FIRST+2_....# и т.д.
#PAGING_FIRST_....# при выводе первой страницы тэг игнорируется и не выводит ничего.
2. ссылка на последнюю страницу - #PAGING_LAST_....#
Например, #PAGING_LAST_<a href=index.php?p={PAGE}>last-page</a>#
Стрим подсчитает количество страниц, для которых будет контент, и поменяет {PAGE} на это число.
Для вывода ссылки на предпоследнюю страницу, используем #PAGING_LAST-1_....#. Для пред-пред-последней - #PAGING_LAST-2_....# и т.д.
#PAGING_LAST_....# не выводит ничего, если мы запрашиваем последнюю страницу.

3. ссылка на предыдущую и последующие страницы - #PAGING_CUR_....#
для предыдущей страницы - #PAGING_CUR-1_....#
для следующей #PAGING_CUR+1_....#
для текущей - #PAGING_CUR_....#

4. Теперь пример целого блока.
Задача следующая - нужно иметь ссылку на первую страницу, последнюю, а также на ближайшие 2 предыдущие и последующие страницы. Чтобы результат при запросе 10-ой страницы выглядел так:
first-page previous-page 9 10 11 12 13 next-page last-page

Наш блок пагинации:
[code]<!-- ссылка на первую страницу -->
#PAGING_FIRST_<a href=index.php?p={PAGE}>first-page</a>#

<!-- ссылка на предыдущую страницу -->
#PAGING_CUR-1_ <a href=index.php?p={PAGE}>previous-page</a>#

<!-- ссылки на NNN-2, NNN-1, NNN, NNN+1, NNN+2 страницы -->
<!-- ссылки на текущую страницу нет, так как мы и так на ней находимся-->
#PAGING_CUR-2_ <a href=index.php?p={PAGE}>{PAGE}</a>#
#PAGING_CUR-1_ <a href=index.php?p={PAGE}>{PAGE}</a>#
#PAGING_CUR_ {PAGE}#
#PAGING_CUR+1_ <a href=index.php?p={PAGE}>{PAGE}</a>#
#PAGING_CUR+2_ <a href=index.php?p={PAGE}>{PAGE}</a>#

<!-- ссылка на следующую страницу -->
#PAGING_CUR+1_ <a href=index.php?p={PAGE}>next-page</a>#

<!-- ссылка на последнюю страницу -->
#PAGING_LAST_ <a href=index.php?p={PAGE}>last-page</a>#[/code]

5. Как сделать пагинацию на странице с результатами поиска (index.php?search=keyword)
С помощью {SEARCH}.
Пример - #PAGING_FIRST_<a href=index.php?p={PAGE}&search={SEARCH}>first-page</a>#

6. Пагинация на странице, которая выводит гали по тэгу (index.php?tag=sometag).
С помощью {TAG}.
Пример - #PAGING_LAST_<a href=index.php?p={PAGE}&tag={TAG}>last-page</a>#

7. Пагинация на странице, которая выводит гали определенного ротатора (index.php?sub=rotator).
С помощью {SUB}.
Пример - #PAGING_LAST_<a href=index.php?p={PAGE}&sub={SUB}>last-page</a>#

8. Пагинация на странице, которая выводит гали определенного платника (index.php?site=....).
С помощью {SITE}.
Пример - #PAGING_LAST_<a href=index.php?p={PAGE}&site={SITE}>last-page</a>#

Подытожим.
Варианты #PAGING_....#:
#PAGING_FIRST_....# - первая страница
#PAGING_CUR_....# - текущая страница
#PAGING_LAST_....# - последняя страница

c FIRST, CUR, LAST можно использовать "+" или "-". Например
#PAGING_FIRST+1_....# - вторая страница
#PAGING_CUR-1_....# - предыдущая страница
#PAGING_CUR+1_....# - следующая страница
#PAGING_LAST-1_....# - предпоследняя страница

вместо … подставляем html, в нем можно использовать {PAGE}, {SEARCH}, {TAG}, {SUB}, {SITE}


Внутренние галерери
Чего нам не хватало для создания тюба? Своих галерей с embed-ами. Теперь они в стриме есть.

Новое поле при импорте - content (текстовое, 65535 символа).
Используется оно для создания локальных (на домене сайта) галерей. Сделайте для этого отдельную морду, пропишите в темплейт (НЕ субтемлейт!) в нужном месте тэг #CONTENT#, и при вызове этой морды укажите в url-е параметр content=NNN, где NNN - id галереи. В нужном месте появиться то, что вы импортировали ранее в content.

Url-ы внутренних галерей не нужно импортировать. Они генерируются автоматически. Импортируйте несколько галерей с контентом в стрим.
Сделайте в корне домена файлик mygallery.php с инклудом вашей галерейной морды.
И пропишите в настройках в local url template: /mygallery.php?content=#GALLERY_ID#
Теперь зайдите в stats. Под url-ом, с которым вы импортировали галерею появиться еще один url на желтом фоне - это ссылка на внутреннюю галерею, с вашим content.

Чтобы стрим на морде показывал урлы внутренних галерей, в настройках в content gallery url укажите local url. Хотите чтобы ссылки вели на тюб - gallery url. В любой момент можно изменить концепцию сайта из безконтентного на контентный и наоборот. Более того, для этого не нужно импортировать заново галереи, если они у вас в стриме уже есть. Достаточно при импорте указать url и content, и стрим добавит content в уже существующую галю.

И это еще не все. Content передается через механизм rss импорта/экспорта.

Не забыл я также про related галереи на вашей страничке с embed-ом. Вставьте как обычно несколько галерей в темплейт, в url-е укажите параметр csearch (без значения, например так mygallery.php?csearch&content=#GALLERY_ID#) и стрим подберет релевантные результаты. Которые по этой самое релевантности можно и отсортировать (sort by: relevance) в темлейте. Можно добавить и комборотаторы. Релевантность и сортировка на них не действует, они выводятся все, с сортировкой по популярности.

Все остальное.
Импортировать гали с контеном можно без урла, но с тумбами. Разумеется использовать такую галю в будущем можно будет только как внутреннюю.

Кроме #CONTENT# на своих галереях можно использовать следующие тэги:
#CONTENT_DESC# - деск
#CONTENT_DESC_XXX# - деск (длинна XXX)
#CONTENT_DURATION# - продолжительность мувика
#CONTENT_INFO# - инфо
#CONTENT_INFO_XXX# - инфо (длинна XXX)
#CONTENT_PAYSITE# - платник
#CONTENT_PAYSITE_FIELD_1#, #CONTENT_PAYSITE_FIELD_2#, #CONTENT_PAYSITE_FIELD_3# - новые атрибуты для платников (редактируются в affilate maneger, длинна до 65535 символов). Можно использовать для "индивидуализации" галерей разных спонсоров - выводить баннеры, реф-ссылки и т.д.
#CONTENT_SIZED_XXX# - см. ниже
#CONTENT_SIZED_XXX_YYY# - см. ниже
#CONTENT_SPONSOR# - спонсор
#CONTENT_TAGLIST_XXX# и #CONTENT_TAGLIST2_NNN_XXX# - аналоги #TAGLIST_XXX# и #TAGLIST2_NNN_XXX# но для галерейных морд
#CONTENT_THUMB# - лучшая тумба галереи, используются для контентных страниц. Тэг необходим в случае использования своего плеера, для показа изображения перед проигрыванием видео.
Напомню, что все вышеперечисленные тэги выводят атрибуты для галереи, запрашиваемой в запросе content=

Для #CONTENT_SIZED_...# нужны пояснения. Если мы используем поле content для хранения embed кодов, то в общем случае размеры (ширина/высота) могут быть какими угодно. Для того чтобы наши embed-ы были стандартного размера и вписывались в дизайн, нужен тэг #CONTENT_SIZED_XXX_YYY#. Он подменит при выдаче ширину и высоту embed-а на XXX и YYY. Если воспользоваться вариантом #CONTENT_SIZED_XXX#, то высота измениться пропорционально изменению ширины.

Урл, который будет показывать стрим для "контентных" галерей зависит от настроек в CONTENT GALLERIES SETTINGS. Но если вы хотите явно указать внеший или локальный урл используйте тэги #GAL_EXTERNAL_URL# и #GAL_LOCAL_URL# соответственно.

Список тэгов, которые можно использовать для local url template (на его основе стрим формирует урлы внутренних галерей):
#GALLERY_ID#
#SE_DESC#
#SE_DESC_XXX# (длинна XXX)
#SPONSOR#
#PAYSITE#

Если есть запрос котнетной гали (?content=NNNN) а такой гали нет, то можно показать "заглушку" - морду, на которой написать что-то вроде "этого нет, но есть такой же, но с перламутровыми пуговицами". Вставьте это перед инклудом стрима:
$_GET['altfacename']='mygallery.empty';
, где 'mygallery.empty' - имя "темплейта-заглушки".


Изменения в RSS
Модифицирован механизм rss импорта/экспорта.
Теперь между стримами можно "трансферить" неограниченное количество галь. например миллион.
Если rss большой, он разбивается на фрагменты по 500 галерей, и тянется поэтапно. Состояние загрузки таких разделенных на кусочки rss-ов можно отследить в grablist. там же можно их и "прибить".
Через рсс можно передавать удаленные гали. удаляете галерею со стрима-донора, галя удаляется с дочерних. В разделе export/rss укажите какие гали нужно "пихать" в рсс - active / deleted / all. Также маленькое изменение работы удаления. Через интерфейс галя помечается как "marked for deletion" (становиться темно серой) и фактически удаляется кроном.


Другие новые тэги для темплейта
#GALS_COUNT# - количество галерей, удовлетворяющих условиям данной морды. Проще говоря - сколько галерей в нише (для нишевой страницы) или количество галь в результате поиска (для поиска).
#INFO_XXX# - тоже самое что и #INFO# но не длиннее XXX символов
#GAL_ID# - тэг для сабтемплейта, показывает id галереи


Маска по имени ротатора при создании комбо
При создании комборотатора часто необходимо указать какие именно ротаторы должны быть в комбо, а какие нет.
Для этого можно использовать поле mask в форме создания/редактирования комбо.

Правила для фильтра просты:
rotator1 - в комбо попадают только гали из rotator1
rotator* - в комбо попадают только гали из ротаторов, имя которых начинается на "rotator"
*rotator - в комбо попадают только гали из ротаторов, имя которых заканчивается на "rotator"
*rotator* - в комбо попадают только гали из ротаторов, имя которых содержит "rotator"

Перед фильтром можно указать восклицательный знак:
!rotator1 - гали из всех ротаторов кроме rotator1
!rotator* - гали из ротаторов которые в начале имени не содержат "rotator"
и т.д.

кроме того, фильтров может быть несколько, их можно перечислить через запятую. Например:
*hd*,!*rotator* - в комбо попадут ротаторы в имени которых есть "hd" и нет "rotator"


Остальное
Новый тип сортировки - relevance (only for search!). Как понятно из названия, уместно его использовать на страницах с результатами поиска.
Усовершенствован поиск.
exact (default) - в деске должны присутствовать все слова запрашиваемого выражения.
normal - хотя бы одно слово
Обратите внимание, что поисковый механизм игнорирует слова длинной менее 4-х символов. Хотите искать более короткие слова - попросите админов уменьшить ft_min_word_len в конфиге mysql, и перестроить fulltext index для таблицы gallery_plus.

Если грабер не смог ничего сграбить своими стандартными методами, он попытается вытянуть все jpg-файлы. Это означает, что для стрима теперь "по зубам" большинство спонсорских "flv" галерей.

При создании комбо ротатора стрим расставляет тумбы согласно популярности тэга (ротатора, кейворда, платника). Далее ротация тумб комборотатора происходит обычным образом.

Как известно, при выборе лучшей тумбы галереи, каждая тумба должна набрать 500 (new thumbs lifetime, значение по умолчанию) показов. После этого в стриме остается 1 лучшая. На этом тестирование заканчивалось. Теперь отобранная лучшая тумба будет "дотестироваться", пока не наберет 1000 (new thumbs lifetime * 2) показов. Сделано это для более точной оценки популярности тумб, "малой кровью".

Тэг #ROTATOR_NAME# теперь можно использовать и в теплейте. если вы запрашиваете в параметрах sub=rotator_name, то #ROTATOR_NAME# отобразит этот самый rotator_name. Если токого ротатора нет, или если вы вызываете указываете ротатор для какого-то одного субтемплейта (например sub=1:rotator_name), то #ROTATOR_NAME# ничего не отобразит

При создании бакапа или при восстановлении из бакапа админка стрима блокируется с таким вот сообщением:
admin zone locked - backup (or backup restore) proceed, please wait.
auto-refresh every 5s…

Не пугайтесь

Обсудить...


Обновление от 12.04.2011 (Build: 1.008)

Тэги.
Галерея может иметь несколько тэгов. Тэги создаются автоматически из descriptions или info (или из того и другого). Или вообще не создаются.
В настройках для этого есть раздел - TAGS SETTINGS. Там указывается из чего создавать тэги - description и (или) info. Тэги создаются в момент импорта галереи. Предложения разбиваются на слова (или словосочетания), каждое слово - это тэг. Кнопки "build now" позволяют создать тэги для уже существующих галерей. Для того чтобы стрим при построении морд использовал тэги, они должны быть проапрувлены (раздел меню tags).

Существует возможность вести белый и черный список тэгов, а также базу синонимов (разделы меню tags/dictionary). Если при разборе descriptions или info на тэги, стрим находит тэг из белого списка, то он будет заапрувлен автоматически. Если в черном списке, то проигнорирован. Остальные слова будут станут незаапрувленными тэгами. Формат белого и черного списка (dictionary) - по 1 тэгу на каждую строчку. Через | можно указывать синонимы. Пример:
tag1 | synonym1_for_tag1 | synonym2_for_tag1 | synonym3_for_tag1
tag2 | synonym1_for_tag2 | synonym2_for_tag2 | synonym3_for_tag2
tag3
tag4


Если в разбираемом словосочетании присутствует synonym1_for_tag1, этой галерее присваивается тэг tag1

Во время редактировании тэгов:
- при изменении названия тэгов, создается пара слов синонимов;
- при удалении тэга, он заносится в черный список;
- при одобрении (апруве) тэга, он заносится в белый список.

При параметре SETTING->use whitelst only выставленном в yes, тэги будут формироваться только из выражений из whitelist-а (не будет кучи незаапрувленного мусора)

Для того, чтобы вывести на морду галереи, содержащие какой-то определенный тэг, используйте tag=название_тэга в параметрах url-а.
Например: index.php?tag=amateur

Возможен вывод тэгов определенной гали. Для этого добавлен новый тэг для субтемплейта:
#TAGLIST_…#
Там где стоят точки, должен быть html, который будет показан для каждого тэга. Для того чтобы подставить имя тэга, нужно написать {TAG}

Примерно так:
#TAGLIST_<a href="страничка.php?tag={TAG}">{TAG}</a> #
Допустим есть галерея, с 2 тэгами erotic и strip.
Приведенный выше пример куска субтемлейта сформирует вот что:
<a href="страничка.php?tag=erotic">erotic</a> <a href="страничка.php?tag=strip">strip</a> 

#TAGLIST2_NNN_XXX# - то же что и #TAGLIST_XXX#, но не более NNN тэгов


Combo ротаторы.
Эта штука нужна для таких вещей как - создание главных морд, на которых присутствует по 1 лучшей тумбе для каждой ниши.
Стрим формирует ротатор, в который попадает топовые тумбы от каждой категории. Этот ротатор (далее - combo-ротатор) можно использовать как и все остальные на морде, он как и обычный ротатор считает статистику и ротирует тумбы. Combo-ротаторы формируются заново каждые 6 часов.
Название категории из которой берутся тумбы (имя ротатора например) прописываются в description. Соответственно #DESC# можно использовать для вывода названия ниши.

Создаются они через нижнюю таблицу в меню rotators. Подробнее про нее:
name - имя combo-ротатора
type - что будет добавляться в combo-ротатор
- rotators - лучшие тумбы каждого ротатора
- tags - … тэга
- searches - … поискового запроса. (Если на сайте есть поисковые запросы, они логируются стримом)
- paysites - … платника
galleries type - тип галь, которые будут попадать в combo-ротатор (images/descs)
thumbs format - ротаторы какого типоразмера будут попадать в combo-ротатор
minimum amount - минимум галерей, которые должен иметь ротатор (тэг, поисковый запрос, платник) для попадания в combo-ротатор. Сделано это для того чтобы ограничить количество ниш разумными пределами
thumbs per gallery - сколько тумб должно быть у каждой гали combo-ротатора
galleries - количество галерей в combo. Формирование combo-ротатора может занимать некоторое время, поэтому стрим ограничивает количество галерей в ротаторе необходимым для заполнения всех позиций в темплейте. Если в темплейтах combo-ротатор не используется, стрим возьмет максимум 50 галерей
last update - время последнего формирования
regenerate now - поставьте тут галочку, если желаете перестроить combo-ротатор немедленно

Ну и новый тэг темплейта для этого дела - #COMBO_GALLERIES_CNT#


Анимированные тумбы.
На морде стрим отображает лучшую тумбу галереи, при наведении мышкой будут крутиться остальные тумбы этой же гали. Соответственно keep thumbs for gallery должно быть >1. В случае комбо ротатора, thumbs per gallery > 1
Второе - в html нужно добавить js скрипт, который находится тут streamrotator/js/stream.js
Пример:
<script type="text/javascript" src="http://domain.com/streamrotator/js/stream.js"></script>
Третье - сабтемплейт. Тумба должна выглядеть так:
<img src='#THUMB#' id=#LINK_ID# onmouseover="rstart(this,#THUMBS_LIST#)" onmouseout="rstop(this)">


Новые опции в SETTINGS.
blacklist Слова (через запятую), которых не должно быть в урл-е, desc-е и поле info.

skimming type: uniques или raw - "скимить" (SKIMMING SETTINGS) уники или равы;
В skimming urls можно использовать [GAL] для динамического exout-а;

search type. Exact - точный поиск (если ищут bus, то в выдаче не будет busty ), normal - старый вариант (оставлен для совместимости).
Внимание! По умолчанию search type = exact , т.е. после апдейта страницы сформированные с использованием поиска будут выглядеть по другому, если нужен старый вариант - ставьте normal;

Бонус к ранку для новых тумб.
За это отвечают 2 параметра:
new thumbs bonus days - сколько дней будет действовать бонус
new thumbs bonus percents - величина бонуса в %
Например, при new thumbs bonus days=7, new thumbs bonus percents=50% тумба имеющая ранк=1, в течении первой недели жизни гали с учетом бонуса будет иметь ранк 1.5
В связи с этим немного поменялся смысл added_date галереи. теперь это не время добавления гали в стрм, а дата добавления в ротацию самой последней тумбы этой гали. Это позволить корректно отслеживать время, которое тумба рокируется
Галереи с бонусом будет иметь *** возле циферки ранка

template changes apply: immediately / normal
Нужно ли перерисовывать морду сразу при сохранении темлейта, или можно это сделать позже, когда она состарится и стрим будет ее перерисовывать согласно своему расписанию
Для сайт с большим количеством страниц очень рекомендую использовать normal
Redraw all faces в templates- удаляет кеш независимо от этой опции.


Новые тэги для темплейтов.
#SPONSOR# - имя спонсора галереи из affiliate manager
#PAYSITE# - соответственно имя платника
#TAG# - выводит то что мы запрашиваем через урл в конструкции tag=название_тэга. Если тэга с именем "название_тэга" не существует, или он не заапрувлен, выводится пробел.


Все остальное кратко.
Страницы. Теперь страницы нужно делать с использованием параметра "p" в урле. Нумерация начинается с 1. Старый параметр "page" для страниц работал не очень правильно, он оставлен для совместимости. Настоятельно рекомендую в будущем использовать только "p".
пример: index.php?p=1

Сортировка по продолжительности мувика (для сиджетюбов). Тип сортировки указывается в темплейте.
Важно - если галереи были добавлены до апдейта, нужно выполнить script state, первые 2 шага, для того чтобы стрим откорректировал базу. Процедура разовая.

Вывод галерей одного определенного платника. используется site=ИмяПлатника
например index.php?site=PaySite

Изменился смысл правила для скиминга:
5*50% - начиная с 5-го клика слать 50% (было - 5-ой по счету клик, далее с вероятностью 50% )

В экспорте все поля, что и в импорте.

Обсудить...

Обновление от 03.02.2010 (Build: 1.007)

Про просьбам телезрителей добавил новый тэг #SE_DESC_XXX# и подкрутил кое-что по мелочам.
Удачного вам дня ;)

Обсудить...

Обновление от 02.02.2010 (Build: 1.006)

Даже не вериться что со времени прошлого апдейта прошло столько времени. Но ожидание было не напрасным. Поехали!

Апдейт носит тематический характер. Заточен он под так называемые "сидже-тюбы". Очень кратко о нововведениях:
- длина ролика, дата его добавления на тюб, дополнительное текстовое поле;
- куча новых полезных тэгов для темплейтов;
- se-friendly ссылки;
- возможность создавать на основе одного темплейта неограниченное количество нишевых страниц;
- поиск;
- возможность импортировать ВСЮ информацию о галереях через rss включая тумбы;
- возможность СОЗДАВАТЬ rss со ВСЕЙ информацией о галях для последующего; автоматического импорта в другие стримы;
- 3 режима ротации (auto, fast start, low load);
- индивидуальный new thumb percent для каждой морды;
- вывод на морду галерей отсортированных по дате добавления;
- слив трафика на трафик-брокеры;
- традиционное исправление старых, и внедрение новых косяков

А теперь обо всем этом более подробно.

Новые поля в импорте:
pub_date - дата буликации ролика на тюбе (или откуда он там). Если при импорте не указано, то полю присваивается дата импорта в стрим
duration - продолжительность ролика. Можно задавать в произвольном формате, главное чтобы между цифрами часов, минут, секунд был какой то не цифровой разделитель. Часы и минуты можно не вводить. В простейшем случае импортировать можно просто одно число, которое будет означать продолжительность ролика в секундах. Выводится продолжительность ролика на морде будет в виде часы:минуты:секунды. Если ролик меньше часа, то количество часов не выводиться. Формат вывода не зависит от того, как вы импортировали duration
info - произвольное текстовое поле, длинной до 250 символов. Реально нужно учитывать что некоторые символы преобразуются перед сохранением в html-мнемоники (например символ & преобразуется в &amp; и т.д.), поэтому 250 символом сохранить в info скорее всего не получится.

Новые тэги для субтемплейтов:
#PUB_DATE# - выводит то, что мы импортировали в поле pub_date
#PUB_DATE2# - выводит pub_date в одном из видов Today, N days ago, N months ago
#DURATION# - то что мы импортировали в поле duration
#INFO# - то что мы импортировали в поле info
#ROTATOR_NAME# - имя ротатора
#ROTATOR_GALS_COUNT# - количество галь в ротаторе (не в стриме в целом, а в том для которого субтемплейт)
#ENCODED_POS# - альтернатива тэгу #POS#, работает точно также, выглядит по другому
#SE_DESC# - выводит описание галеры в виде, который можно использовать для формирования урлов типа domain.com/video/big-and-natural-boobs.html. Вот тут "big-and-natural-boobs" - это вывод тэга #SE_DESC#. Для чего это нужно, будет сказано чуть ниже.
#SEARCH# - значение поисковой фразы. См. ниже

SE-friendly линки.
Есть такая замечательная вещь как mod_rewrite. Вкратце, эта штука позволяет web-серверу обрабатывать url скриптом, который лежит совершенно не там где он казалось бы должен быть. Например, в строке браузера у нас адрес
http://domain.com/gallery/12345/bla-bla-bla.html
Обрабатывать же этот запрос может скрипт
http://domain.com/gallery.php?12345
И догадаться о такой подмене браузер не сможет. Настроить правила для "подмены" можно как угодно, делается это через .htaccess. За более подробной информацией читателям сего придется обратится к гуглю.
Как это выглядит в реалиях нашего ротатора. В субтемплейте вместо стандартных ссылок пропишем так:
video/#SE_DESC#/?#ENCODED_POS#
на морде эта ссылка будет выглядеть примерно так:
http://domain.com/video/two-young-shemales/?MTUzLjAuMy4zNDAyMDQuMzUxMTMz0
где
two-young-shemales - это результат обработки тэга #SE_DESC#. Тэг преобразует наш description к виду, в котором его можно использовать в урле. Если desc-а к галерее нет, будет подставлено слово content.
MTUzLjAuMy4zNDAyMDQuMzUxMTMz0 - результат обработки тэга #ENCODED_POS#. Это тотже самый #POS# только в более загадочном виде
Итак, урл ссылки мы зашифровали, теперь осталось сделать чтобы клики по этим ссылкам работали как надо. Здесь нам и пригодиться mod_rewrite.
В файлике .htaccess в корне домена (не стрима!) прописываем следующее:

RewriteEngine On
RewriteRule ^video/[-0-9a-z]*/(.*)$ директория_стрима/out.php?l=%{QUERY_STRING}&u=../аут_cj_скрипта_бла_бла_бла?урл_галереи=[GAL] [L]

аут_cj_скрипта_бла_бла_бла?урл_галереи
- как и что тут писать смотрите в мануале вашего cj-скрипта.
[GAL] - вместо этого стрим подставит урл галереи.
Для скриптов на php (протон, прогрес, ats, кристал и т.д.) вместо [GAL] используейте [GAL_PHP]

Собственно все. Разумеется вместо video можно использовать другое слово, да и вид ссылок можно сделать другим, но для этого понадобяться некоторые познания по mod_rewrite. Заинтересованным могу посответовать почитать это
При экспериментах хочу посоветовать играться с 1 какой-то ссылкой на сайте а не на всех сразу. Когда ссылка будет в приемлемом виде, когда клики будут нормально редиректится, тогда можно менять все остальные ссылки.
Да! Eсли есть умники которые используют голый nginx, и никакого mod_rewrite в .htaccess-е он не поддерживает, то эта ссылка для них ;)

Возможность создавать на основе одного темплейта неограниченное количество нишевых страниц.
В новой версии появилось несколько чудных параметров, при добавлении которых в урл, происходят различные приятности. Первый из них - sub.
Допустим у нас в стриме есть ротаторы с именами nich1, niche2, niche3. Морда выводится при запросе index.php. Добавляем наш параметр sub:
index.php?sub=niche1 - получаем на выходе морду, на которой присутствуют только галереи из ротатора niche1. Несмотря на то, что для субтемплейта(субтемплейтов) выбраны совершенно другие ротаторы.
index.php?sub=niche2 - галере тольео из niche2. И так далее. И все это на одном единственном темплейте.
Усложняем задачу. Представим что морда состоит из 2-х блоков тумб (2-х субтемплейтов). В верхнем блоке - галереи из niche1, в нижем - микс из всех ротаторов. Морда выводится при запросе index2.php. Поехали экспериментировать:
index2.php?sub=niche1 - во всех блоках галереи только из ротатора niche1.
index2.php?sub=1:niche2 - в верхнем блоке (субтемплейт 1) галереи из niche2, в нижнем - микс.
index2.php?sub=1:niche2|2:niche3 - в верхнем блоке (субтемплейт 1) галереи из niche2, в нижнем (субтемплейт 2) - гали ротатора niche3.

Подытожу:
sub=rotator_name - на ВСЕЙ морде будут галереи ротатора rotator_name;
sub=N:rotator_name - изменения будут только для 1-го субтемплейта;
sub=N1:rotator_name|N2:rotator_name2 - тоже самое, только для нескольких ротаторов.
Вместо имени ротатора можно указать его номер (колонка id в разделе rotators).

Поиск.
Чудный параметр номер 2 - search
Пример использования:
index.php?search=babes
по данному запросу стрим сгенерирует страничку из галерей, в description которых есть слово babes. Все очень просто. Пробел в запросах заменяйте на %20 или +
index.php?search=busty%20babes - вот так. В этом случае показаны будут галереи содержащие в desc-е 2 этих слова.

Предвидя вопрос о нагрузке, отвечаю - при генерации страниц с использованием параметров sub и search, скрипт кеширует эти странички и при следующем запросе выдает ранее сгенерированный html без каких либо ресурсоемких манипуляций. Проверено электроникой.

Страницы.
Для формирования страниц есть параметр page.
index.php?page=0 - страница с лучшими по популярности тумбами;
index.php?page=1 - следующий набор тумб;
index.php?page=2 - следующий;
и т.д.
При использовании параметра page показ неуникальным посетителям других тумб разумеется не действует.

Внимание важно!. Для того чтобы параметры sub,search,page работали с файлами shtml, инклуд стрима должен выглядеть так:
<!--#include virtual="__директория_стримротатора__/in.php?$QUERY_STRING"-->
Для случая когда указано название темплейта:
<!--#include virtual="__директория_стримротатора__/in.php?facename=__имя_темплейта__&$QUERY_STRING"-->

Rss-экспорт (пункт меню • export/rss •)
Тут мы можем создавать rss-фиды, в которых будет содержаться практически полная информация по галереям, удовлетворяющим заданным условиям. Их url-ы можно вставить в affiliate manager других стримов. Таким образом мы получаем схему, когда в одном скрипте производиться импорт, грабинг, отбор готовых тумб, и далее все это автоматически расходиться по неограниченному количеству дочерних стримов. Через rss передается url галереи, description, тумбы, названия спонсора и платника, название ротатора, а также поля: info, duration, pub_date. В rss попадают полностью сграбленные галереи. То что попадало в rss-ленту отслеживается, дублирования информации не происходит. Rss-ы генерируются раз в 24 часа. Максимальное количество галерей - 1000.

Форма добавления rss-ов в affiliate manager-е претерпеле некоторые изменения.
1. Если мы пропишем новый url в строчку none (не привязываем к какому либо спонсору/платнику), то при импорте rss-ов стрим будет самостоятельно создавать спонсора и платник в affiliate maneger-е беря информацию из рассылки.
2. В affiliate manager-е при добавлении нового урла rss добавлен выбор источника тумб (thumbs source). Если вы хотите чтобы тумбы брались непосредственно из rss ленты, укажите thumbs source: rss.
3. При выборе ротатора, куда будет происходить импорт, можно выбрать пункт -- auto (from rss) --. Это будет означать что ротатор будет создан автоматически.
4. При нажатии кнопки grab now, для rss-а, сгенериованного другим стримом, появиться небольшой диалог с выбором что и как необходимо грабить. Standart grab - грабить то что есть в rss ленте сейчас. Или advanced grab - грабить N-ое количество галерей, упорядоченных либо по популярности (top), либо по свежести (latest). В этом случае стримротатор-источник сгененирует по запросу rss ленту, с необходимой информацией. Хочу обратить внимание что при данной операции проверка на вхождение галерей в более ранние rss-ленты производиться не будет. Advanced grab будет полезен при запуске новых сайтов, когда нужно вытянуть уже отротированные галереи с других стримов.

3 режима ротации (settings->rotator mode):
- auto. Клсассический, немного подшлифованный режим;
- fast start. Предназначается для более динамичного тестирования тумб. Полезен на начальных этапах жизни сайта. В отличие от auto, в качестве основных могут использоваться тумбы, не набравшие показов, но имеющие хороший rank. На сайтах с устоявшейся продой режим может привести к ее колебаниям;
- low load. Аналогичен режиму auto, за исключением того, что морды будут реже перерисовываться, что приведет к понижению нагрузки на сервер.

Templates.
Для каждой морды возможен выбор индивидуального new thumbs percent (% тестируемых тумб на морде). Если указать значение default, то при генерации морд будет использован new thumbs percent из настроек. Также для каждой морды можно выбрать способ сортировки тумб:
- rank. То что мы видим в статистике при sort by: show order;
- added. В порядке убывания даты добавления галереи в стрим. Пригодиться для архивов.
Подсказка по тэгам перекочевала в окошко, открываемое ссылочкой Tags help.

Слив трафика на трафик-брокеры.
В настройках 2 новых поля - skimming rules и skimming urls.
skimming urls - один или несколько url-ов, на которые вы собираетесь отсылать траффик. Если урлов несколько, каждый должен быть в новой строке.
skimming rules - правила отсылки кликов на skimming urls. Боюсь что формально описать орфографию составления правил будет проблематично, поэтому объясню на примерах. Начнем с простого. Допустим в skimming urls прописан 1 урл. Расшифруем, какие клики посетителя будут отправлены на продажу, при следующих записях в skimming rules:
5 - 5-ый по счету клик посетителя.
20% - 20% кликов
*5 - каждый 5-ый клик, т.е. 5-ый, 10-ый, 15-ый и т.д.
6*2 - сначала 6-ой по счету клик, а далее каждый второй. Т.е. Клики 6,8,10,12,14 и так далее
6*50% - 6-ой по счету клик, далее с вероятностью 50%

Правил может быть несклько. В этом случае они разделяются запятыми. Например:
5,10,15*2
на человеческом языке означает - 5-ый, 10-ый, 15-ый клики, и далее каждый второй (17-ый, 19-ый и т.д.)

Продолжаем. Если в skimming urls несколько записей, на какой из них уйдет клик при срабатывании правила? На случайный!
Но если в конце правила добавить
:N
это будет означать что клик пойдет на N-ый по счету урл.

Для разминки продемонстрирую как может выглядеть запущееный случай.
В skimming urls прописано:
url1
url2
url3
в skimming rules: 5:3,8:1,10*100%:2
Постарайтесь разобраться самостоятельно? Надеюсь получится :)
Если нет - то этот набор правил означает что:
5:3 - пятый клик уйдет на url3
8:1 - восьмой на url1
10*100%:2 - все клики начиная с 10-го на url2

Выражение прописанное в skimming rules действуют для всех ссылок всех морд. Альтернативной формой задания правил является параметр s в url-е аута стрима. Предыдущий пример можно было бы прописать в ссылках так:
streamrotator/out.php?u=#POS#&s=5:3,8:1,10*100%:2&u=....
Параметр s должен быть всегда перед u=
Правила прописанные в ссылках имеют приоритет перед заданными в skimming rules в админке.

Вот и все. Несмотря на то, что правила позволяют реализовать скимминг очень гибко, в подавляющем большинстве случаев достаточно будет применения простейших вариантов ;)

Обсудить...

Обновление от 12.06.2009 (Build: 1.005)

Исправлена ошибка при обработке лимитов для тумб/галерей.

Обсудить...

Обновление от 05.06.2009 (Build: 1.004)

1. Возможность оставлять после теста более 1-ой тумбы для галереи. Settings->keep thumbs for gallery. Такие галереи в stats будут подсвечены фиолетовым цветом. Хочу напомнить также, что для того чтобы стрим на морде мог разместить больше 1 тумбы одной галерии, нужно выставить Settings->show galleries with same url: ON. Для еще не оттестированных тумб эта настройка недействительна - тестироваться на морде будет только 1 одновременно.

2. Изменен алгоритм тестирования - стрим будет стараться избежать ситуации когда лучшая тумба гали имеет огромное количество показов, а другая с большим rank-ом, но неоттестированная - очень мало.

3. Лимиты на максимальное количество тумб для ротатора/платника. Поле limit в rotators и affiliate manager. Каждые 6 часов скрипт удаляет худшие по rank-у тумбы. Напомню, что при keep thumbs for gallery неравным единице, для галереи может оставаться более чем 1 тумбы - имейте это ввиду, при limit=100 стрим оставит 100 тумб, но галерей может быть меньше.

4. Возможность автоматически чистить grablist от галерей со статусом error или warning. Для этого выставьте Setting->cleaning grablist: auto

Обсудить...

Обновление от 18.04.2009 (Build: 1.003)

1. Убраны некоторые недочеты в процедуре выбора галерей для перевода в "розовый" статус.
2. Косметические исправления в админке.

Обсудить...

Обновление от 16.04.2009 (Build: 1.002)

1.Изменен принцип расчета популярности тумбы. Теперь учитывается не только где тумба была кликнута, но и где она показывалась.
2.Граббинг. Если Вы импортируете несколько галерей с одним урлом в разные ротаторы (внутри одного стрима), то граббиться контент по этому урл-у только 1 раз для всех галь. С кропом аналогично, при условии что кроппрофайлы и размер ротаторов совпадают. Для чего это нужно - читайте ниже.

Обсудить...

Также хотелось бы рассказать о предстоящих апдейтах.

1.Несколько тумб для одной гали. Пока сам не займешься узкой нишей, не поймешь насколько это важно :) Да и в крупных поэкспериментировать будет наверное интересно. В комплекте с этим будет механизм автоматического удаления непопулярных тумб/галь.

2.1 Стрим на несколько сайтов. Ничего принципиально в скрипте меняться не будет, но появится возможность корректной работы нескольких сайтов на разных доменах на 1 скрипте. Лицензионная политика останется прежней - стрим будет забирать % трафика с доменов без лицензий. Все имеющиеся лицензии нужно будет прописать в админке стрима. К этому нужны будут некоторые дополнительные вещи - перенос всей информации между стримами (гали, тумбы, статистика, ротаторы, спонсоры и т.д.) одной кнопкой, и кое-что еще.

3.Контент-менеджер. Планируется механизм контроля галь на разных доменах управляемых одним скриптом. Чтобы контент не пересекался между сайтами, или пересекался частично, или показывался только там где он максимально популярен. Вариантов много. И так что бы стрим контролировал это сам, согласно каким-то правилам. Как то так.

Обсудить...

Обновление от 14.04.2009 (Build: 1.001)

1. Когда доступен новый апдейт, в админке большими красными буковками будет об этом сообщение.
2. Script state теперь выполняется в несколько шагов.
3. Номер билда (версии скриптов) в заголовке окна браузера.

Обсудить...

Обновление от 14.03.2009

Для англоязычных пользователей добавлен вариант раздела home в english-е. По умолчанию язык для home определяется по языку браузера. Явно его указать можно в settings -> home language. Также исправлены некоторые недоработки прошлого апдейта.

Обсудить...

Обновление от 29.10.2008

1. Возможность делать тонкий тюнинг кропера - строчки для ImageMagick-а. В кроппрофайлах 2 новых поля - IM Prefix и IM postfix. Стрим делает тумбы следующим образом - сначала применяется IM prefix, потом resize, далее фильтры shine, dark и brightness (если они ненулевые), далее выполняется IM postfix и наконец нанесение логотипа если это необходимо.

2. Возможность добавления галерей в ротацию в соответствии с определенными в настройках правилами. Смотрим в settings раздел ADDITION TO ROTATION SETTINGS:
- instant - гали добавляются в ротацию мгновенно, так работал стрим раньше;
- time interval - каждые N часов или дней, в ротацию добавляется X галь (параметр limit). Количество дней или часов может быть дробным числом;
- not rotated gals - активных галь с неотротированными тумбами (нерозовых) будет не более X. Более того эти правила могут относится как ко всем галереям, так и отдельно к каждому ротатору или платнику (параметр for...). Галереи которые ожидают своей очереди на добавление находятся в статс и имеют статус awaiting (выделены зеленым фоном).

3. Фильтры для rss-ридера. К сожалению некоторые спонсоры иногда совершают ошибки при формировании своих rss-фидов, добавляя туда галереи других платников, либо вообще с чужим id. Для того чтобы избежать импорта в стрим таких <неправильных> галь нужно воспользоваться RSS url filter (при создании или редактировании правил reader-а)- прописать туда сигнатуру которая должна обязательно присутствовать в url-е импортируемой гали. Можно использовать звездочку для замены любой последовательности символов. Пример фильтра: paysitedomain.com*id=myid.

4. Запрет на одновременное создание автобакапов на нескольких стримах одного сервера.

5. Равномерный грабинг для всех ротаторов и платников. Во избежание ситуации когда в одном ротаторе всего несколько галерей, и тумб для него приходится ждать очень долго потому что большая очередь.

6. Некоторые изменения в алгоритмах для облегчения жизни крупным (как по трафику, так и по количеству галерей) сайтам.

7. При импорте тумб и при несовпадении их размера с размером ротатора они будет кропиться под нужный размер а не игнорироваться как раньше

Обсудить...

Обновление от 09.08.2008

Работа над "юзабилити" админки. Изменений много, наиболее важные из них:
- улучшена совместимость с firefox 3;
- в affiliate manager и rotators новая колонка с количеством активных галь;
- в templates кнопка регенерации всех морд, а также колонка с количеством позиций тумб на морде для каждого субтемплейта;
- в affiliate manager вкладка для просмотра платников одного спонсора (у кого их много - крайне полезна).

Обсудить...

Обновление от 19.06.2008

подправлен кропер тумб, теперь все работает и с Mozilla Firefox 3.0

Обсудить...

Обновление от 15.06.2008

- обновлен (наконец-то!) мануал;
- кнопка «multi edit» в stats – теперь можно редактировать как все отфильтрованные в stats, так и только гали отмеченные «галочкой»;
- новый тэг для темплейтов #LINK_ID# - порядковый номер ссылки на морде. Некоторые cj-скрипты (из известных мне ATS и FTT) в своей системе античита используют анализ статистики кликов на морде сайта. Для этого каждая ссылка должна иметь уникальный идентификатор, для чего и служит этот тэг;
- в export-е новое поле «thumbs array» - с его помощью можно сделать экспорт всех тумб гали, список будет заключен в фигурные скобки, пути к тумбам разделены «|». Импортировать такой список в стрим нужно в поле thumb path – скрипт сам определит одиночная это ссылка или список и осуществит импорт правильным образом;
- изменен формат очереди кронов (подробности в мануале);
- улучшен кропер тумб, граббер галерей и граббер rss-ов

Обсудить...