Задать вопрос
  • Как конвертировать yml (xml яндекс.маркета) в CSV?

    @bik Автор вопроса
    Пока пользуюсь этим:
    <?php
    ignore_user_abort(1);
    error_reporting(0);
    header("Content-Type: text/html; charset=utf-8");
    
    	$cat = array();
    	$xml = new XMLReader();
    	$xml->open('./yml - Kopie.xml');
    		
    	while($xml->read() && $xml->name !== 'category');
    		while($xml->name === 'category'){
    			$node = new SimpleXMLElement($xml->readOuterXML());
    			$id = +$xml->getAttribute("id");
    			$name = ''. $node;
    			
    			$cat[$id] = $name;
    			
    		$xml->next('category');
    		}
    	$xml->close();			
    
    //////////////////////////////
    
    	$xml = new XMLReader();
    	$xml->open('./yml - Kopie.xml');	
    		
    	$allparams = array();
    	$idparams = array();
    	while($xml->read() && $xml->name !== 'offer');
    		while($xml->name === 'offer'){
    			$node = new SimpleXMLElement($xml->readOuterXML());	
    			$id = +$xml->getAttribute("id");
    			
    			foreach ($node->param as $param){
    				$name = ''. $param['name'];
    				$value = ''. $param;
    				$allparams[] = ''. $param['name'];				
    				$idparams[$id][$name] = $value;
    			}				
    		$xml->next('offer');
    		}
    	$xml->close();
    	
    	$allparams = array_unique($allparams);
    	sort($allparams);
    
    //////////////////////////////
    
    	$xml = new XMLReader();
    	$xml->open('./yml - Kopie.xml');
    	$flag = true;	
    	while($xml->read() && $xml->name !== 'offer');
    		while($xml->name === 'offer'){
    			$node = new SimpleXMLElement($xml->readOuterXML());
    			
    			$id = $xml->getAttribute("id");
    			$available = $xml->getAttribute("available");
    			$url = $node->url;
    			$price = $node->price;
    			$currencyId = $node->currencyId;
    			$delivery = $node->delivery;
    			$local_delivery_cost = $node->local_delivery_cost;
    			$typePrefix = $node->typePrefix;
    			$vendor = $node->vendor;
    			$vendorCode = $node->vendorCode;
    			$model = $node->model;
    			$description = $node->description;
    			$cpa = $node->cpa;
    			$weight = $node->weight;
    			$pickup = $node->pickup;
    			$c = +$node->categoryId;
    			$category = $cat[$c];
    			
    			$picture = '';
    			foreach ($node->picture as $pic){
    				$picture .= $pic .' ';			   
    			}					
    			
    			if($flag){
    				$str = '"id";"Наличие";"url товара";"Цена";"Валюта";"Доставка";"Цена доставки";"Тип";"Производитель";"Код производителя";"Модель";"Описание";"Заказ на маркете";"Вес";"url картинки";"Самовывоз";"Категория";';
    				$j = count($allparams);
    				while($j-- > 0){
    					$str .= '"'. $allparams[$j] .'";';
    				}
    				$str .= PHP_EOL;
    				$str = mb_convert_encoding ($str ,"Windows-1251" , "UTF-8" );			
    				$path = fopen("out.csv", "a+");
    				fwrite($path, $str);
    				fclose($path);
    				$flag = false;
    			}
    			
    			$params = '';
    			$j = count($allparams);
    			while($j-- > 0){				
    				$params .= '"'. $idparams[$id][$allparams[$j]] .'";';			
    			}		
    			
    			$str = '"'. $id .'";';
    			$str .= '"'. $available .'";';
    			$str .= '"'. $url .'";';
    			$str .= '"'. $price .'";';
    			$str .= '"'. $currencyId .'";';
    			$str .= '"'. $delivery .'";';
    			$str .= '"'. $local_delivery_cost .'";';
    			$str .= '"'. $typePrefix .'";';
    			$str .= '"'. $vendor .'";';
    			$str .= '"'. $vendorCode .'";';
    			$str .= '"'. $model .'";';
    			$str .= '"'. $description .'";';
    			$str .= '"'. $cpa .'";';
    			$str .= '"'. $weight .'";';			
    			$str .= '"'. $picture .'";';
    			$str .= '"'. $pickup .'";';
    			$str .= '"'. $category .'";';
    			$str .= $params;
    			$str .= PHP_EOL;
    			
    			$str = mb_convert_encoding ($str ,"Windows-1251" , "UTF-8" );			
    			$path = fopen("out.csv", "a+");
    			fwrite($path, $str);
    			fclose($path);			
    			
    		$xml->next('offer');
    		}
    	$xml->close();
    gc_enable();
    echo 'ok';
    ?>


    Предварительно сокращаю описание товаров:
    sed 's#\(<description>\).*\(</description>\)#\1'xxxxx'\2#g' test.xml > test2.xml
    Ответ написан
    1 комментарий
  • Что за шум вокруг темы, что программисты скоро не нужны?

    @asd111
    ИИ сейчас в зачаточном состоянии, поскольку до сих пор неизвестно как математически описать воображение. Демис Хассабис из Deepmind говорит что когда решат эту проблему, то будет прорыв в ИИ.
    Почитайте теорию по машинному обучению и вам станет понятно насколько там всё в зачаточном состоянии. Ваш страх перед ИИ основан на фантазиях гуманитариев далеких от науки, поэтому не пугайтесь, а смело занимайтесь программированием, на ваш век задач и вакансий хватит.
    Кстати сейчас самые хайповые вакансии как раз связаны с ИИ и машинным обучением. И если вы пойдёте в эту сферу то без денег не останетесь и ещё там есть место для стартапов, т.е. для своего бизнеса. Недавно слышал про компанию, которую основал 18 летний парень - они занимаются математическим анализом( с машинным обучением и т.п.) реплеев из онлайн игр(dota, counter strike и т.п.) и помогают игрокам поднять свой ранг за счет анализа своих ошибок в реплеях, зарабатывают на подписках насколько я понял.
    Ответ написан
    1 комментарий
  • Что за шум вокруг темы, что программисты скоро не нужны?

    Jump
    @Jump
    Системный администратор со стажем.
    Больше всего интересно с чего оно вообще начало прогрессировать?
    С высказываний не очень умных людей вроде Грефа и ему подобных.

    Греф вообще как что ляпнет - то юристы скоро не нужны будут, то программисты.
    Не удивлюсь если он скажет, что скоро люди вообще не нужны будут, искусственный интеллект сам со всем справится.
    Ответ написан
    Комментировать
  • Что за шум вокруг темы, что программисты скоро не нужны?

    AlexMaxTM
    @AlexMaxTM
    школьники цены демпингуют

    Кто-то искусственно создает панику? Какой смысл тогда?

    Не палите тему, чем больше школьников испугаются и не пойдут в IT, тем выше будут заработки у тех, кто остался. :)
    Ответ написан
    4 комментария
  • Что за шум вокруг темы, что программисты скоро не нужны?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    программисты не будут скоро восстребованы.

    Когда мне было 16, я начинал только программировать, меня волновал тот же самый вопрос. Вот даже тему создавал на форуме www.cyberforum.ru/job/thread127123.html (сильно не читайте, мне стыдно за свои сообщения того времени =) ) Это было 7 лет назад, за это время особо ничего не изменилось, поэтому думаю через еще 7 лет будет все нормально.
    Работы для программиста море, а работники нормальные как правило отсутствуют. Понятное дело, что программирование стало "мейнстримом", делать сайты идут все кому не лень, т.к. везде кричат "Программирование сделает вас богатыми! Всего за месяц вы научитесь создавать сайты за деньги!", благо майнинг переманивает людей, желающих легких денег (не в обиду профессиональным майнерам). Но скажу точно, если вы прочитали хоть одну книжку по своему языку программирования, можете писать без использования jQuery и Boostrap (не в обиду этим технологиям, просто часто вижу, что люди учат не JS/CSS, а jQuery/Boostrap), умеете ставить правильные сроки, сможете написать игру "змейка" - то вы уже лучше 90% программистов, а то и больше.
    будут такие инструменты

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

    Так будет с большинством профессий, даже со специалистами по машинному обучению. Но надо понимать, что это случится еще не скоро, лет 10 у вас есть, а там сделают безусловных доход в развитых странах, а в менее развитых, сделают закон, требующий чтобы более 50% сотрудников были не ИИ :-)
    Скажу точно, если вам программирование не очень нравится, то советую уйти в другую профессию, т.к. без любви к этой профессии будет сложно часами сидеть и учить материал (когда тебя не заставляют). Деньги легкие вы тут тоже не сделаете.
    Ответ написан
    10 комментариев