Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Ed2K Link Maker

by #include (Curate)
on Jun 03, 2003 at 03:56 UTC ( #262558=sourcecode: print w/ replies, xml ) Need Help??

Category: Miscellaneous
Author/Contact Info #include (include@riotmod.com)
http://www.linux.riotmod.com
Description: A small script that makes Ed2K links for use with the eDonkey P2P network. Just pass the script a filename as an argument, and the Ed2K link is printed to STDOUT. Uses Digest::MD5.

MASSIVE UPDATE: I pretty much rewrote the script from scratch and added a bunch of stuff: the ability to be used as both a commandline tool AND a GUI tool, the ability to hash multiple files, and some minor bugfixes. If you want to use the GUI, you must have Tk installed.
#!/usr/bin/perl
#
# ed2k_hash.pl
#
# Revision: 0.4
# Author: #include
# License: GPL
#
# Creates a "hash" link for use with the
# eDonkey2000 network, and prints it to
# STDOUT.  Works as both a commandline tool
# and as a GUI tool.  If the script is passed
# a list of filenames as arguments, it will
# print a link for each file to STDOUT.
# If the script is run with NO arguments,
# it starts in GUI mode.  A Tk dialog will
# pop up and ask for a filename.  The file's
# Ed2K link is printed to STDOUT.
#
# Usage:
#
# COMMANDLINE MODE
# $ perl ed2k_hash.pl myfile.zip other_file.zip thisfile.zip > finishe
+d_hash.txt
#
# GUI MODE
# $ perl ed2k_hash.pl
#
use Digest::MD5;
use strict;
my $text;

if ($#ARGV >= 0 )
{
  foreach my $fname (@ARGV)
  {
    print make_ed2k_link($fname);
  }
} else {
  # Start up the GUI
  use Tk;
  my $mw = MainWindow->new();
  $mw->title("ed2k_hash.pl");
  $mw->Label(-text=>"Please enter a filename to hash:")->pack(-fill=>'
+x');
  $mw->Entry(-width => 25, -textvariable, \$text)->pack(-anchor => 'nw
+',-fill=>'x');
  $mw->Button(-text => "OK",
    -command => \&do_hash )
    ->pack(-side => 'top',
    -anchor => 'nw',-fill=>'x');
  $mw->Button(-text => "Cancel",
    -command => sub { exit })
    ->pack(-side => 'top',
    -anchor => 'nw',-fill=>'x');

  MainLoop;
}

sub do_hash
{
    print make_ed2k_link($text);
    exit;
}

sub make_ed2k_link
{
  my($fname)=@_;
  my $ctx = Digest::MD5->new;
  open(TFILE,"<$fname") or die "Can't open target file ($fname).";
  $ctx->addfile(*TFILE);
  close TFILE;
  my $fhash = $ctx->hexdigest;
  my $fsize = -s $fname;
  return "ed2k://|file|$fname|$fsize|$fhash|\n";
}

Comment on Ed2K Link Maker
Download Code
Re: Ed2K Link Maker
by Anonymous Monk on Dec 31, 2008 at 01:20 UTC

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://262558]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2015-07-05 06:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls