summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorYaco <franco@reevo.org>2019-01-27 16:06:32 -0300
committerYaco <franco@reevo.org>2019-01-27 16:06:32 -0300
commitc79fa57464a722cf2ccf6d3a942104f9d636d1ee (patch)
tree4a76606e3a2cba32c8868831f755d191da2141ad /bin
parentfecf18fed09790f7e9487e85a20e49868d0a8f03 (diff)
agrega script para migrar imagenes de elgg a mw
Diffstat (limited to 'bin')
-rw-r--r--bin/wiki/GeneraSnapshot.php9
-rw-r--r--bin/wiki/ImportarImagenPrensa.php112
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());
+
+
+
+
+
+
+?>