aMule Forum
English => Feature requests => Topic started by: minage on October 08, 2008, 01:36:25 AM
-
Hi,
I'm wondering why amulecmd has just exencial commands and you can't control amule completely.
it would be great if you'll implement some new commands on amulecmd.
-
Hello minage,
would you be so kind as to make a list of the commands missing?
kind regards
-
for example....
set tcp/udp port
max sources and clients limit
set start or not amuleweb when starting amule (and password)
language
reconnect on loss
add/remove shared directories
File Buffer Size
Upload Queue Size
more or less useful things... :)
-
Hi minage,
Ah, you want to be able to control the preferences using amulecmd. This would make indeed controlling amule remotely more comfortable.
Some things will cause some problems, as for instance changing the port or language requires currently a restart. But other things are very sensible suggestions and likely to be implemented.
Would you please be so kind as to create a feature request in the bug tracker? I'm a bit disorganized and tend to forget about requests in the forums. - Thank you!
-
Maybe add it to 585 (http://bugs.amule.org/view.php?id=585). There's a lot of features that could be added, like file comments and other advanced stuff. Basically every feature that big brother aMule also has :D
-
Maybe add it to 585 (http://bugs.amule.org/view.php?id=585). There's a lot of features that could be added, like file comments and other advanced stuff. Basically every feature that big brother aMule also has :D
I reported a new issue...
is it right?
maybe have i to do the same thing here in the forum?
-
Hello minage,
everything is good. :) The bug report in the bug tracker serves only for me...because I forget reports in the forums. :(
-
nice,
well...I found what could be as first on "to do" list of my request.
A better Search command.
now you can search on local; global; kad and nothing else.
next could be "choose the file type too":
search kad audio file
or
search kad video file
that would be great :)
and then order the list by alphabet, size and sources :)
like: results abc; results size; results sources
-
It would be nice if it's possible to have ed2k link with command show DL
-
Could you implement (if possible or/and sensible ) some new EXTENSIONS for show/add commands:
1. show kad (show current KAD contacts)
show nodes (show nodes.dat)
2. add node (add a node IP to nodes.dat)
add nodes (add a nodes.dat link be added to nodes.dat) ?
and new COMMANDS to be able to delete single item in servers/nodes list:
del server ip:port (delete a server from servers list)
del node ip:port (delete a node from nodes list) ?
-
1. show kad (show current KAD contacts)
show nodes (show nodes.dat)
2. add node (add a node IP to nodes.dat)
add nodes (add a nodes.dat link be added to nodes.dat) ?
del node ip:port (delete a node from nodes list) ?
I don't think it's a wise idea to hand-edit nodes.dat. aMule does not provide a way to manually add/remove Kad contacts. However, it's possible to add a contact to the routing table but only when Kad is running, and there's no gurantee that it won't be automatically removed soon.
Instead, I'd suggest 'connect kad [ip:port]' to bootstrap Kad from a specific IP:Port.
del server ip:port (delete a server from servers list)
Add/remove servers should be possible and can be implemented.
-
Adding, removing and listing single kad nodes makes no sense whatsoever.
-
Then at least please implement these features:
1. "dump current kad routing table to nodes.dat / nodes.txt "
2. " translate nodes.dat to nodes.txt "
3. " translate nodes.txt to nodes.dat"
nodes.txt is human readable form of nodes.dat
-
Why. Why in the name of everything that is holy would you want to look at the Kad routing table.
-
I'm paranoic :)
-
You can be paranoid without bloating the applications, you know? Develop your own nodes.dat reader as an exercise.
Mind you, flushing the config files with a EC command sounds great to me, but exporting the kad routing table to text? I'm afraid not.
-
$ cd src/utils/fileview
$ make
$ ./mulefileview ~/.aMule/nodes.dat
Or see dumping nodes.dat (http://www.amule.org/amule/index.php?topic=16675.0)
-
Some features I'd like to see added to the amulecmd command line in order of my preference are:
- Ability to rename the file of an existing download.
- Ability to swap every A4AF to a particular file.
- Ability to swap every A4AF from a particular file to any other file.
- Ability to show file details as per the amule GUI.
If any of the above can be achieve now from the command line it would be handy if someone could show me how.
Thanks.
-
my request is for a mini aMuleGUI in console form, getting rid of the typing in of separate commands and just have something like other terminal apps i.e.like mp3blaster.
seeing all those GUI tabs (Kad, shared files) in a CLI would be so cute. :P
(would also be bloody awesome)
-
'Was thinking that being possible to read from shell alternative names given by others to current downloading files would allow to easily implement simple third parts scripts able to strongly check for fakes, since a/eMule are getting in a floody state.
-
aMule works well with ed2k, but in kad it's hard to find no-fake file.
-
aMule works well with ed2k, but in kad it's hard to find no-fake file.
i can say the opposite ::)
-
Well, it depends on what you look for. :D
IMF, you would wonder how hard it is to put a little human common sense into a script to detect fakes.
-
is it possible to implement amulecmd commands to manage friends slots?
-
I kindly wish amulecmd to have "verbose" mode in giving Results (maybe in other commands too, like "Show DL", "Show UL", "Show Servers").
What I imagine is detailed Results list format (maybe "Results detailed" , "Results -v" ... ?),
with all internal information about found result, like "ed2k" key, comment... etc.
Maybe it might look like:
$ amulecmd -c "Results detailed"
Results-found: R
Result-id: 0
Filesize: ..... bytes
Filename-0: first known filenamename for such ed2k sum
Filename-1: second known filenamename for such ed2k sum...
...
Filename-n: nth known filenamename for such ed2k sum
ed2k-simple: ed2k:// ....
ed2k-with-hosts: ed2k:// ...
...
Server-0: ip:port of first hosting serwer gound
....
etc.
[empty line]
Result-id: 1
.....
[empty line]
Result-id: R-1
....
I don't know what data are available internally, so I am only making guesses. I hope example makes it quite understandable.
Purpose:
I'd like to make wrapper around amulecmd, that will make some processing for results searches. Like: archiving, statistics about file availbility (trends in popularity of given files, to show which files to download before they disappear... maybe archiving search results in sqlite3 database?), look for files on ma HDD with simmilar filenames, to suggest "Hey, you have file with simmilar silename, do you want to download it" ... etc.
I wondered about other feature request, some simple C/C++ api, that I could wrap with http://www.swig.org/ to make amulelib accesible thought not only C/C++ but also other programming languages. But I guessed that it might be bigger effort, and maybe not worth , while there is amulecmd, which can be extended in nice way, to make it a reusable "bridge" for other utilities. How do you think?
-
I wondered about other feature request, some simple C/C++ api, that I could wrap with http://www.swig.org/ to make amulelib accesible thought not only C/C++ but also other programming languages.
Sometimes dreams may come true. Btw, there is an incomplete python binding (http://forum.amule.org/index.php?topic=17548.0) that works.
Btw your request makes sense, amulecmd could be turned into a really powerful tool.
-
Hi,
I've checked out "EC for Python" post http://forum.amule.org/index.php?topic=17548.0 (http://forum.amule.org/index.php?topic=17548.0), cloned mercurial repo from https://code.google.com/p/pyamulecmd/ and must say, I have good first impression ;). More comments according this python binding I move to mentioned forum topic.
-
Btw your request makes sense, amulecmd could be turned into a really powerful tool.
Hmm - you mean instead of portable EC bindings, just make a tool that prints (and reads) machine-readable text output and work your way from there?
But for that I'd rather suggest XML syntax. Taking a detail request and print its result as XML output shouldn't be too hard.
-
That makes sense too.
-
To me XML :-\ is overweighted standard.
I prefer using other (also very popular) fast, light and with many programming languages support like:
:D json - http://www.json.org/ (look, how many programming languages supported and how short specification is ! (2 A4 pages comparing to thousands of XML)....
for binary serialization:
:D Protocol Buffers - fast and light machine readable format comes from Google http://code.google.com/apis/protocolbuffers/ and it opensourced ! Originally with C++, Python, java support, but look at ThirdPartyAddony http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns , plenty of other langauges there. (Not to tell about RPC frameworks like http://zeroc.com/ice.html ).
So for it, I would encourage light, simple formats and following http://en.wikipedia.org/wiki/KISS_principle (http://en.wikipedia.org/wiki/KISS_principle), but that's my personal feeling and I understands arugments that xml might make some sense to someone else ;).
-
Coming back to topic of my feature request,
Thank you very much wuischke for help at the topic: "EC for Python" http://forum.amule.org/index.php?topic=17548.0 .
I've managed to achieve my goal ! :D
Here is a code that does "Result detailed" as python script with https://code.google.com/p/pyamulecmd/ .
#!/usr/bin/env python
import ec
def create_link(file):
return "ed2k://|file|%s|%d|%s|/" % (file['name'], file['size'], file['hash'].encode('hex'))
ec_password="pgjxf1!"
ec_host="localhost"
ec_port=8963
e = ec.conn(ec_password, ec_host, ec_port);
res = e.search_results();
x=0
for r in res:
print 'Result-id: ' + str(x)
x = x + 1
print "Filename: %s" % r['name']
print "Size: %d" % r['size']
print "Sources-all: %d" % r['sources']
print "Sources-complete: %d" % r['sources_complete']
print 'ed2k: ' + create_link(r)
print ''
Btw. I haven't thought that I will achieve it at the same evening :D, it's my best after LuaGL opensource experience ;). Thanks again.
-
The basics of XML are not more complex than Json. I wasn't taking about DTD, scheme, whatever of course. Just a little lightweight XML tree with the data. There are pretty tools available to map something like that into a data structure.
But I admit JSON looks nice.
-
json *is* really nice and imo easier to read than XML.
Compare json (array of two objects):
[{"hash": "bcaa0724d034db71dc0e88e369520a20",
"name": "Linux-Knoppix.iso",
"size": 4681994240,
"sources": 8,
"sources_complete": 4},
{"hash": "d40fc1a022333e8d4485d8d29fbe6c7f",
"name": "KNOPPIX_V5.1.1DVD-ES-2007-01-12.iso",
"size": 4195794944,
"sources": 1,
"sources_complete": 1}]
To XML1:
<results>
<result hash="bcaa0724d034db71dc0e88e369520a20" name="Linux-Knoppix.iso" size="4681994240" sources="8" sources_complete="4"/>
<result hash="d40fc1a022333e8d4485d8d29fbe6c7f" name="KNOPPIX_V5.1.1DVD-ES-2007-01-12.iso" size="4195794944" sources="1" sources_complete="1"/>
</results>
and XML2:
<results>
<result>
<hash>bcaa0724d034db71dc0e88e369520a20</hash>
<name>Linux-Knoppix.iso</name>
<size>4681994240</size>
<sources>8</sources>
<sources_complete>4</sources_complete>
</result>
<result>
<hash>d40fc1a022333e8d4485d8d29fbe6c7f</hash>
<name>KNOPPIX_V5.1.1DVD-ES-2007-01-12.iso</name>
<size>4195794944</size>
<sources>1</sources>
<sources_complete>1</sources_complete>
</result>
</results>
The first one with attributes is pretty cryptic and the second one has a lot of noise. Unless one uses Java (which is well optimized for XML), JSON is imho preferable for simple data structures.
-
1 voices for JSON, 1 voice for XML - JSON wins! ;).
Btw. For all who want to serialize data into compact binary format (lice EC does) I recommend to check out Google's Protocolbuffers. They are opensourced, and their purpose is to do fast serialization/deserialization into/from compact binary code.
On the other hand EC could be implemented using protocol buffers, but that's just concept...
now EC is done, designed, documented and it works and look very well so let is be as it is, because it's good :).
Thanks to "wuischke", I've implemented with him my previous feature request in python (code above).
Now I have another feature request for amulecmd (or other utilities, like pyamulecmd).
When downloading something in amuleweb, amulegui, than, there we work with "tabs", representing "categories" (destination folders).
My request is a according to those "Tabs":
* possibility of adding links to given categories like in amuleweb "Download -> Music".
* (and maybe in future...) possibility of defining new, configuring existing "categories"
-
<results>
<result hash="bcaa0724d034db71dc0e88e369520a20"
name="Linux-Knoppix.iso"
size="4681994240"
sources="8"
sources_complete="4"
/>
<result hash="d40fc1a022333e8d4485d8d29fbe6c7f"
name="KNOPPIX_V5.1.1DVD-ES-2007-01-12.iso"
size="4195794944"
sources="1"
sources_complete="1"
/>
</results>
Better? That's XML1 with a little whitespace. I don't find readability different from json. And it's supposed to be machine-readable, so human readability doesn't count so much.
(Man, me advocating for XML. Didn't expect to see that day... ::) )
My request is a according to those "Tabs":
* possibility of adding links to given categories like in amuleweb "Download -> Music".
* (and maybe in future...) possibility of defining new, configuring existing "categories"
Both is possible with amulegui.
-
I must say, Stu is right in that your examples seems a bit biased, wuischke (no intent to hurt your feelings there). XML1 formatted is not different from JSON. I like JSON for what it does, but it's just an extra unneeded dependency for no actual gain.
-
<results>
<result hash="bcaa0724d034db71dc0e88e369520a20"
name="Linux-Knoppix.iso"
size="4681994240"
sources="8"
sources_complete="4"
/>
Ok, now it looks ok ;).
To me it's ok, cause output will be well formatted so reader is not big deal at all.
The worse might be to support xml as input for aMule, cause no guarantees about formatting, only a lot of possibilities coming from xml format.
On the other hand, there are xml parsers for that ;).
So those arguments are ok to me.
What about dependency... I feel it might be not big deal, cause usually json parsers are one, small file you just include to distribution (that's why there are no json specific distro packages, while it's used in many places).
-
My request is a according to those "Tabs":
* possibility of adding links to given categories like in amuleweb "Download -> Music".
* (and maybe in future...) possibility of defining new, configuring existing "categories"
Both is possible with amulegui.
I know that many things are possible in amulegui. But this thread is about, what do we wish amulecmd/pyamulecmd etc, to be possible ;).
-
my dream is aMuleGUI in console form, much like a htop look.
*goes and learns how to read/write code*
-
Start with learning ncurses
-
Looks like Turbo Vision. Cute. :)
Before you start anything, take a screenshot of aMule and a text editor. Try to fit the information into the existing text space. See if you can get anything that looks worth digging deeper into the subject to you.
-
obviously information menus on clients/files/the log, would be on a separate screen, much like how rtorrent handles all the data but keeps the downloads/uploads in the main screen.
example;
(http://img532.imageshack.us/img532/8633/shotr.th.png) (http://img532.imageshack.us/i/shotr.png/)
pressing right arrow on a certain file takes it to info screen;
(http://img7.imageshack.us/img7/6073/22273103.th.png) (http://img7.imageshack.us/i/22273103.png/)