Browse Source

implement _CLITOR_IS_ meta #1

main
ghost 1 year ago
parent
commit
35f509bf92
  1. 91
      kevacoin/get.php
  2. 147
      kevacoin/put.php

91
kevacoin/get.php

@ -24,60 +24,97 @@ function _exec(
return false; return false;
} }
// Get last namespace value // Get clitoris
$kevaNS = _exec( $clitoris = _exec(
$argv[1], $argv[1],
sprintf( sprintf(
'%s %s "_KEVA_NS_"', '%s %s "_CLITOR_IS_"',
'keva_filter', 'keva_get',
$argv[2] $argv[2]
) )
); );
print_r($kevaNS); print_r(
$clitoris
$names = []; );
foreach ($kevaNS as $ns) if (empty($clitoris->value))
{ {
$names[$ns->height] = $ns->value; exit(
sprintf(
'%s does not contain _CLITOR_IS_' . PHP_EOL,
$argv[2]
)
);
} }
krsort($names); if (!$clitoris = @json_decode(
$clitoris->value
))
{
exit(
sprintf(
'could not decode _CLITOR_IS_ of %s' . PHP_EOL,
$argv[2]
)
);
}
// Get namespace content if ($clitoris->version !== '1.0')
$parts = _exec( {
$argv[1], exit(
sprintf( sprintf(
'%s %s "\d+"', '_CLITOR_IS_ of %s not compatible!' . PHP_EOL,
'keva_filter', $argv[2]
$argv[2] )
) );
); }
print_r($parts); if (empty($clitoris->file->name))
{
exit(
sprintf(
'_CLITOR_IS_ format issue for %s!' . PHP_EOL,
$argv[2]
)
);
}
// Merge content data // Merge content data
$data = []; $pieces = [];
foreach ($parts as $part) foreach (
_exec(
$argv[1],
sprintf(
'%s %s "\d+"',
'keva_filter',
$argv[2]
)
) as $piece)
{ {
$data[$part->key] = $part->value; $pieces[$piece->key] = $piece->value;
print_r(
$piece
);
} }
ksort($data); ksort(
$pieces
);
// Save merged data to destination // Save merged data to destination
$filename = isset($argv[3]) ? $argv[3] : sprintf( $filename = isset($argv[3]) ? $argv[3] : sprintf(
'%s/../data/import/kevacoin.%s.%s', '%s/../data/import/[kevacoin][%s]%s',
__DIR__, __DIR__,
$argv[2], $argv[2],
$names[array_key_first($names)] $clitoris->file->name
); );
file_put_contents( file_put_contents(
$filename, $filename,
base64_decode( base64_decode(
implode('', $data) implode('', $pieces)
) )
); );

147
kevacoin/put.php

@ -24,58 +24,131 @@ function _exec(
return false; return false;
} }
// Create namespace // Check file exits
$kevaNamespace = _exec( if (!file_exists($argv[2]))
{
exit('filename does not exist!' . PHP_EOL);
}
// Get file hash sum
$md5file = md5_file(
$argv[2]
);
// Split content to smaller parts, according to the protocol limits
$size = isset($argv[3]) && $argv[3] <= 3072 ? (int) $argv[3] : 3072;
$pieces = str_split(
base64_encode(
file_get_contents(
$argv[2]
)
),
$size
);
// Count total pieces
$total = count(
$pieces
);
// Get software protocol details
$software = _exec(
$argv[1],
'-getinfo'
);
print_r($software);
// Create namespace to collect there data pieces
$ns = _exec(
$argv[1], $argv[1],
sprintf( sprintf(
'%s %s', "%s '%s'",
'keva_namespace', 'keva_namespace',
basename($argv[2]) $md5file
) )
); );
print_r($kevaNamespace); print_r($ns);
// Insert content parts // Create meta description for the future generations
if (!empty($kevaNamespace->namespaceId)) print_r(
{ _exec(
$parts = str_split( $argv[1],
base64_encode( sprintf(
file_get_contents($argv[2]) "%s %s '%s' '%s'",
), 'keva_put',
isset($argv[3]) && $argv[3] <= 3072 ? (int) $argv[3] : 3072 // 3072 bytes limit $ns->namespaceId,
); '_CLITOR_IS_',
json_encode(
[
'version' => '1.0',
'model' =>
[
'name' => 'kevacoin',
'software' =>
[
'version' => $software->version,
'protocol' => $software->protocolversion
]
],
'pieces' =>
[
'total' => $total,
'size' => $size,
],
'file' =>
[
'name' => basename(
$argv[2]
),
'mime' => mime_content_type(
$argv[2]
),
'size' => filesize(
$argv[2]
),
'md5' => $md5file
]
]
)
)
)
);
foreach ($parts as $key => $value) // Begin pieces saving
{ foreach ($pieces as $key => $value)
$kevaPut = _exec( {
print_r(
_exec(
$argv[1], $argv[1],
sprintf( sprintf(
'%s %s %s %s', "%s '%s' '%s' '%s'",
'keva_put', 'keva_put',
$kevaNamespace->namespaceId, $ns->namespaceId,
$key, $key,
$value $value
) )
); )
);
print_r($kevaPut);
$delay = isset($argv[4]) ? (int) $argv[4] : 60;
echo sprintf(
'%s/%s sent, waiting %s seconds...' . PHP_EOL,
$key + 1,
count($parts),
$delay
);
sleep($delay); // Apply delays to prevent too-long-mempool-chain reject
} $delay = isset($argv[4]) && $argv[4] > 0 ? (int) $argv[4] : 60;
echo sprintf( echo sprintf(
'done! run to extract: php kevacoin/get.php %s %s' . PHP_EOL, '%s/%s sent, waiting %s seconds...' . PHP_EOL,
$argv[1], $key + 1,
$kevaNamespace->namespaceId $total,
$delay
); );
}
sleep($delay);
}
// Print result
echo sprintf(
'done! run to extract: php kevacoin/get.php %s %s' . PHP_EOL,
$argv[1],
$ns->namespaceId
);
Loading…
Cancel
Save