summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-10-19 16:27:45 +0100
committerdakkar <dakkar@thenautilus.net>2016-10-19 16:27:45 +0100
commitf04add3196ef9db8b1ae33af693f6d96e7ffe741 (patch)
tree274d5bd33377ab6678d5acb3e35e40fe9b33ee1e
parentcpanfile for deps (diff)
downloadanidb-renamer-f04add3196ef9db8b1ae33af693f6d96e7ffe741.tar.gz
anidb-renamer-f04add3196ef9db8b1ae33af693f6d96e7ffe741.tar.bz2
anidb-renamer-f04add3196ef9db8b1ae33af693f6d96e7ffe741.zip
hashing function
-rw-r--r--cpanfile1
-rw-r--r--lib/AniDB/Hashing.pm17
-rw-r--r--lib/AniDB/Manager.pm2
3 files changed, 19 insertions, 1 deletions
diff --git a/cpanfile b/cpanfile
index b531a04..cf10cab 100644
--- a/cpanfile
+++ b/cpanfile
@@ -1,6 +1,7 @@
#!perl
requires perl => '>=5.024';
requires 'experimental';
+requires 'Digest::ED2K';
requires 'Getopt::Long::Descriptive';
requires 'JSON::MaybeXS';
requires 'Log::Any';
diff --git a/lib/AniDB/Hashing.pm b/lib/AniDB/Hashing.pm
new file mode 100644
index 0000000..6527756
--- /dev/null
+++ b/lib/AniDB/Hashing.pm
@@ -0,0 +1,17 @@
+package AniDB::Hashing;
+use 5.024;
+use strict;
+use warnings;
+use experimental 'signatures';
+use Digest::ED2K;
+use namespace::clean;
+
+sub hash_fh($fh) {
+ my $digest = Digest::ED2K->new;
+ while (my $bytes_read = $fh->sysread($buffer,1024*1024)) {
+ $digest->add($buffer);
+ }
+ return $digest->hexdigest;
+}
+
+1;
diff --git a/lib/AniDB/Manager.pm b/lib/AniDB/Manager.pm
index ee9d48e..a5c9686 100644
--- a/lib/AniDB/Manager.pm
+++ b/lib/AniDB/Manager.pm
@@ -50,7 +50,7 @@ has hash_function => (
sub _build_hash_function {
require AniDB::Hashing;
- return \&AniDB::Hashing::hash_fd;
+ return \&AniDB::Hashing::hash_fh;
}
sub new_name_for($self,$path) {