[Back to main page] [Back to project page] [Back to Java AniDB API]
This is only a short introduction to the Java AniDB API. For more information please look at the Javadoc in the documentation section of the project page.
Before you are using this library I recommend to read (or glance through) the following page: UDP API Definition. I think this way you will gain a deeper insight how the communication works, what you should do and what you shouldn't do.
First I will point out that there are two ways of using the library: Beginner can make use of the main methods and do the library all of the work in the background (like flood protection and caching). Experts can configure everything to their needs or do it with their own code by disabling this functions. At least this are the two design goals.
But let's get started with some code:
        The UdpConnectionFactory is the starting point of the
        library. This class will connect you to AniDB and return a
        UdpConnection object which is the main object you have to
        deal all the time:
        
            UdpConnectionFactory factory;
            UdpConnection conn = null;
            
            factory = UdpConnectionFactory.getInstance();
            try {
                conn = factory.connect(1025);
                
                // Here you can insert your queries.
                
            } catch (Throwable t) {
		t.printStackTrace();
	    } finally {
		try {
                    if (conn != null) {
			conn.close();
                    }
		} catch (Throwable t) {
                    t.printStackTrace();
		}
	    }
        
        First you will fetch an instance of the class
        UdpConnectionFactory. After that you connect to AniDB with
        the local port 1025 and get a UdpConnection
        object. If we speak about the
        AniDB UDP API
        we also speaking about
        UDP.
        This is in comparision to
        TCP
        a stateless protocol. So you should allways call the
        close()
        method. Otherwise AniDB will keep the connection open for some time
        which will cause unnecessary load for the server.
    
    
        There are some commands you can use now and some you have to
        authenticate your client and yourself for. Some of the commands which
        works also in the un-authenticate state are
        ping() and
        getServerVersion().
        But for most of the commands you have to authenticate:
        
                conn.authenticate("<anidb username>", "<anidb password>");
        
        or if you want to authenticate your own client instead of the library:
        
                conn.authenticate("<anidb username>", "<anidb password>", "<clientname>", <clientversion>);
        
        For more information see also:
        authenticate(String, String)
        and authenticate(String, String, String, int)
        
        Now you can use all the other commands. One point at the end of the
        guide: The return values from the data command methods.
        All the returned objects are
        POJOs.
        Some of them contain other objects, like objects of the
        Episode class
        which contains a Anime
        object. So if you want to get the anime Id, you have to get the anime
        object from the episode object and get the anime Id from it. Maybe it
        looks a little bit long-drawn-out, but is a design decission for
        extensions in the future (e.g. 1st and 2nd level caching).
        The hashCode() and equals(Object) methods are
        implemented for all classes of net.anidb.* and
        net.anidb.udp.mask.*. But for some classes they are only
        working under special circumstances - as it is not reasonable in every
        state. An example: For the class Anime
        hashCode() and equals(Object) will only
        produce result which make sense if the anime Id is set.
    
[Back to main page] [Back to project page] [Back to Java AniDB API]