anidb notifications @ systray - programmers needed

Want to help out? Need help accessing the AniDB API? This is the place to ask questions.

Moderator: AniDB

exp
Site Admin
Posts: 2438
Joined: Tue Oct 01, 2002 9:42 pm
Location: Nowhere

anidb notifications @ systray - programmers needed

Post by exp »

Yo,

there has been some request for a way to recieve real-time notifications about file additions to animes which are on ones notification list.
i am willing to write the server part which would be needed for this, however someone would have to write and maintain a window$ client.

technical aspects:
- udp based anidb server listens on port xyz
- client connects and registers with username & pass
- anidb server will send an udp packet for each new notification
- anidb server will send an udp packet for each new message

requirements for the client:
- minimizes to systray
- does no use too much resources (i.e. i don't think it should be written in java)
- shows tooltip on new notifcation and displays state of notifcation by using different systray icons

suggestions:
- left click opens anidb in browser
- right click opens config dialog (user can enter username, pass, and misc options)
- optionally play sound on notify
- optionally disable tooltips and just use different systray icons to display the status
- misc goodies

please feel free to post your ideas about this one.
if you are interested in writing this programm (shouldn't be too much work) please reply to this post.

this is of course not limited to m$ window$. if you're willing to write a client for linux/mac/... feel free to join us :o)

BYe!
EXP
Skywalka
Posts: 889
Joined: Tue Sep 16, 2003 7:57 pm

Post by Skywalka »

why not make it an RSS feed with the URL including the username (and maybe password).

Then it could be all server sided and clients would be already there. Additonally I think you already have an RSS feed running.
exp
Site Admin
Posts: 2438
Joined: Tue Oct 01, 2002 9:42 pm
Location: Nowhere

Post by exp »

creating rss feeds for all users would actually put a lot more load on the server than the udp solution outlined above.

and yes, a normal rdf for all added files does already exist.
but that does not include ones personal notifications and messages.

BYe!
EXP
Skywalka
Posts: 889
Joined: Tue Sep 16, 2003 7:57 pm

Post by Skywalka »

Ok, maybe two scenarios then:

- for the time beeing I'd suggest exploring the idea of RSS feed usage - for example add the grouptag to the feed as a category and then users could simply install an RSS client and just get news about the groups they subscribed too - I usually stick to certain groups.

The notifications ("news") will be collected in the RSS client anyway and the user still gets some kind of popup.

- if you really want to explore the idea of a systray client, I'd strongly suggest that it should be included in AniDB-o-Matic. The client is destined to provide an all-in-one solution for a somewhat offline AniDB sometime in the future and without me wanting to lay too much pressure or additional features on PetriW I think it would be a good idea to keep the number of clients used for anidb to a relative minimum of _one_. That way files can be hashed and corrupt stuff could be weeded out.

I hope some other folks join this discussion, I feel a bit silly talking about stuff other people should do without having to do anything myself. I wish I'd be more of a programmer. Would be a nice project to pick up a new language but ATM I am so stuffed with work I don't find time to sleep :-(

---

small addition: I just read a newsbit on the german IT newspage heise.de. They report about the combination of RSS and BitTorrent. Bittorrent tracker links provides by RSS.

The news can be found here

Basically with every feed update the transmitted BT tracker starts downloading. Call me stupid but I still think this is a great idea ^_^
exp
Site Admin
Posts: 2438
Joined: Tue Oct 01, 2002 9:42 pm
Location: Nowhere

Post by exp »

well,

the UDP API is strictly seperated from the TCP API AoM uses.
AoM could of course someday also support the UDP notification features however to get things started I think a seperate programm would better suit our needs.
bc
1) AoM uses quite a lot of resources while running, so some users might not want to have it running all the time
2) PetriW is swamped in work so it would be better if someone else could take care of this
3) the notifications have nothing to do with adding stuff to mylist or hashing files & co, so there isn't really much code in AoM which could be reused for the UDP notifications.
4) writing a client for the UDP notifications should be pretty easy, my guess would be that one can get a working version within less that two hours. however all the additional goodies ppl will request will probably take a bit more time :P

about the RSS part, well I don't know who's running an RSS client so far but i think most anidb users aren't.
heaving a little exe one can download from anidb, doubleclick on it, enter ones username&password and it just works. is IMHO the better solution for most ppl.

BYe!
EXP
exp
Site Admin
Posts: 2438
Joined: Tue Oct 01, 2002 9:42 pm
Location: Nowhere

Post by exp »

ok,

it seems that the main problem has been solved.
we had troubles with the routing of UDP packets (and this api is based on UDP packets after all :o)

so we're still looking for ppl willing to write a notification client.
if possible multiple ppl so that we can support most operating systems.

if you're interested please reply here or pm me.

