Mercurial > ec-dotfiles
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 |
rev | line source |
---|---|
719 | 1 #!/usr/bin/env php |
2 <?php | |
3 | |
4 function ed2k_hash(string $path): string | |
5 { | |
6 // ed2k hash is an md4 hash of concatenated binary md4 hashes of 9500 KiB file chunks. | |
7 static $bs = 9500 * 1024; | |
8 $hash = ''; | |
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 | 11 while (!feof($fp)) { |
12 $hash .= hash('md4', fread($fp, $bs), true); | |
13 } | |
14 fclose($fp); | |
15 | |
16 return hash('md4', $hash); | |
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 | 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 | 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(); |