Ответы на вопросы
Пришло ко мне недавно письмо, на которое я хочу ответить открытым постом в блоге.
Прочитал вашу статью и заинтересовал заработок с Бигфиш. Я работаю в рунете с Алавар и Невософт, здесь все более менее понятно. Зарегистрировался
по вашей ссылке я и еще один знакомый(тоже сайт в рунете по мини играм).От сайта предлагаемый Бигфиш,я сразу отказался(очередной клон), а самому создать с php не дружу. Знакомый сделал на основе ихнего парсера, но честно получилось черте что.Вы сможете помочь с парсером? Вы писали, что где-то его выдрали. Заказать и покупать я не хочу,потому что не знаю вообще как окупаемость. В рунете я года нет, 2000 хостов есть,
здесь понятен какой конверт и сколько я заработаю, все можно рассчитать, а там? Вы не могли бы сказать конверт какой на западе:
посетители/продажа и закачка/продажа и конечно тогда через сколько времени после открытия сайта такой конверт. Я вообще честно все равно буду там открываться,только по времени не знаю когда.Все зависит от вашей помощи.
Во первых я хочу поздравить автора письма с отличным результатом в рунете, 2К уников менее чем за год - это более чем неплохо. В буржунете конечно таких результатов будет добиться будет сложнее, так как гугуля свой песочницей искуственно будет тормозить развитие сайта. Но зато когда песочница пройдет, сайт выстрелит очень хорошо.
По вопросу парсера - вот код, который я выдрал из сайта бигфиша. Парисится выдача с фида, и кладется в локальную Mysql табличку.
<?php
include_once($_SERVER[”DOCUMENT_ROOT”].’/sql.php’); // подключаю mysql
global $initgame,$element1,$current_game,$games;
$myBFGuser = ‘ваш username в bfg’; //смотрим все это в панели управления bfg
$myBFGafcode = ‘ваш код в bfg’; //смотрим все это в панели управления bfg
$myBFGserver = ‘http://my.bigfishgames.com’;
$xmlSource=getXML();
$games=xml_parser_init($xmlSource);
foreach ($games as $value)
{
$sys=”;
if ($value[’SYSREQOS’]) $sys=$sys.”OS: “.$value[’SYSREQOS’].”\n”;
if ($value[’SYSREQDX’]) $sys=$sys.”DirectX: “.$value[’SYSREQDX’].”\n”;
if ($value[’SYSREQMHZ’]) $sys=$sys.”CPU: “.$value[’SYSREQMHZ’].”\n”;
if ($value[’SYSREQVIDEO’]) $sys=$sys.”Video: “.$value[’SYSREQVIDEO’].”\n”;
if ($value[’SYSREQMEM’]) $sys=$sys.”Memory: “.$value[’SYSREQMEM’].”\n”;
if ($value[’SYSREQHD’]) $sys=$sys.”Hard Drive Space: “.$value[’SYSREQHD’].”\n”;
if ($value[’SYSREQ3D’]) $sys=$sys.”3D: “.$value[’SYSREQ3D’].”\n”;
if ($value[’SYSREQOTHER’]) $sys=$sys.$value[’SYSREQOTHER’].”\n”;
$date=str_replace(’ 00:00:00′,”,$value[’RELEASEDATE’]);
list ($year,$month,$day) = split (’[-]’, $date);
$date=date(”Y-m-d”, mktime (0,0,0,$month,$day,$year));
$durl=str_replace(”index.”,”download.”,$value[’GAMEURL’]);
$mdec=str_replace(’”‘,’\”‘,$value[’MEDDESC’]);
$ldec=str_replace(’”‘,’\”‘,$value[’LONGDESC’]);
//формируем запрос в вашу табличку bfgsourse
$tt=’INSERT INTO bfgsourse (id,name,cat,foldername,shortdesc,meddesc,longdesc,bullet1,bullet2,
bullet3,bullet4,bullet5,small,med,subfeature,feature,thumb1,thumb2,screen1,screen2,
url,buyurl,gameurl,rank,date,sys)
VALUES (’.$value[’GAMEID’].’,”‘.$value[’GAMENAME’].’”,”‘.$value[’GENRENAME’].’”,”‘.$value[’FOLDERNAME’].’”,
“‘.$value[’SHORTDESC’].’”,”‘.$mdec.’”,”‘.$ldec.’”,
“‘.$value[’BULLET1′].’”,”‘.$value[’BULLET2′].’”,”‘.$value[’BULLET3′].’”,
“‘.$value[’BULLET4′].’”,”‘.$value[’BULLET5′].’”,”‘.$value[’SMALL’].’”,
“‘.$value[’MED’].’”,”‘.$value[’SUBFEATURE’].’”,”‘.$value[’FEATURE’].’”,
“‘.$value[’THUMB1′].’”,”‘.$value[’THUMB2′].’”,”‘.$value[’SCREEN1′].’”,
“‘.$value[’SCREEN2′].’”,”‘.$durl.’”,”‘.$value[’BUYURL’].’”,”‘.$value[’GAMEURL’].’”,
‘.$value[’GAMERANK’].’,”‘.$date.’”,”‘.$sys.’”)’;
$insert=new sql ($tt);
//здесь я на всякий случай проверяю встала ли запись. Можно и не проверять
$select=new sql(’select * from bfgsourse where id=’.$value[’GAMEID’]);
if ($select->nr)
{$ok=’OK’;}
else
{$ok=’<font color=”red”>ERROR</font><br>’.$tt.’</br>’;}
}
//далее идет сам парсер от бигфиша
function getXML($autofetch=FALSE)
{
$xmlUrl = ‘http://rss.bigfishgames.com/rss.php?username=’.$myBFGuser.’&type=4&gametype=pc’;
Echo “xmlurl=”.$xmlUrl.”<br>”;
$xmlSource =getRemoteXmlFile($xmlUrl);
return $xmlSource;
}
function getRemoteXmlFile($address)
{
$cu = curl_init ();
curl_setopt($cu, CURLOPT_URL, $address);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($cu, CURLOPT_HEADER, 0);
curl_setopt ($cu, CURLOPT_TIMEOUT, 40);
$xmlFileContents = curl_exec($cu);
curl_close ($cu);
return $xmlFileContents;
}
function xml_parser_init ($source)
{
global $initgame,$element1,$current_game,$games;
$parser=xml_parser_create();
xml_set_element_handler($parser, ‘xml_start_element’, ‘xml_end_element’);
xml_set_character_data_handler( $parser, ‘xml_cdata’);
$status = xml_parse( $parser, $source );
//die(sprintf(”XML error: %s at line %d”, xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
xml_parser_free($parser);
return $games;
}
function xml_start_element($parser, $element, $attrs=”")
{
global $initgame,$element1,$current_game,$games;
if ($element == ‘GAME’){
$initgame = true;
}
$element1 = $element;
}
function xml_cdata ($parser, $data)
{
global $initgame,$element1,$current_game,$games;
if($initgame == true && $element1 != ‘GAME’){
if(empty($current_game)){
$current_game = create_game_array();
}
if($element1 != ‘IMAGES’ && $element1 != ‘SYSTEMREQ’ && $element1 != ‘PC’ && $element1 != ‘EM’){
if(!empty($data)){
$current_game[”.$element1.”] .= trim($data);
}
}
}
}
function xml_end_element($parser, $element, $attrs=”")
{
global $initgame,$element1,$current_game,$games;
if ($element == ‘GAME’){
$games[] = $current_game;
$current_game = create_game_array();
$initgame = false;
}
}
function create_xml_parser($source, $out_enc=”", $in_enc=”", $detect=”")
{
return array(xml_parser_create(), $source);
}
function create_game_array()
{
return array(’GAMEID’=>NULL,
‘GAMENAME’=>NULL,
‘GENREID’=>NULL,
‘GENRENAME’=>NULL,
‘SHORTDESC’=>NULL,
‘MEDDESC’=>NULL,
‘LONGDESC’=>NULL,
‘BULLET1′=>NULL,
‘BULLET2′=>NULL,
‘BULLET3′=>NULL,
‘BULLET4′=>NULL,
‘BULLET5′=>NULL,
‘FOLDERNAME’=>NULL,
‘OFFERING’=>NULL,
‘PRICE’=>NULL,
‘INSTALLER’=>NULL,
‘SMALL’=>NULL,
‘MED’=>NULL,
‘SUBFEATURE’=>NULL,
‘FEATURE’=>NULL,
‘THUMB1′=>NULL,
‘THUMB2′=>NULL,
‘SCREEN1′=>NULL,
‘SCREEN2′=>NULL,
‘GAMEURL’=>NULL,
‘DOWNLOADURL’=>NULL,
‘BUYURL’=>NULL,
‘DOWNLOADIFRAME’=>NULL,
‘BUYIFRAME’=>NULL,
‘GAMERANK’=>NULL,
‘RELEASEDATE’=>NULL,
‘GAMESIZE’=>NULL,
‘SYSREQOS’=>NULL,
‘SYSREQDX’=>NULL,
‘SYSREQMHZ’=>NULL,
‘SYSREQVIDEO’=>NULL,
‘SYSREQMEM’=>NULL,
‘SYSREQHD’=>NULL,
‘SYSREQ3D’=>NULL,
‘SYSREQOTHER’=>NULL);
}
function toRss($string,$option=”")
{
$option = strtoupper($option);
if($option==’CDATA’){
return “<![CDATA[ $string ]]>”;
}else{
$search = array(”&”, “‘”,”?”, “<BR>”,”<br />”);
$replace = array(”&”, “‘”, “‘”, “”, “”);
$string = trim(str_replace($search,$replace,convertUTF8($string)));
return $string;
}
}
function convertUTF8($string)
{
/**
* Detect if string is ASCII if so convert to utf-8
*
* for more info see the following url
* http://us3.php.net/manual/en/function.mb-detect-encoding.php
*/
if(function_exists(”mb_convert_encoding”)){
return mb_convert_encoding($string, “UTF-8″, “ASCII”);
}else{
return $string;
}
}
?>
Что делать дальше? Да что хотите. Все данные с бигфиша в вашей таблице. Можно напрямую выводить эти данные на свой сайт, но это получиться опять же копия самого бигфиша. Я делаю умнее, во первыйх я немного меняю данные, подставляю свою категории, назначаю also try к каждой игре, выкачиваю картинки себе на сайт и делаю их ресайз (чтобы для гугли это была оригинальная картинка, а не копия). Т.е. таблица bfgsourse для меня всего лишь источник, из которого я нужные мне игры перекладываю (c определенными манипуляциями) в таблицу games, откуда уже показываю игры на сайте. Опять же напомню главную цель создания своего сайта - сделать его как более непохожим на тысячи таких же сайтов с таким же контентом.
Ответ на вторую часть вопроса. Про конверт и заработок. Данные по конверту могу лишь сказать для рефлексива (бигфиш закачки не показывает, у него другое мерило - контакты), у меня разброс большой от 100:1 до 400:1. Это связано с моими манипуляциями с закачками. Я даю выбор пользователю откуда качать: рефлексив или бигфиш. И очень многие качаю из обоих источников, и точно где они сконвертируются трудно сказать поэтому мой текущий уровень в рефлексиве 400:1 имеет большую погрешность. Так же многое зависит от качество трафа.
Сколько буду зарабатывать? C 3-х моих сайтов с посещаемостью около 4-4.5К уников в день я имею около 1600 баксов в месяц и эта цифра каждый месяц растет за счет увеличения базы контактов в бигфише. Бигшиф, кстати, в той сумме дает мне 80% . Не стоит забывать так же о “капитализации” ваших сайтов. С ростом посещаемости и доходов цена ваших сайтов тоже растет. Конечно никто не будет продавать “золотого гуся”, но помните что ваши сайты это активы, которые тоже имеют свою цену. Лучше работать на рост своих активов, чем за зарплату растить активы чужого “дяди”
Тем кто хочет связаться со мной пишите на smax (хотдог) cimaxgames точка com. Если вы мой рефер, то указывайте свой ник в бигфише, окажу посильную помощь в развитии ваших активов ![]()
August 18th, 2008 at 4:06 pm
А 4К уников на каждом сайте или это суммарный трафик со всех 3-х?
August 18th, 2008 at 4:43 pm
4K со всех
October 6th, 2008 at 10:14 pm
Вы говорите “…с 3х моих сайтов…” я так понимаю Gonzagames и Cimaxgames, третий сайт тоже игровой тематики? Или связанный с видео ссылку на который я нашел на одном из ваших сайтов.
October 7th, 2008 at 7:54 am
третий сайт cimax-games.com он самый молодой и самый слабый из моей “большой тройки”. Есть так же у меня сайт по продаже фильмов, заточенный под соответствующую партнерку. Но этот сайт пока не показал особых результатов, так как сил и времени я ему уделял по минимуму.
November 16th, 2008 at 5:49 pm
Вобщем-то не сильно по конверту отличается от рунетовских партнерок. Я думал там значительно больше заработать можно.
January 29th, 2009 at 7:00 pm
пожалуйста объясните нубу как обращаться с парсером после вставки своего логина и кода
January 29th, 2009 at 8:18 pm
запускаешь скрипт и получаешь все данные с бигфиша к себе в таблицу mysql . Единственно что я забыл, так это дать код этой таблицы
CREATE TABLE `bfgsourse` (
`id` int(6) unsigned NOT NULL auto_increment,
`name` varchar(50) NOT NULL default ”,
`cat` varchar(20) default NULL,
`foldername` varchar(100) default NULL COMMENT ‘FComment’,
`shortdesc` text NOT NULL,
`meddesc` text,
`longdesc` text,
`bullet1` varchar(150) default NULL,
`bullet2` varchar(150) default NULL,
`bullet3` varchar(150) default NULL,
`bullet4` varchar(150) default NULL,
`bullet5` varchar(150) default NULL,
`small` varchar(255) default NULL,
`med` varchar(255) default NULL,
`subfeature` varchar(255) default NULL,
`feature` varchar(255) default NULL,
`thumb1` varchar(255) default NULL,
`thumb2` varchar(255) default NULL,
`screen1` varchar(255) default NULL,
`screen2` varchar(255) default NULL,
`gameurl` varchar(100) default NULL COMMENT ‘FComment’,
`url` varchar(255) default NULL,
`buyurl` varchar(255) default NULL,
`rank` varchar(5) default NULL,
`date` date default NULL,
`sys` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
January 29th, 2009 at 9:55 pm
“запускаешь скрипт” как? на сервере? в пхп я не очень,
а таблицу эту где создавать?если по шагам объясните я пойму
спасибо…стыдно не знать элементарных вещей