BYe!
EXP
ednax
Posts: 5
Joined: Fri Aug 27, 2004 11:14 am

Post by ednax »

Hi,

I'm working on a Notification Tool:

current functions:
- login based on UDP (yay :D )
- register as message-receiving client
- receive and acknowledge incoming message-headers (basic Information, Messages stay "new")
- display incoming messages (unformated, the messages are not stored)
- store miscellaneous information in INI (User, Password (encrypted), Port...)
- support easy to create Language-File (feel free to translate)
- between every UDP-packet 1second break, 30seconds for more than 5 UDP-packets in series (to treat the AniDB Server with care :wink:)
- program hides in Systray (with AniDB Icon :))

Future features:
- all features described in this thread that are not implemented yet. :D
- single fFileinformation (create a ED2k String for a File and gets the AniDB information for the file)

The program is written in Visual Basic 6. It uses about 5MB of Ram. I don't think that I can reduce the memory usage :(

If you have a suggestion for improvement just write me a PM or Mail.


Note:
because I could not work on this program for months, I decided to stop the programming.


cu
Ednax
Last edited by ednax on Wed Jun 15, 2005 11:44 am, edited 1 time in total.
Elberet
Posts: 778
Joined: Sat Jul 19, 2003 8:14 pm

Post by Elberet »

ednax wrote:If you have a suggestion for improvement just write me a PM or Mail.
Just one: write the program in C++... The rather high memory usage for a relatively small program stems from the overhead of the VB runtime libraries.
ednax
Posts: 5
Joined: Fri Aug 27, 2004 11:14 am

Post by ednax »

Elberet wrote:
ednax wrote:If you have a suggestion for improvement just write me a PM or Mail.
Just one: write the program in C++... The rather high memory usage for a relatively small program stems from the overhead of the VB runtime libraries.
I know, but the developement time is going to increase to 1 year if I use c++ :wink: (to create a MD4 sting I'm going to use a c++ DLL, ok? :))

cu
Ednax
ninjamask
Posts: 50
Joined: Mon Apr 12, 2004 10:47 pm
Location: Germany, Cologne
Contact:

Post by ninjamask »

I wanna work on this too. Cuz it would be good opportunity to learn more about Java. In Java classes at school we learn now about GUI design with AWT.

I took a look ahead and tried to inform myself about network programming. TCP seems to be easy... open, read/write, close... but I dun understand how I get UDP to work. >_>

I tried to send "PING" and get "300 PONG" as answer... but i never get an answer. Anyone can help?

Mata ne, ninja~ ^^


PS: May I post the code I tried?
su8zer0
Posts: 20
Joined: Sun May 15, 2005 1:22 pm
Location: Poland
Contact:

Post by su8zer0 »

Okay, is anyone still interested in this topic? I recently started creating this kind of app for my personal use, but if there will be anyone interested in testing/using it then i will try to publish it. Currently it just support log in/logout/ping because i'm having some problems with getting responses from server after registering as listening client, but i hope this will be worked out soon.

App info:
Client name: PKNotif (client string: pknotif)
Current ver: 2
Language: Delphi 7
OS: Windows XP (probably others too)
Features: I'll try to include all that Exp written in his first post.
exp
Site Admin
Posts: 2438
Joined: Tue Oct 01, 2002 9:42 pm
Location: Nowhere

Post by exp »

AFAIK there is still demand for something like this.
And about your connection problems, keep in mind that NAT routers or firewalls may drop UDP "connection" even sooner than the 35 minute timeout the UDP API enforces.
Try if adding an automated PING once every 10 minutes helps.
The next version of the UDP API (available soon) will allow a client to detect whether any NAT enforced changes of the sourceport have taken place. The PING'ing could be enabled/disabled based on that info and/or a configuration option of the client.

BYe!
EXP
su8zer0
Posts: 20
Joined: Sun May 15, 2005 1:22 pm
Location: Poland
Contact:

Post by su8zer0 »

I just noticed something strange. I've registered my client @ AniDB page using version number '2' and now when i'm logging in also using client version '2' i receive reply: 201: New version avaible. If registered client is version 2 and logging client is version 2 then i think API should detect it as current version?
suppy
Posts: 151
Joined: Mon Jan 31, 2005 10:37 am
Location: A House of the Azath

Post by suppy »

well, the current version of the UDP API is 0.0.3, with version string being "3" ..., see here: http://www.anidb.net/wiki/index.php?tit ... Definition
su8zer0
Posts: 20
Joined: Sun May 15, 2005 1:22 pm
Location: Poland
Contact:

Post by su8zer0 »

Nah, that's not what i mean. I was referring to client app version, not the API version (which, when AUTHing is set to '3'). But thanks for the interest anyway :)
Locked