Parsing (crawling) (scrapping) imagens do post de um arquivo XML exportado do WordPress

Eu estava precisando puxar as imagens de um wordpress que estava num servidor pra outro. Porém eu não tinha acesso ao FTP para migrar as imagens que o cliente anexou ao post.

Com a própria ferramenta de exportação do wordpress eu criei um XML onde viria todo o conteúdo pra mim, mesmo assim, não teve jeito dessa ferramenta de migração/exportação do wordpress me entregar essas imagens, mantendo o endereço do site antigo e as imagens ainda hospedadas lá.

Por isso eu primeiro criei um script para baixar as imagens pro meu servidor


$xml = simplexml_load_file('posts.wordpress.2017-05-03.xml');
$items = $xml->channel->item;

//regex do filter images
$regex = '/src="(.*?)"/';


foreach($items as $item) {
	
	//get encoded from xml exported wordpress file
	$body = (string) $item->children('http://purl.org/rss/1.0/modules/content/')->encoded;
	
	//find images
	preg_match_all($regex, $body, $matches);

	foreach ($matches[1] as $url) {
		// i'll output line by line that url for you
    	// echo $url . "\n";
    	// i'll append this url in a list file
    	file_put_contents('list.txt', $url . "\n", FILE_APPEND | LOCK_EX);
	}
}

// I need wget installed in your terminal
system('wget -x -i list.txt');

rodei esse script acima pelo ssh com o seguinte comando

php download-images-wp.php

onde download-images-wp.php é o nome do arquivo que coloquei o código acima ok?

Depois desse script eu precisei rodar outra rotina no banco de dados pra poder mudar o dominio.

UPDATE wp_posts 
SET post_content = REPLACE (post_content, 'www.dominioantigo.com', 'www.novodominio.com');

pronto.. agora eu baixei todas as imagens que tinha no outro servidor e atualizei o banco para apontar para meu novo dominio.