Мелкие поделки
На что только не пойдешь, ради удобства просмотра фильмов.
1. Сделал парсер местного медиа-сайта. Суть проста: вводишь id ресурса и получаешь список фильмов, измененными линками(добавлен тег vod) на фильм. http://pdahelp.net/share/
2. Доработал генератор плейлистов. Теперь он умеет, кроме мультимедиа rss, еще и WPL и M3U. Ну и простой список в виде ссылок. http://pdahelp.net/myfeed/
Первая штука у меня прописана в медиа-танке и я пользуюсь нею непосредственно с него. Вторая нужна, в основном, для формирования списков просмотра сериалов.
Модификация HLstatsX
[offtop] Cтоило начать появляться в поисковиках, как появились боты. Да здравствует re-captcha ![/offtop]
Этот пост могут пропустить те, кому администрирование игровых серверов неинтересно.
Когда-то делал похожую модификацию для hlstats, теперь сделал ее для HLstatsX, немного расширив.
возможности:
- Редактирование состава клана
- Расширенная информация о клане
- упаковка демок после игры
- резервирование сервера со своим паролем
Установка:
1. распаковываем архив в корень HLstatsX (см. структуру архива).
2. исполняем файл tables.sql (добавляет необходимые поля в таблицу кланов и админов.)
3. в управлении пользователями добавляем клан-админов, выбирая соотв. им клан.
4. скриптах pack.php и run_rcon.php указываем свои пути.
Скриншоты в архиве.
Написано под *nix, под Вин, возможно, придется переделать чуток.
Для упаковки демок и запуска rcon-скрипта, необходимо, чтобы бинарники zip и php лежали в папке со скриптом (либо в пути, указанном в safe_mode_exec_dir)
из joomla в livejournal
Знаю, о том, как транслировать в ЖЖ произвольный текст написано немало. Но я, все же, напишу. Может даже для себя. А там, глядишь, и кому-то пригодится.
Итак. Есть Joomla, необходимо постить в жж новый материал.
Открываем файл /components/com_content/models/article.php
Находим строки(418-421):
if ($isNew)
{
$this->_id = $article->_db->insertId();
}
после них вставляем это:
function LJpost($post,$subj){
require_once ("/ваш путь к джумле/xmlrpc/IXR_Library.inc.php");
define('LJ_HOST', 'www.livejournal.com');
define('LJ_PATH', '/interface/xmlrpc');
define('LJ_LOGIN', '********');
define('LJ_PASSWD', '*******');
$ljClient = new IXR_Client(LJ_HOST, LJ_PATH);
if (!$ljClient->query('LJ.XMLRPC.getchallenge')) {
echo 'Error [' . $ljClient->getErrorCode().'] '.$ljClient->getErrorMessage();
}
else {
$ljResponse = $ljClient->getResponse();
$ljChallenge = $ljResponse['challenge'];
$ljArgs = array();
$ljArgs['username'] = LJ_LOGIN;
$ljArgs['auth_method'] = 'challenge';
$ljArgs['auth_challenge'] = $ljChallenge;
$ljArgs['auth_response'] = md5($ljChallenge . md5(LJ_PASSWD));
$ljArgs['ver'] = "1";
$ljArgs['event'] = $post; //iconv('windows-1251', 'UTF-8', $post); если ваш текст и заголовок не в UTF, используйте строчку с iconv
$ljArgs['subject'] = $subj; //iconv('windows-1251', 'UTF-8', $subj);
$time_difference = 2; //timezone=Kiev :)
$year = date('Y', (time() + ($time_difference * 3600)));
$month = date('m', (time() + ($time_difference * 3600)));
$day = date('d', (time() + ($time_difference * 3600)));
$hour = date('H', (time() + ($time_difference * 3600)));
$minute = date('i', (time() +($time_difference * 3600)));
$ljArgs['year'] = $year;
$ljArgs['mon'] = $month;
$ljArgs['day'] = $day;
$ljArgs['hour'] = $hour;
$ljArgs['min'] = $minute;
$ljArgs['usejournal'] = 'pdahelp'; //в какой журнал или сообщество постим. Не забываем стать френдом\присоединиться к сообществу перед этим
$ljArgs['props'] = array(
'opt_preformatted' => true,
'opt_backdated' => false,
'taglist' => 'pda, pocket pc, news, article', //iconv('windows-1251', 'UTF-8', 'pda, pocket pc, news, article'),
);
$ljArgs['security'] = 'public';
$ljMethod = 'LJ.XMLRPC.postevent';
if (!$ljClient->query($ljMethod, $ljArgs)) {
$err='error ['.$ljClient->getErrorCode().'] '.$ljClient->getErrorMessage();
}
else {
$ljResponse = $ljClient->getResponse();
$err=false;
//print_r($ljResponse);
}
}
return $err;
}
$text_id=$this->_id ;
$subj=$article->title;
$post=$article->introtext;
$fulltxt=$article->fulltext;
if (strlen($fulltxt)>10) {
$post.="...";
}
$post.="<p style=\"border:1px black solid;text-align:center\">эта статья опубликована на сайте <a href=\"http://pdahelp.net\">pdahelp.net</a><br>";
$post.="полный текст статьи можно прочитать по этой ссылке: <a href=\"http://www.pdahelp.net/index.php?view=article&id=".$text_id."\">".$subj."</a></p>";
$err=LJpost($post,$subj);
if ($err) {
$file=fopen('ваш путь к джумле/tmp/output.txt','w+');
fwrite($file,$err);
fclose($file);
}
Поскольку joomla не выдает ошибок в коде, на этапе отладки просматриваем файл output.txt на предмет ошибок.
Не забываем положить в каталог xmlrpc этот файл (в распакованном виде).
Недостатки:
- Пост в ЖЖ происходит сразу, без утверждения.
- Пост в ЖЖ происходит только при публикации материала с главной страницы. Не из админки.
- Ссылка на статью выглядит некрасиво. Впрочем, документация о том, как сделать из нее «красоту», доступна.
Функция LJPost взята отсюда
Зачем вообще все это ? Две цели:
1. удобство для пользователей ЖЖ.
2. собственно реклама.
Для примера, работающие трансляции (некоторые отличаются xmlrpc библиотеками):
- http://labazzz-com.livejournal.com/
- http://community.livejournal.com/pdahelp/
- http://community.livejournal.com/board_ck/
Отдаю даром
…не то, чтобы оно такое плохое, просто не вижу смысла заниматься ним дальше.
Простой и незатейливый видео-каталог с возможностью комментариев и рейтинга фильма.
Проект был написан примерно год-два назад для файл-сервера домосети. Где и проработал примерно с год, после чего был закрыт ввиду перехода на глобальный медиаресурс провайдера. Демо.
Забирайте: Video Catalog
админский вход:
login: admin
pass: 1
TeeWorlds stats
Решил немного доработать TWSTAT.
Одно из изменений (добавлено):
Сделал отдельную страничку для статистики, там же выложил линку на скачку.
Немного позже добавлю на страничку мануал на русском.
UPD: инструкция добавлена.



