Tutorial: Horóscopo Gratis (Script)

Cicklow Seguir
Seguidores
20

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Bueno hoy aprenderán como crear su script de horóscopo automatizado, si si AUTOMATIZADO!!! sin mover un dedo, podrán tener su horóscopo en su sitio, Facebook o donde sea que quieran!
sin-t-tulo-463fe80.png

Tutoriales Anteriores:
Horóscopo Gratis (Script)
Tu sitio de Tarot sin hacer nada
Programar nuestro propio sitio de tarot
Programar nuestro propio sitio de tarot - V2
Crear aplicaciones Android - Horoscopo Chino
El complemento de todo sitio de Tarot (Aplicación Android)

Paso 1 - Crear nuestro bot
El bot sera encargado de obtener el horóscopo del sitio Horoscopo., se creara un cache de los horoscopos una ves al dia, de esta forma desde cualquier lado podrán acceder a este horóscopo.
Creamos un archivo llamado crea.cache.php
PHP:
<?php
    //Evitamos que el script se pare por falta de tiempo (30 seg por defecto)
    set_time_limit(0);
    //Nuestro array de los horos a obtener
    $S = array('acuario','aries','cancer','capricornio','geminis','libra','leo','piscis','sagitario','escorpio','tauro','virgo');
    //Recorremos el array
    foreach($S as $H){
        //Leemos el sitio abc.es pasandole el horos a leer
        $URL = "https://horoscopo.abc.es/signos-zodiaco-".$H."/horoscopo-hoy.html";
        $A = @file_get_contents($URL);
        //si obtenemos los datos vamos a parsearlos
        if($A!=""){
            //un bot sin preg_match no es un bot! jejeje.. obtenemos el texto del horos, este se encuentra dentro de un DIV
            preg_match('|<span class="caja-ppal-noticia clear">(.*)<p class="callInfo"></p>|sU',$A,$B);

	    if(strlen($B[1])>10){
		    $HO = preg_replace('|<ul class\="herramientas clear">(.*)</ul>|sU','',$B[1]);
		    $HO = str_replace(array("<br>","<br/>"),"##BR##",$HO);
	            $HO = strip_tags($HO);
		    $HO = str_replace("##BR##","<br/>",$HO);
        	    $HO = str_replace(array("\r", "\n"),"", $HO);
	            $HO = trim($HO);
		    $HO = preg_replace('|Predicci&oacute;n(.*)<br/>|sUi','',$HO); //Sacar titulo y fecha... si lo queremos dejar, comentamos esta linea
        	    file_put_contents("cache/".$H.".txt",$HO);
	            echo "Bien: ".$H."\n<br/>";
	    }else{
		echo "Error ".$H." [1]\n<br/>";
	    }
        }else{
            //mostramos error
            echo "Error ".$H." [NO URL]\n<br/>";
        }
    }
    die("FIN Horos!");
?>

Para que sea automatizado tendremos que usar CRON, entramos a nuestro cPanel->Cron jobs y lo configuramos de esta manera:
sin-t-tulo2-4661e59.png
(Cualquiera de los dos wget o php es valido!)
Solo cambian la URL de mi sitio por el suyo (el crea.cache.php mio no funciona!! por ende no podrán obtener los horos de mi sitio), esto lo que hace es ejecutar el creador de cache todos los dias a las 12:05hs.

