Benjamin Renard commited on 2015-01-04 23:39:08
Showing 3 changed files, with 261 additions and 0 deletions.
| ... | ... |
@@ -0,0 +1,18 @@ |
| 1 |
+Script pour envoyer par SMS le programme ciné |
|
| 2 |
+============================================= |
|
| 3 |
+ |
|
| 4 |
+Ce script récupère sur Allociné le programme ciné du cinéma |
|
| 5 |
+de votre choix et formatte un message qui sera envoyé par SMS. |
|
| 6 |
+ |
|
| 7 |
+La librairie api-allocine-helper est utilisée pour intéroger |
|
| 8 |
+l'API d'Allociné. L'envoi du SMS est fait via une passerelle |
|
| 9 |
+mail2sms. |
|
| 10 |
+ |
|
| 11 |
+Utilisation |
|
| 12 |
+----------- |
|
| 13 |
+ |
|
| 14 |
+ Usage: send.php [-h] -c=[code_cine] -t=[0612345678] -d=[sms.domain.tld] |
|
| 15 |
+ -h Show this message |
|
| 16 |
+ -c=[code_cine] Specify cine code |
|
| 17 |
+ -t=[number] Specify phone number |
|
| 18 |
+ -d=[sms.domain.tld] Specify SMS mail domaine |
| ... | ... |
@@ -0,0 +1,127 @@ |
| 1 |
+<?php |
|
| 2 |
+ |
|
| 3 |
+function day2int($day,$inv=false) {
|
|
| 4 |
+ $days=array( |
|
| 5 |
+ 'lun' => 1, |
|
| 6 |
+ 'mar' => 2, |
|
| 7 |
+ 'mer' => 3, |
|
| 8 |
+ 'jeu' => 4, |
|
| 9 |
+ 'ven' => 5, |
|
| 10 |
+ 'sam' => 6, |
|
| 11 |
+ 'dim' => 7, |
|
| 12 |
+ ); |
|
| 13 |
+ if ($inv) {
|
|
| 14 |
+ foreach($days as $d => $i) if ($day==$i) return $d; |
|
| 15 |
+ return false; |
|
| 16 |
+ } |
|
| 17 |
+ else {
|
|
| 18 |
+ return (isset($days[$day])?$days[$day]:false); |
|
| 19 |
+ } |
|
| 20 |
+} |
|
| 21 |
+ |
|
| 22 |
+function group_days($movies) {
|
|
| 23 |
+ $ret=array(); |
|
| 24 |
+ foreach($movies as $m => $days) {
|
|
| 25 |
+ //echo $m."\n"; |
|
| 26 |
+ $times=array(); |
|
| 27 |
+ $ret[$m]=array(); |
|
| 28 |
+ foreach ($days as $d => $hs) {
|
|
| 29 |
+ foreach ($hs as $h) {
|
|
| 30 |
+ if (!isset($times[$h])) {
|
|
| 31 |
+ $times[$h]=array(); |
|
| 32 |
+ } |
|
| 33 |
+ $times[$h][]=$d; |
|
| 34 |
+ } |
|
| 35 |
+ } |
|
| 36 |
+ foreach($times as $h => $days) {
|
|
| 37 |
+ $f=null; |
|
| 38 |
+ $l=null; |
|
| 39 |
+ $ps=array(); |
|
| 40 |
+ //echo "$m - $h : ".implode('-',$days)."\n";
|
|
| 41 |
+ foreach(array(3,4,5,6,7,1,2,0) as $d) {
|
|
| 42 |
+ $day=day2int($d,1); |
|
| 43 |
+ //echo "$h : $day ?\n"; |
|
| 44 |
+ if (in_array($day,$days)) {
|
|
| 45 |
+ if ($f==null) {
|
|
| 46 |
+ //echo "$h : debut $day\n"; |
|
| 47 |
+ $f=$day; |
|
| 48 |
+ } |
|
| 49 |
+ //else echo "$day : on continue\n"; |
|
| 50 |
+ $prev=$day; |
|
| 51 |
+ } |
|
| 52 |
+ elseif ($f!=null) {
|
|
| 53 |
+ //echo "$h : fin $prev\n"; |
|
| 54 |
+ $l=$prev; |
|
| 55 |
+ if ($f==$l) $ps[]=$f; else $ps[]="$f-$l"; |
|
| 56 |
+ $f=null; |
|
| 57 |
+ $l=null; |
|
| 58 |
+ } |
|
| 59 |
+ } |
|
| 60 |
+ //echo "$m - $h => ".implode('&',$ps)."\n";
|
|
| 61 |
+ foreach($ps as $p) {
|
|
| 62 |
+ if (!isset($ret[$m][$p])) {
|
|
| 63 |
+ $ret[$m][$p]=array(); |
|
| 64 |
+ } |
|
| 65 |
+ $ret[$m][$p][]=$h; |
|
| 66 |
+ } |
|
| 67 |
+ } |
|
| 68 |
+ } |
|
| 69 |
+ return $ret; |
|
| 70 |
+} |
|
| 71 |
+ |
|
| 72 |
+function withoutAccents($string){
|
|
| 73 |
+ $replaceAccent = Array( |
|
| 74 |
+ "à" => "a", |
|
| 75 |
+ "á" => "a", |
|
| 76 |
+ "â" => "a", |
|
| 77 |
+ "ã" => "a", |
|
| 78 |
+ "ä" => "a", |
|
| 79 |
+ "ç" => "c", |
|
| 80 |
+ "è" => "e", |
|
| 81 |
+ "é" => "e", |
|
| 82 |
+ "ê" => "e", |
|
| 83 |
+ "ë" => "e", |
|
| 84 |
+ "ì" => "i", |
|
| 85 |
+ "í" => "i", |
|
| 86 |
+ "î" => "i", |
|
| 87 |
+ "ï" => "i", |
|
| 88 |
+ "ñ" => "n", |
|
| 89 |
+ "ò" => "o", |
|
| 90 |
+ "ó" => "o", |
|
| 91 |
+ "ô" => "o", |
|
| 92 |
+ "õ" => "o", |
|
| 93 |
+ "ö" => "o", |
|
| 94 |
+ "ù" => "u", |
|
| 95 |
+ "ú" => "u", |
|
| 96 |
+ "û" => "u", |
|
| 97 |
+ "ü" => "u", |
|
| 98 |
+ "ý" => "y", |
|
| 99 |
+ "ÿ" => "y", |
|
| 100 |
+ "À" => "A", |
|
| 101 |
+ "Á" => "A", |
|
| 102 |
+ "Â" => "A", |
|
| 103 |
+ "Ã" => "A", |
|
| 104 |
+ "Ä" => "A", |
|
| 105 |
+ "Ç" => "C", |
|
| 106 |
+ "È" => "E", |
|
| 107 |
+ "É" => "E", |
|
| 108 |
+ "Ê" => "E", |
|
| 109 |
+ "Ë" => "E", |
|
| 110 |
+ "Ì" => "I", |
|
| 111 |
+ "Í" => "I", |
|
| 112 |
+ "Î" => "I", |
|
| 113 |
+ "Ï" => "I", |
|
| 114 |
+ "Ñ" => "N", |
|
| 115 |
+ "Ò" => "O", |
|
| 116 |
+ "Ó" => "O", |
|
| 117 |
+ "Ô" => "O", |
|
| 118 |
+ "Õ" => "O", |
|
| 119 |
+ "Ö" => "O", |
|
| 120 |
+ "Ù" => "U", |
|
| 121 |
+ "Ú" => "U", |
|
| 122 |
+ "Û" => "U", |
|
| 123 |
+ "Ü" => "U", |
|
| 124 |
+ "Ý" => "Y" |
|
| 125 |
+ ); |
|
| 126 |
+ return strtr($string, $replaceAccent); |
|
| 127 |
+} |
| ... | ... |
@@ -0,0 +1,116 @@ |
| 1 |
+<?php |
|
| 2 |
+ |
|
| 3 |
+error_reporting(E_ERROR); |
|
| 4 |
+ |
|
| 5 |
+@require_once "lib/api-allocine-helper/api-allocine-helper.php"; |
|
| 6 |
+require_once "functions.php"; |
|
| 7 |
+ |
|
| 8 |
+// Retreive local from environnement |
|
| 9 |
+setlocale(LC_ALL, ''); |
|
| 10 |
+ |
|
| 11 |
+// Manage script parameters |
|
| 12 |
+$options=getopt('hc:t:d:');
|
|
| 13 |
+ |
|
| 14 |
+if (isset($options["h"])) {
|
|
| 15 |
+ echo "Usage: ".$argv[0]." [-h] -c=[code_cine] -t=[0612345678] -d=[sms.domain.tld]\n"; |
|
| 16 |
+ echo " -h Show this message\n"; |
|
| 17 |
+ echo " -c=[code_cine] Specify cine code\n"; |
|
| 18 |
+ echo " -t=[number] Specify phone number\n"; |
|
| 19 |
+ echo " -d=[sms.domain.tld] Specify SMS mail domaine\n"; |
|
| 20 |
+ exit(); |
|
| 21 |
+} |
|
| 22 |
+ |
|
| 23 |
+if (isset($options["c"]) && $options["c"]!==false) {
|
|
| 24 |
+ $code_cine=$options["c"]; |
|
| 25 |
+} |
|
| 26 |
+else die("You must provide cine code with -c=XXX parameter.\n");
|
|
| 27 |
+ |
|
| 28 |
+if (isset($options["t"]) && $options["t"]!==false) {
|
|
| 29 |
+ $send_to=$options["t"]; |
|
| 30 |
+} |
|
| 31 |
+else die("You must provide phone number with -t=XXXX parameter.\n");
|
|
| 32 |
+ |
|
| 33 |
+if (isset($options["d"]) && $options["d"]!==false) {
|
|
| 34 |
+ $mail_domain=$options["d"]; |
|
| 35 |
+} |
|
| 36 |
+else die("You must provide SMS mail domain with -d=domain.tld parameter.\n");
|
|
| 37 |
+ |
|
| 38 |
+try {
|
|
| 39 |
+ $helper = new AlloHelper; |
|
| 40 |
+ $result = $helper->showtimesByTheaters($code_cine); |
|
| 41 |
+} |
|
| 42 |
+catch( ErrorException $error ) {
|
|
| 43 |
+ die("Error retreiving informations (Err. n°". $error->getCode(). ") : ". $error->getMessage());
|
|
| 44 |
+} |
|
| 45 |
+ |
|
| 46 |
+try {
|
|
| 47 |
+ $name_cine=null; |
|
| 48 |
+ $movies=array(); |
|
| 49 |
+ foreach($result->theaterShowtimes as $t) {
|
|
| 50 |
+ $name_cine=$t->place->theater->name; |
|
| 51 |
+ foreach($t->movieShowtimes as $mst) {
|
|
| 52 |
+ $movie=utf8_encode($mst->onShow->movie->title); |
|
| 53 |
+ $suf=array(); |
|
| 54 |
+ if ($mst->screenFormat['$']=='3D') {
|
|
| 55 |
+ $suf[]='3D'; |
|
| 56 |
+ } |
|
| 57 |
+ if ($mst->version->code!=6001) {
|
|
| 58 |
+ $suf[]='VO'; |
|
| 59 |
+ } |
|
| 60 |
+ if(count($suf)>0) {
|
|
| 61 |
+ $movie.=' ('.implode('/',$suf).')';
|
|
| 62 |
+ } |
|
| 63 |
+ |
|
| 64 |
+ if (!isset($movies[$movie])) {
|
|
| 65 |
+ $movies[$movie]=array(); |
|
| 66 |
+ } |
|
| 67 |
+ |
|
| 68 |
+ foreach($mst->scr as $day) {
|
|
| 69 |
+ $date=DateTime::createFromFormat('Y-m-d',$day['d']);
|
|
| 70 |
+ $jour=str_replace('.','',strftime('%a',$date->getTimestamp()));
|
|
| 71 |
+ if(!isset($movies[$movie][$jour])) $movies[$movie][$jour]=array(); |
|
| 72 |
+ foreach($day['t'] as $t) {
|
|
| 73 |
+ $movies[$movie][$jour][]=$t['$']; |
|
| 74 |
+ } |
|
| 75 |
+ } |
|
| 76 |
+ } |
|
| 77 |
+ } |
|
| 78 |
+} |
|
| 79 |
+catch( ErrorException $error ) {
|
|
| 80 |
+ die("Error parsing informations (Err. n°".$error->getCode().") : ".$error->getMessage());
|
|
| 81 |
+} |
|
| 82 |
+ |
|
| 83 |
+// Format movies informations |
|
| 84 |
+$fmovies=group_days($movies); |
|
| 85 |
+ |
|
| 86 |
+// Calculate start/end of cine week |
|
| 87 |
+$start_date=new Datetime(date('Y-m-d').' 00:00:00');
|
|
| 88 |
+$start=$start_date->format('d/m');
|
|
| 89 |
+$start_time=$start_date->getTimestamp(); |
|
| 90 |
+$start_wd=(int)date('N',$start_time);
|
|
| 91 |
+$end_time=$start_time+(24*3600*((9-$start_wd)%7)); |
|
| 92 |
+$end=date('d/m',$end_time);
|
|
| 93 |
+ |
|
| 94 |
+// Format Message |
|
| 95 |
+$msg="Cinema $name_cine\nProgramme du $start au $end\n"; |
|
| 96 |
+ |
|
| 97 |
+foreach($fmovies as $m => $ps){
|
|
| 98 |
+ $msg.="$m : "; |
|
| 99 |
+ $hss=array(); |
|
| 100 |
+ foreach($ps as $p => $hs) {
|
|
| 101 |
+ $hss[]="$p ".implode(' & ',$hs);
|
|
| 102 |
+ } |
|
| 103 |
+ $msg.=implode(' / ',$hss)."\n";
|
|
| 104 |
+} |
|
| 105 |
+ |
|
| 106 |
+// Remove accents |
|
| 107 |
+$msg=$msg=withoutAccents($msg); |
|
| 108 |
+ |
|
| 109 |
+// Format mail |
|
| 110 |
+$mail="$send_to@$mail_domain"; |
|
| 111 |
+ |
|
| 112 |
+// Display message |
|
| 113 |
+echo "Send to $mail :\n\n$msg"; |
|
| 114 |
+ |
|
| 115 |
+// Send message |
|
| 116 |
+mail($mail,'',$msg); |
|
| 0 | 117 |