diff options
-rw-r--r-- | bin/wiki/GeneraSnapshot.php | 9 | ||||
-rw-r--r-- | bin/wiki/ImportarImagenPrensa.php | 112 |
2 files changed, 118 insertions, 3 deletions
diff --git a/bin/wiki/GeneraSnapshot.php b/bin/wiki/GeneraSnapshot.php index 0fcf3d1c..85c8ead1 100644 --- a/bin/wiki/GeneraSnapshot.php +++ b/bin/wiki/GeneraSnapshot.php @@ -46,19 +46,22 @@ function GeneraSnapshot($pagetitle, $services) { if (array_key_exists('prensa:url', $page_properties)) { $urltmp = $page_properties['prensa:url']; $url = preg_replace( "/\r|\n/", "", $urltmp ); + // echo $url; } else { echo "La página '$pagetitle' no tiene definida la propiedad 'prensa:url'\n"; return; } // Obtiene copia de texto del articulo - exec('curl -s ' . $url . ' | unfluff | jq -r .text > /tmp/linkcontent'); + $command = 'curl -s ' . $url . ' | unfluff | jq -r .text'; + echo "$command\n"; + exec($command); // Almacena la imagen exec('wget "https://manet.herokuapp.com/?width=1920&hesight=1080&quality=0.3&url=`echo ' . $url . ' | perl -p -e \'s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg\'`" -O /tmp/temp.jpg && convert -strip -interlace Plane -quality 25% /tmp/temp.jpg /tmp/final.jpg'); // Definimos el nombre del archivo de la imagen $pagename = str_replace( ":", "-", $pagetitle); - $snapshot_name = $pagename . '.jpg'; + $snapshot_name = $pagename . '-snapshot.jpg'; $snaphot_pagecontent = 'Snapshot generada para [['. $pagetitle .']]'; $snaphot_desc = 'Snapshot generada para [['. $pagetitle .']]'; $fileUploader = $services->newFileUploader(); @@ -67,7 +70,7 @@ function GeneraSnapshot($pagetitle, $services) { // Crea nueva o actualiza existente $linkContent = ' - {{Prensa/Archivo + {{Prensa-Archivo |prensa:archivo:imagen='. $snapshot_name.' |prensa:archivo:texto='; $linkContent .= file_get_contents('/tmp/linkcontent'); diff --git a/bin/wiki/ImportarImagenPrensa.php b/bin/wiki/ImportarImagenPrensa.php new file mode 100644 index 00000000..57e09a10 --- /dev/null +++ b/bin/wiki/ImportarImagenPrensa.php @@ -0,0 +1,112 @@ +<?php +# ---- +# Copyright (C) 2013-2020 - Reevo Project (http://reevo.org) +# License: Affero GPL version 3 - http://www.gnu.org/licenses/agpl.html +# ES: Este script recibe el nombre de una pagina de objeto de Prensa, verifica que tenga la propiedad prensa:url definida y genera una subpagina '/Archivo' donde se almacena una copia del contenido en texto plano del original y se añade una captura de pantalla de la página fuente. +# ---- + + +// error_reporting(0); +// Load all the stuff +require_once( __DIR__ . '/vendor/autoload.php' ); +require_once( __DIR__ .'/../../etc/global_config.php' ); + +// Log in to a wiki +$api = new \Mediawiki\Api\MediawikiApi( 'http://'. $REEVO_URL .'/api.php' ); +$api->login( new \Mediawiki\Api\ApiUser( $REEVO_WIKI_API_USER, $REEVO_WIKI_API_PASS ) ); +$services = new \Mediawiki\Api\MediawikiFactory( $api ); + +// Obtengo el nombre de la página como parámetro + +function ImportarImagenPrensa($pagetitle, $services) { + global $REEVO_URL; + $page = $services->newPageGetter()->getFromTitle( $pagetitle ); + $pagecontent = $page->getRevisions()->getLatest(); + if (!$pagecontent) { + echo "No existe una página con el nombre '$pagetitle'\n"; + return; + } + + + $pagecontent = $page->getRevisions()->getLatest()->getContent()->getData(); + + // armo un array con las propiedades de SMW + $rows = explode("|", $pagecontent); + foreach($rows as $row => $data) + { + $row_data = explode('=', $data); + $page_properties[$row_data[0]] = $row_data[1]; + } + + if (array_key_exists('prensa:elggid', $page_properties)) { + $elggidtmp = $page_properties['prensa:elggid']; + $elggid = preg_replace( "/\r|\n/", "", $elggidtmp ); + // echo $url; + } else { + echo "La página '$pagetitle' no tiene definida la propiedad 'prensa:elggid'\n"; + return; + } + + // Definimos el nombre del archivo de la imagen + $pagename = str_replace( ":", "-", $pagetitle); + $snapshot_name = $pagename . '.jpg'; + $snaphot_pagecontent = 'Imagen importada desde sitio anterior para [['. $pagetitle .']]'; + $snaphot_desc = 'Imagen importada desde sitio anterior para [['. $pagetitle .']]'; + $fileUploader = $services->newFileUploader(); + $fileUploader->setChunkSize( 1024 * 1024 * 10 ); + exec("cp /srv/reevo-web/files/red/recext/{$elggid}/`ls /srv/reevo-web/files/red/recext/{$elggid}/` /tmp/imagen && convert /tmp/imagen /tmp/imagen.jpg"); + $fileUploader->upload( $snapshot_name, '/tmp/imagen.jpg', $snaphot_pagecontent, $snaphot_desc ); + + // Crea nueva o actualiza existente + $linkContent = str_replace('}}','|prensa:imagen='. $snapshot_name . '}}', $pagecontent); + + $newContent = new \Mediawiki\DataModel\Content( $linkContent ); + $title = new \Mediawiki\DataModel\Title( $pagetitle ); + $identifier = new \Mediawiki\DataModel\PageIdentifier( $title ); + $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier ); + $services->newRevisionSaver()->save( $revision ); + echo "Importe la imagen para '{$pagetitle}' y se subio a: http://{$REEVO_URL}/Archivo:{$snapshot_name}\n\n"; +} + + +if ($argv[1]) { + ImportarImagenPrensa($argv[1],$services); +} else { + echo "Al no indicar una página, voy a generar los snapshots de todas las pagínas que usen Plantilla:Prensa y que no tengan snapshot \n"; + + // Obtengo todas las paginas con Plantilla:Prensa + $pageListGetter = $services->newPageListGetter(); + $examplePages = $pageListGetter->getPageListFromPageTransclusions( 'Template:Prensa' ); + $array = accessProtected($examplePages,'pages'); + foreach ( $array as $exPage ) { + $pagename = $exPage->getTitle()->getText(); + echo "$pagename \n"; + ImportarImagenPrensa($pagename, $services); + } +} + + + + +function accessProtected($obj, $prop) { + $reflection = new ReflectionClass($obj); + $property = $reflection->getProperty($prop); + $property->setAccessible(true); + return $property->getValue($obj); +} + + + + + +// print_r($examplePages); + +// $myArray = json_decode(json_encode($examplePages), true); +// print_r($examplePages->getPageList()); + + + + + + +?> |