Esta web utiliza cookies para proporcionarte la mejor experiencia de navegación posible. Estas cookies son guardadas en tu navegador y cumplen funciones como reconocerte cuando regresas a esta web y ayudarnos a saber qué secciones de la web encuentras más interesantes y útiles.
Cómo comprar una Play Station 5 (PS5) en MediaMarkt
- enero 22, 2021
- Categoría: web
Importante: Esta información es para uso lúdico personal. En ningún caso se pretende dar conocimientos, consejos, formaciones, herramientas, ni soluciones técnicas de ámbito comercial ni profesional. Simplemente es información que se ha redactado en finalidad de recordatorio de ciertos proyectos realizados. Si usted no está seguro de la fiabilidad de la información, no cumple con sus expectativas o no es de su agrado, le ruego que abandone este sitio web. Para ver todas las exclusiones garantía y de responsabilidad acceda a la sección Aviso Legal.
Cómo ya sabéis, cuando llega una nueva partida de consolas se abren las ventas apenas 15 minutos en los principales distribuidores. Estar pendientes de su web con (F5) es una perdida de tiempo.
Aquí os dejo mi script que mediante web scraping te envía un correo cuando la consola está disponible.
En la última imagen puedes ver las alertas que he recibido hoy 22 de enero de 2021 cuando Mediamarket cuando ha abierto ventas de las 12:45 a las 13:00.
Requerimientos:
Servidor Linux + PHP con un MTA de envío de correos (en mi caso he usado Postfix enlazado con una cuenta de Gmail).
Crear una carpeta para el proyecto.
mkdir /var/www/ps5
Script para la PS5 con BlueRay (/var/www/ps5/mediamarkt_blueray.php)
<?php /* * This script check if PS5 is available on Mediamarkt. */ // Only uid is allowed if ((!isset($_SERVER["USER"]) || $_SERVER["USER"] != "root") && (!isset($_SERVER['LOGNAME']) || $_SERVER['LOGNAME'] != "root")) die(); header ('Content-type: text/html; charset=utf-8'); session_start(); ini_set('max_execution_time',0); set_time_limit(0); // CONFIGURATION // Name $script = 'ZXmarkt_blueray'; // Path $path = '/var/www/ps5/'; // Url of product $url = 'https://www.mediamarkt.es/es/product/_consola-sony-ps5-825-gb-4k-hdr-blanco-1487016.html'; //$url = 'https://www.mediamarkt.es/es/product/_mando-nintendo-switch-joy-con-dos-mandos-verde-y-rosa-1371291.html'; // Test // Interval to check (Seconds) $interval = 30; // Mode $loop = false; // Target word $target = 'pdp-add-to-cart'; // User agent $agent = '--header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"'; // Mail $mail_to = 'youremail@eninsoft.com'; $mail_subject = 'PS5 disponible en '.$script; $mail_body = '<p>Hola,</p><p>Hay PlayStation 5 disponibles para la venta en la web del proveedor: <b>'.$script.'</b>.</p><p>Atentamente.</p>'; $mail_header = 'MIME-Version: 1.0' . "\r\n"; $mail_header .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $mail_header .= 'From: Eninsoft'; // MAIN // If process already exits, ignore it. exec("ps aux | grep -i '".$script."' | grep -v grep", $pids); if (!empty($pids)) exit; // Set name to script cli_set_process_title($script); $control = true; while($control){ if (!$loop) $control = false; // Download page exec('cd '.$path.' && wget -O '.$script.'.html "'.$url.'" '.$agent.' -a wget'.date('Ymd').'.log > /dev/null'); // Get page $html = file_get_contents($path.$script.'.html'); if (strpos($html,$target) !== false){ // Available for sale. echo 'Check: Available for sale!!'."\r\n"; mail($mail_to, $mail_subject, $mail_body, $mail_header); }else{ // Not available for sale. echo 'Check: Not available'."\r\n"; } if ($loop){ usleep($interval * 1000000); } } echo "** Script end: ".date('Y:m:d H:i:s')."\r\n"; ?>
Script para la PS5 digital (/var/www/ps5/mediamarkt_digital.php)
<?php /* * This script check if PS5 is available on Mediamarkt. */ // Only uid is allowed if ((!isset($_SERVER["USER"]) || $_SERVER["USER"] != "root") && (!isset($_SERVER['LOGNAME']) || $_SERVER['LOGNAME'] != "root")) die(); header ('Content-type: text/html; charset=utf-8'); session_start(); ini_set('max_execution_time',0); set_time_limit(0); // CONFIGURATION // Name $script = 'ZXmarkt_digital'; // Path $path = '/var/www/ps5/'; // Url of product $url = 'https://www.mediamarkt.es/es/product/_consola-sony-ps5-digital-edition-825-gb-4k-hdr-blanco-1487015.html'; //$url = 'https://www.mediamarkt.es/es/product/_mando-nintendo-switch-joy-con-dos-mandos-verde-y-rosa-1371291.html'; // Test // Interval to check (Seconds) $interval = 30; // Mode $loop = false; // Target word $target = 'pdp-add-to-cart'; // User agent $agent = '--header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"'; // Mail $mail_to = 'youremail@eninsoft.com'; $mail_subject = 'PS5 disponible en '.$script; $mail_body = '<p>Hola,</p><p>Hay PlayStation 5 disponibles para la venta en la web del proveedor: <b>'.$script.'</b>.</p><p>Atentamente.</p>'; $mail_header = 'MIME-Version: 1.0' . "\r\n"; $mail_header .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $mail_header .= 'From: Eninsoft'; // MAIN // If process already exits, ignore it. exec("ps aux | grep -i '".$script."' | grep -v grep", $pids); if (!empty($pids)) exit; // Set name to script cli_set_process_title($script); $control = true; while($control){ if (!$loop) $control = false; // Download page exec('cd '.$path.' && wget -O '.$script.'.html "'.$url.'" '.$agent.' -a wget'.date('Ymd').'.log > /dev/null'); // Get page $html = file_get_contents($path.$script.'.html'); if (strpos($html,$target) !== false){ // Available for sale. echo 'Check: Available for sale!!'."\r\n"; mail($mail_to, $mail_subject, $mail_body, $mail_header); }else{ // Not available for sale. echo 'Check: Not available'."\r\n"; } if ($loop){ usleep($interval * 1000000); } } echo "** Script end: ".date('Y:m:d H:i:s')."\r\n"; ?>
Crear un crontab para que se ejecute cada minuto.
*/1 * * * * php /var/www/ps5/mediamarkt_digital.php > /var/log/ZXmarket_digital.log */1 * * * * php /var/www/ps5/mediamarkt_blueray.php > /var/log/ZXmarket_blueray.log
Resultado.
NOTACIONES:
* La URL del producto es para MediaMark España.
* Si no se dispone de crontab, activa el modo «loop» del script.
* Ten precaución que no lleguen los correos en la bandeja de SPAM.
* Si se publica en otras webs, por favor, citar la fuente.
Saludos.