Paso 2 - Nuestro Sitio
Ahora crearemos un archivo llamado index.php (este archivo solo es necesario si van a colocar el script en un sitio y ofrecerlo desde ahí, y no es necesario si van a obtener el horos para WP, facebook, u otro)...
PHP:
<!DOCTYPE html>
<html lang="es">
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Horoscopo Gratis</title>
	<style>
	
	.masthead {
	    color: #FFFFFF;
	    margin-bottom: 0;
	}
	.masthead h1 {
	    font-size: 120px;
	    letter-spacing: -2px;
	    line-height: 1;
	}
	.jumbotron:after {
	    background: linear-gradient(45deg, #020031 0%, #6D3353 100%) repeat scroll 0 0 transparent;
	    box-shadow: 0 3px 7px rgba(0, 0, 0, 0.2) inset, 0 -3px 7px rgba(0, 0, 0, 0.2) inset;
	    bottom: 0;
	    content: "";
	    display: block;
	    left: 0;
	    opacity: 0.4;
	    position: absolute;
	    right: 0;
	    top: 0;
	}
	.jumbotron {

	    color: #FFFFFF;
	    padding: 5px 0;
	    position: relative;
	    text-align: center;
	    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 0 30px rgba(0, 0, 0, 0.075);
	    height:100%;
	}
	body{
	    	background: linear-gradient(45deg, #020031 0%, #6D3353 100%) repeat scroll 0 0 transparent;
	    	box-shadow: 0 3px 7px rgba(0, 0, 0, 0.2) inset, 0 -3px 7px rgba(0, 0, 0, 0.2) inset;
		font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
		margin: 0px;
		padding: 0px;
		height:100%;
	}
	.container:after {
	    clear: both;
	}
	.container:before, .container:after {
	    content: "";
	    display: table;
	    line-height: 0;
	}
	.container:before, .container:after {
	    content: "";
	    display: table;
	    line-height: 0;
	}
	.jumbotron .container {
	    position: relative;
	    z-index: 2;
	}
	</style>
</head>
<body>
<div class="jumbotron masthead"><div class="container">
	<h1 style="font-size: 16px;font-size: 3.75vw;">Horoscopo Gratis</h1>
	<center><div style="width:100%;max-width: 760px;height:100%;">
	<?php
	$URLINICIO = "http://test.cicklow.me/ForoBeta/horoscopo/"; // url del inicio del script.
	$T = array('aquarius.png','aries.png','cancer.png','capricorn.png','gemini.png','libra.png','lion.png','pisces.png','sagittarius.png','scorpio.png','taurus.png','virgo.png');
	$S = array('acuario','aries','cancer','capricornio','geminis','libra','leo','piscis','sagitario','escorpio','tauro','virgo');

	if($_GET['horos']==""){
		foreach($T as $K=>$A){
			//echo '<a href="?horos='.$S[$K].'">'; //sin mod-rewrite
			echo '<a href="horoscopo-'.$S[$K].'.html">'; //con mod-rewrite
			echo '<img src="zodiac/'.$A.'" style="width:100%;min-width:50px;max-width:180px;padding:5px;float:left;" border="0">';
			echo '</a>';
		}
	}else{
		$AR = 'cache/'.strip_tags($_GET['horos']).'.txt';
		if(file_exists($AR)){
			echo '<img src="zodiac/'.$T[array_search($_GET['horos'], $S)].'" style="width:100%;min-width:50px;max-width:120px;padding:5px;float:left;" border="0">';
			include($AR);
			echo '<br/><a style="text-decoration:none;" href="'.$URLINICIO.'">Volver</a><br/><div style="height:190px"></div>';
		}else{
			echo 'Error al cargar el horoscopo!';
		}
	}

	?>
	</div></center>
</div></div>
</body>
</html>

Edit 2022, he agregado la opcion de mod-rewrite.. esto permite que el user acceda con horoscopo-CUAL.html... si su server no soporta esto, eliminar .htaccess y sacar el comentario de la linea de no-rewrite.
PHP:
RewriteEngine on

RewriteRule ^horoscopo-([^/]+).html$ index.php?horos=$1 [L]

Paso 3 - RSS Horóscopo
Este RSS sera usado para poder automatizar nuestros WP, Facebook, Blogger y otros mas!! Al crear un RSS de nuestros horos podremos acceder a el desde cualquier lado y postearlo donde sea!
Crearemos un archivo llamado horosRSS.php, este archivo tendra un poco mas de programación y código XML (RSS - Wikipedia, la enciclopedia libre)
PHP:
<?php
	//Definimos el timezone de nuestro script (buscar funcion en google para mas info)
	date_default_timezone_set('America/Argentina/Buenos_Aires');
	//Evitamos que nuestro script se nos muera a los 30seg
	@set_time_limit(0);
	//Indicamos que es un XML
	@header ("Content-type: text/xml");
	//Indicar la url de nuestro script
	define('WEB','http://127.0.0.1/ForoBeta/horoscopo/');
	//Creamos un array con los horos
	$_S = array('acuario','aries','cancer','capricornio','geminis','libra','leo','piscis','sagitario','escorpio','tauro','virgo');

	//Funcion encargada de convertir los acentos y demas en caracteres soportados por XML (ya que sino da error de codificacion XML)
	function _T($mensaje){
		return xmlcharacters($mensaje);
	}

	//Convertimos las entidades HTML en entidades normales
	function decode_entities($text) {
	    $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #NOTE: UTF-8 does not work!
	    $text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
	    $text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text);  #hex notation
	    return $text;
	}

	//Convertimos todo los acentos y demas a XML
	function xmlcharacters($string, $trans='') {
		$string = str_replace("’","'",$string);
		$string = html_entity_decode($string);
		$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
		foreach ($trans as $k=>$v)
			$trans[$k]= "&#".ord($k).";";
		return strtr($string, $trans);
	}

	//Mas sobre los acentos...
	function xml_character_decode($string, $trans='') {
		$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
		foreach ($trans as $k=>$v)
			$trans[$k]= "&#".ord($k).";";
		$trans=array_flip($trans);
		return strtr($string, $trans);
	}

	//Cabezera para indicar que es un RSS
$_XML='<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
<title>Horoscopo</title>
	<atom:link href="'.WEB.'horosRSS.php" rel="self" type="application/rss+xml" />
	<link>'.WEB.'</link>
	<description>Horoscopo Gratis</description>
	<pubDate>'.date('r',time()).'</pubDate>

	<generator>http://www.cicklow.com</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>';

	//Nuestro array de siempre XD
	$S = array('acuario','aries','cancer','capricornio','geminis','libra','leo','piscis','sagitario','escorpio','tauro','virgo');
	$T = array('aquarius.png','aries.png','cancer.png','capricorn.png','gemini.png','libra.png','lion.png','pisces.png','sagittarius.png','scorpio.png','taurus.png','virgo.png');
	for($SIG=0;$SIG<=11;$SIG++){
		//Leemos el horos
		$SIG2 = @file_get_contents('cache/'.$S[$SIG].'.txt');
		//Lo agregamos a la estructura XML, titulo, link, fecha, creador, link, descripcion corta, descripcion larga (contenido), imagen
		$_XML .= "\n".'			    	<item>
		<title>'._T(ucfirst($S[$SIG])).' '.date('d-m-Y').'</title>

		<link>'.WEB.'index.php?horos='.$S[$SIG].'</link>
		<pubDate>'.date("r",time()).'</pubDate>
		<dc:creator>cicklow</dc:creator>
		
		<guid isPermaLink="false">'.WEB.'index.php?horos='.$S[$SIG].'</guid>
		<description><![CDATA['.substr(strip_tags($SIG2),0,300).'...]]></description>

		<content:encoded><![CDATA['.$SIG2.']]></content:encoded>
	
		<media:content url="'.WEB.'zodiac/'.$T[$SIG].'" medium="image" />
		</item>';
	}
	$_XML .="\n".'  </channel>'."\n".'</rss>';
	die($_XML);
?>

Paso 4 - Como automatizar...
Para WP usaremos: WordPress › WP RSS Aggregator « WordPress Plugins
Para Blogger usaremos: http://forobeta.com/tutoriales/58713-autopost-blogger-com.html
Para Facebook usaremos: RSS Graffiti | Easy Facebook Automation
Para Twitter usaremos: http://twitterfeed.com/
Para otros... pues busquen cualquier importador de RSS a su sitio!

Paso 5 - TIPS
- Al tener el RSS podran hacer lo que quieran, hasta crear apps android y obtener los horos desde el RSS, script, lo que sea
- Pueden usar adsense sin problemas (u otra empresa)

Demo
Insertar CODE, HTML o PHP:
https://test.cicklow.me/ForoBeta/horoscopo/
Descarga
Insertar CODE, HTML o PHP:
https://test.cicklow.me/ForoBeta/horoscopo/horoscopo.rar
RSS (solo mostrara el horos del día de hoy y no se actualizara mas)
Insertar CODE, HTML o PHP:
https://test.cicklow.me/ForoBeta/horoscopo/horosRSS.php

Mas opciones para tarot:
http://forobeta.com/tutoriales/332521-programar-nuestro-propio-sitio-de-tarot.html
http://forobeta.com/tutoriales/333614-programar-nuestro-propio-sitio-de-tarot-v2.html

Agregado 2022
PHP:
<?php
//OJO a este archivo... ponerle un nombre que solo ustedes sepan!
$S = array('acuario','aries','cancer','capricornio','geminis','libra','leo','piscis','sagitario','escorpio','tauro','virgo');

if($_POST['formulario']==""){
	echo "<form action='' method='POST'>";
	//Recorremos el array
	foreach($S as $H){
		echo "<h1>".$H."</h1>";
		echo '<textarea name="h[]" cols="100" rows="10"></textarea>';
	}
	echo '<br/><br/><input type="submit" name="formulario"></form>';
}else{
	//Guardamos los datos
	foreach($_POST['h'] as $K=> $H){
		echo "Guardando - ".$S[$K]."<br>";
		file_put_contents("cache/".$S[$K].".txt",$H);
	}
	echo "<a href=''>Inicio</a>";
}
?>
Este agregado permite agregar el horos manualmente, sin depender de abc.es... solo copian los horos (o los escriben ustedes) y envian el formulario, el script guarda cada uno de los horos... Tener en cuenta que esto lo tendran que hacer todos los dias o cada el tiempo que ustedes quieran (ejemplo un horoscopo semanal)... Pueden agregarle incluso html.
Este archivo permite colocar codigo en su server, y luego ser llamado desde index.php... por lo que PONGAN UN NOMBRE QUE SOLO USTEDES SEPAN...

Saludos! Y Happy tarot site!
 
Última edición:

Jesam

Mi
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
30 Dic 2011
Mensajes
3.068
¡PEDAZO DE APORTE!
Como siempre innovando y compartiendo, delicioso, muchas gracias Cicklow! Gracias MAESTRO :cool::encouragement::rolleyes:
 

Obed Rivera

Kappa
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
2 Ene 2014
Mensajes
2.586
*.* "Acuario, estás sensual, rebosas amor, eres todo ternura e incitas a que todo el mundo te ame. Eres, en este momento de tu vida, puro amor"
JAJAJAAJAJAJAJA no es cierto no reboso de amor padezco del corazon

gracias por el script
 

blogers

Pi
SEO
Desde
22 Ago 2010
Mensajes
6.590
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Sois un capo quiero un script con las mujeres de horoscopos de durango, jejeje esta muy bueno el tuto
 

rich

1
Xi
Youtuber
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
23 Ago 2012
Mensajes
4.403
Mi horóscopo esta excelente por eso la gente se envicia en esto :encouragement: Excelente tuto
 

Naster

Iota
Verificación en dos pasos activada
Desde
7 Ene 2012
Mensajes
2.107
Como siempre muy buen tutorial. Creo que debes estar lleno de dinero con esos horoscopos :p8:
 

Kenny Johnson

Mi
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Desde
17 Sep 2011
Mensajes
3.420
Me encanta esto lo usare pero sera posible que me ense;es donde poner publi porque nose donde poner
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Me encanta esto lo usare pero sera posible que me ense;es donde poner publi porque nose donde poner

la publi te conviene en donde mostrás el horos, ya que en donde están las imágenes no hay contenido textual (ha menos que armes un buen texto) (index.php)
 

libreman

1
Iota
Verificación en dos pasos activada
Suscripción a IA
Desde
23 Ago 2011
Mensajes
2.116
[MENTION=9679]cicklow[/MENTION] como siempre mil gracias
Se pueden usar las meta de Facebook O como toman el texto del rss es imposible?
Llevo un rato intentando y no lo consigo
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
[MENTION=9679]cicklow[/MENTION] como siempre mil gracias
Se pueden usar las meta de Facebook O como toman el texto del rss es imposible?
Llevo un rato intentando y no lo consigo

para los meta de facebook tienes que editar index.php y en ves de usar include($AR); tendrias que usar:
$ZZ = file_get_contents($AR);
entonces ya tienes el contenido del horos en una variable, ahi la pones en los meta de facebook y lo muestras al user
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Adsense no penaliza por usar el mismo texto que aparece en Horóscopo diario: AstrologÃ*a, Signos del Zodiaco, Tarot, Feng Shui, Carta Astral. ? no que tenía que ser contenido original y no copiado de otro sitio?

pues jamas le di importancia a eso... el user entra buscando el horos... aparte hay sitios que te dan los horos para tu web... ejemplo como los que usa BING, sino pues a inventar el horos todos los dias!
Aparte es un horoscpo... no un articulo copiado de otro sitio... es como las cartas de tarot... millones de sitios mostrando los mismos valores de las cartas... eso no tiene que ver!
 

vicasami

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
19 Nov 2013
Mensajes
26
Entonces no habría de que preocuparse :) Gracias por el tuto

pues jamas le di importancia a eso... el user entra buscando el horos... aparte hay sitios que te dan los horos para tu web... ejemplo como los que usa BING, sino pues a inventar el horos todos los dias!
Aparte es un horoscpo... no un articulo copiado de otro sitio... es como las cartas de tarot... millones de sitios mostrando los mismos valores de las cartas... eso no tiene que ver!
 

Pompinchu

Pi
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Desde
2 Jul 2013
Mensajes
5.475
¡APORTE FENOMENAL! ¡Gracias cicklow!
 
Arriba