annotate bin/ed2k @ 744:8d3ad5ae1ce4 default tip

[ed2k] better? function organization and usage of argv
author nanaya <me@nanaya.net>
date Wed, 05 Feb 2025 17:14:38 +0900
parents bcdf320dabf4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
719
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
1 #!/usr/bin/env php
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
2 <?php
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
3
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
4 function ed2k_hash(string $path): string
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
5 {
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
6 // ed2k hash is an md4 hash of concatenated binary md4 hashes of 9500 KiB file chunks.
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
7 static $bs = 9500 * 1024;
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
8 $hash = '';
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
9 $fp = fopen($path, 'rb');
4
94ee419ad047 Added bin-ec - a collection of scripts.
Edho Prima Arief <me@myconan.net>
parents:
diff changeset
10
719
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
11 while (!feof($fp)) {
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
12 $hash .= hash('md4', fread($fp, $bs), true);
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
13 }
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
14 fclose($fp);
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
15
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
16 return hash('md4', $hash);
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
17 }
4
94ee419ad047 Added bin-ec - a collection of scripts.
Edho Prima Arief <me@myconan.net>
parents:
diff changeset
18
744
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
19 function main(): void
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
20 {
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
21 $files = $_SERVER['argv'];
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
22 array_shift($files);
719
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
23
744
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
24 foreach ($files as $path) {
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
25 $hash = ed2k_hash($path);
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
26 $filename = basename($path);
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
27 $filesize = filesize($path);
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
28
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
29 echo "ed2k://|file|{$filename}|{$filesize}|{$hash}|", PHP_EOL;
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
30 }
719
bcdf320dabf4 Rewrite the ed2k again in php
nanaya <me@nanaya.net>
parents: 4
diff changeset
31 }
744
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
32
8d3ad5ae1ce4 [ed2k] better? function organization and usage of argv
nanaya <me@nanaya.net>
parents: 719
diff changeset
33 main();