https://wiki.anidb.net/wiki/api.php?action=feedcontributions&user=Exp&feedformat=atomAniDB - User contributions [en]2024-03-29T12:59:57ZUser contributionsMediaWiki 1.40.0https://wiki.anidb.net/index.php?title=SSL_Encryption&diff=17220SSL Encryption2013-06-04T21:23:32Z<p>Exp: new SSL CA certificate</p>
<hr />
<div>{{t|1091|Quote from exp on the anidb tracker (2008-04-17 23:43)}}<br />
<br />
URL: https://anidb.net<br />
<br />
*2013-06-04: new ssl certificates*<br />
<br />
ROOT CA: https://static.anidb.net/misc/ca.crt<br />
SHA1 Fingerprint=A6:5A:65:AC:DA:F4:E8:D7:4E:EC:62:C1:1F:8E:77:B9:F7:70:88:37<br />
{{Eyecatch|Please note|<br />
<br />
All requests for images, stylesheets and other page elements are NOT encrypted. Such requests should usually not be directed towards "anidb.net" but rather towards specific subdomains (i.e. "static.anidb.net" or "imgX.anidb.net"). Requests to subdomains do not include the AniDB authentication cookies and should thus not allow attackers to hijack your AniDB session.<br />
<br />
This means that:<br />
<br />
a) If we've accidentially hardcoded an access to http://anidb.net somewhere, this would instantly allow an attacker to obtain your session authorisation cookie.<br />
<br />
b) Attackers may be able to infer the AniDB pages you're browsing on and your AniDB user id by looking at the cookie and referrer data sent to AniDB subdomains when stylesheet and image data is loaded. For maximum security you should browse AniDB with all images and stylesheets disabled.<br />
Or, the recommended approach, use some VPN.}}<br />
<br />
[[Category:Features]]</div>Exphttps://wiki.anidb.net/index.php?title=SSL_Encryption&diff=16043SSL Encryption2011-06-06T20:43:04Z<p>Exp: </p>
<hr />
<div>{{t|1091|Quote from exp on the anidb tracker (2008-04-17 23:43)}}<br />
<br />
URL: https://anidb.net<br />
<br />
*2011-06-06: new ssl certificates*<br />
<br />
ROOT CA: https://static.anidb.net/misc/ca.crt<br />
SHA1 Fingerprint=DA E7 96 C4 58 03 E7 4B AE BA 16 82 A1 B5 CD 5C 26 FD F0 ED<br />
{{Eyecatch|Please note|<br />
<br />
All requests for images, stylesheets and other page elements are NOT encrypted. Such requests should usually not be directed towards "anidb.net" but rather towards specific subdomains (i.e. "static.anidb.net" or "imgX.anidb.net"). Requests to subdomains do not include the AniDB authentication cookies and should thus not allow attackers to hijack your AniDB session.<br />
<br />
This means that:<br />
<br />
a) If we've accidentially hardcoded an access to http://anidb.net somewhere, this would instantly allow an attacker to obtain your session authorisation cookie.<br />
<br />
b) Attackers may be able to infer the AniDB pages you're browsing on and your AniDB user id by looking at the cookie and referrer data sent to AniDB subdomains when stylesheet and image data is loaded. For maximum security you should browse AniDB with all images and stylesheets disabled.<br />
Or, the recommended approach, use some VPN.}}<br />
<br />
[[Category:Features]]</div>Exphttps://wiki.anidb.net/index.php?title=HTTP_/_UDP_Clients&diff=14885HTTP / UDP Clients2010-04-04T09:37:03Z<p>Exp: New page: For now please add your client to the UDP Clients list (even if you're only making use of the HTTP API).</p>
<hr />
<div>For now please add your client to the [[UDP Clients]] list (even if you're only making use of the HTTP API).</div>Exphttps://wiki.anidb.net/index.php?title=Main_Page&diff=14884Main Page2010-04-04T09:33:57Z<p>Exp: </p>
<hr />
<div><div style="width: 47%; padding: 1%; float: left; background-color: #F8FFFF; border: 3px black double; margin-bottom: 1em;"><br />
== About AniDB ==<br />
<br />
'''[[AniDB:About|AniDB]]''' is non-profit database of anime information that is freely open to the public. As well as providing general anime information, if you [[AniDB:Sign up|sign up]] you can organise your anime collection, keep track of what you've seen and how much you liked it, and all kinds of nifty extras. <br />
<br />
To get your own [[MyList]] started, you can either add [[Content:Files|files]] you have on your harddrive, easiest by ''hashing'' them with an [[AniDB Clients|AniDB Client]], or use a [[Files:Generic files|generic]] for anything you've seen in a cinema or own on DVD. Read '''[[How to Add Files to Your MyList|full details]]''' for more.<br />
<br />
Even without a MyList, you can [[Votes|vote]] for various things in AniDB: [[Votes:Anime|anime]], [[Votes:Episodes|episodes]], [[Votes:Groups|groups]] - and comment and vote on [[Votes:Animegroups|groups releases of anime]] and [[AniDB:Review Comments|reviews]] in the database. <!-- If you vote for the anime you've seen you can use the [[Anime Hint|anime hint]] feature to see what else you might like to watch. --><br />
</div><br />
<br />
<div style="width: 47%; padding: 1%; float: right; background-color: #FFF8FF; border: 3px black double; margin-bottom: 1em;"><br />
== Frequently Asked Questions ==<br />
* [[FAQ:Anime|What is anime?]]<br />
* [[FAQ:MyList|How do I add anime to my list?]]<br />
* [[FAQ:Signup|Help! I'm having problems signing up, what's wrong?]]<br />
* [[FAQ:Login problems|Help! I'm having problems logging in! What should I do?]]<br />
* [[FAQ:Website problems|Help! The website is not behaving right! Is it broken?]]<br />
* [[FAQ:Content|The database is missing this anime/file, why don't you add it?]]<br />
* [[FAQ:Creqs|There's a mistake in AniDB, can you fix it?]]<br />
* [[FAQ:Recommendations|What anime should I watch next?]]<br />
* [[FAQ:Pictures|What anime is this picture from?]]<br />
* [[FAQ:Downloads|How do I download anime from the database?]]<br />
* [[FAQ:Chii|Who's Chii, and where do I find her?]]<br />
* [[FAQ:Girls|Who's that girl?]]<br />
<br />
''See the [[FAQ:Index|complete list]] for more.''<br />
</div><br />
<br />
<div style="clear: both; padding: 1em; text-align: center; background-color: #FFFFF8; border: 3px black double; margin-bottom: 1em;"><br />
== Index ==<br />
{| style="background: transparent; text-align: left; width: 100%;"<br />
| valign="top" width="33%" |<br />
=== Using AniDB ===<br />
* [[AniDB:Sign up|Sign up]]<br />
* [[MyList|Keeping track of your anime]]<br />
* [[Votes]]<br />
* [[Search]]<br />
* [[Animeentries|Anime entries]]<br />
* [[MyPlace]]<br />
<!-- * [[Anime Hint]] --><br />
* [[Notifications]]<br />
* [[Donations]]<br />
* [[SigServer|Signature Server]]<br />
| valign="top" width="33%" |<br />
=== Adding Data ===<br />
* [[Content:Anime|Anime]]<br />
* [[Content:Episodes|Episodes]]<br />
* [[Content:Files|Files]]<br />
* [[Content:Companies|Companies]]<br />
* [[Content:Groups|Groups]]<br />
* [[Categories|Categories]]<br />
* [[Categories:Index|Categories - Index]]<br />
* [[Tags]]<br />
* [[Comments]]<br />
* [[Content:Songs|Songs]]<br />
* [[Content:Staff Credits|Staff Credits]]<br />
* [[Content:Creators|Creators]]<br />
* [[Content:Characters|Characters]]<br />
* [[Tutorial:How to Add Files for Dummies!|How to Add Files for Dummies!]]<br />
| valign="top" width="33%" |<br />
=== Guidelines ===<br />
* [[Content:Filecomments|Filecomments]]<br />
* [[AniDB:Review Guideline|Review Guideline]]<br />
* [[AniDB:Review Comments|Review Comments]]<br />
* [[AniDB:Dates|Dates]]<br />
* [[Capitalisation]]<br />
* [[AniDB Definition:Romanisation|Romanisation]]<br />
* [[Content:Edit|Changing Data]]<br />
* [[AniDB:Creq Guideline|Creq Guideline]]<br />
|-<br />
| valign="top" |<br />
=== IRC ===<br />
* [[IRC:anidb|#anidb]]<br />
* [[IRC:anidb-log|#anidb-log]] and other [[IRC:Channels|channels]]<br />
* [[IRC:Chii|Chii[AR]]] and other [[IRC:Bots|channel bots]]<br />
* UTF-8 for [[How to get UTF-8 to work with mIRC|mIRC]]/[[Utf8/irssi|irssi]]<br />
=== How to use the AniDB ... ===<br />
* [[How to use the AniDB wiki?|wiki?]]<br />
* [[How to use the AniDB IRC?|IRC?]]<br />
* [[How to use the AniDB forum?|forum?]]<br />
* [[Bugtracker|Bugtracker?]]<br />
| valign="top" |<br />
=== Clients ===<br />
* [[AniDB Clients]]<br />
* [[AniDB O'Matic]]<br />
* [[WebAOM]]<br />
* [[UDP Clients]]<br />
* [[Avdump]]<br />
* [[API|API - How to interface with AniDB]]<br />
* [[UDP API Definition]]<br />
* [[UDP API DEV]]<br />
* [[HTTP API Definition]]<br />
| valign="top" |<br />
=== Technical ===<br />
* [[Profile#CSS Tab|CSS Themes]]<br />
* [[MyList export template guidelines|AniDB MyList Export Templates]]<br />
* [[Browser-Internal AniDB Search]]<br />
* [[AniDB RTE|Rich Text Editor]]<br />
* [[How to take a screenshot]]<br />
* [[ZIDRAV]]<br />
* [[QuickPar]]<br />
* [[Ed2k-hash]]<br />
* [[Routine Maintenance]]<br />
* [[Shadow Files]]<br />
* [[Scripts]]<br />
* [[Development]]<br />
|}<br />
<br />
''[[Special:Allpages|Complete list of pages on the wiki]]''<br />
</div><br />
<br />
<div style="border-bottom: 3px double #AAAAAA; border-top: 3px double #AAAAAA; font-size: small; color: #666666; text-align: center;"><br />
For further help with a problem or just for chatting visit us on [[IRC:anidb|IRC]]:<br />
<br />
{{IrcLink|anidb}}<br />
</div><br />
__NOTOC__<br />
__NOEDITSECTION__</div>Exphttps://wiki.anidb.net/index.php?title=UDP_API_Definition&diff=11291UDP API Definition2008-11-30T22:50:19Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
== General Information ==<br />
'''Author:''' [[User:Exp|Exp]] & [[User:Epoximator|Epoximator]]<br><br />
'''Version:''' 0.03.035 (2007-05-06)<br><br />
'''Version number used for protover parameter:''' "3"<br />
<br />
'''IMPORTANT INFORMATION FOR ALL INTERESTED:'''<br />
* If you are mainly interested in notifications and private messaging, check out our [[Jabber]] and [[RSSRDF]] support first.<br />
* The UDP API is not an appropriate choice if you desire to download a local copy of the AniDb database.<br />
* If you want to create a client you have to register it [http://anidb.info/perl-bin/animedb.pl?show=client here] and [[UDP_Clients|here]].<br />
** Check out the clients that are being developed. There exists usable code in many different languages already.<br />
* If you have suggestions for improvements or new features use the [[UDP_API_DEV|development]] page.<br />
* Please also take a look at the [[API|API]] page.<br />
<br />
== Formats used in this Spec ==<br />
* {vartype varname} - Specifies what shall be inserted at this point and its type.<br />
* [...] - Everything between [ and ] is optional.<br />
<br />
=== Used types ===<br />
* ''int2'' - 2 byte Integer (in string representation)<br />
* ''int4'' - 4 byte Integer (in string representation)<br />
* ''boolean'' - true or false - use '1' for ''true'', '0' for ''false''<br />
* ''str'' - String (UDP packet length restricts string size to 1400 bytes)<br />
* ''hexstr'' -- a hex representation of a decimal value, two characters per byte. If multiple bytes are represented, byte one is the first two characters of the string, byte two the next two, and so on.<br />
<br />
=== Content Encoding ===<br />
* Default character encoding: ''ASCII''<br />
* Escape scheme for option values (to server): ''html form encoding'' + ''newline''<br />
** This means you have to encode at least <tt>&</tt> in your option values in html form encoding style (<tt>&amp;amp;</tt>) before sending them to the api server. All other html form encodings are optional.<br />
** All newlines should be replaced by &lt;br /&gt;<br />
* Escape scheme for returned data fields (from server): ', | and newline<br />
** Newlines are encoded as &lt;br /&gt;, ' is encoded as ` and | is not allowed in data fields.<br />
<br />
== Basics ==<br />
<br />
=== General ===<br />
The network communication is ''packet'' and ''line'' based. Each ANIDB API command is exactly one UDP packet containing one line. Results are sent as one packet but may consist out of multiple lines. A return value always starts with a 3 byte result code followed by a human redable version of the result code. Be aware that important data fields may be returned directly after the return code (see: 200,201,271,272,504).<br />
The meaning for all result codes can be found in this document. If there is more than one entry returned, it's one entry per line. Lines are terminated by a <tt>\n</tt> (no dos linefeed <tt>\r</tt>). The elements of a format string are seperated by a "|" character.<br />
<br />
<tt>{three digit return code} {str return string}\n</tt><br><br />
<tt>{data field 0}|{data field 1}|...|{data field n}</tt><br />
<br />
'''IMPORTANT:'''<br />
* All commands except PING, ENCRYPT, ENCODING, AUTH and VERSION '''requires''' login, meaning that the ''session tag'' must be set (<tt>s=xxxxx</tt>).<br />
* A client should ignore any additional trailing data fields it doesn't expect. Additional fields are going to be added to the output of some commands from time to time. Those additional fields will simply be appended to the end of the existing output. A client should be written in a way so that it is not affected by such new fields.<br />
* Due to the length constraints of an UDP package (over PPPoE) the replies from the server will never exceed 1400 bytes. String fields will be truncated if necessary to ensure this. No warnings are given when this happens.<br />
* A client should handle all possible return codes for each command.<br />
** Possible return codes for '''all commands''':<br />
*** 505 ILLEGAL INPUT OR ACCESS DENIED<br />
*** 555 BANNED<br />
***: {str reason}<br />
*** 598 UNKNOWN COMMAND<br />
*** 600 INTERNAL SERVER ERROR<br />
*** 601 ANIDB OUT OF SERVICE - TRY AGAIN LATER<br />
*** 602 SERVER BUSY - TRY AGAIN LATER<br />
** Additional return codes for all commands that '''require login''':<br />
*** 501 LOGIN FIRST<br />
*** 502 ACCESS DENIED<br />
*** 506 INVALID SESSION<br />
<br />
{{eyecatch|NOTE:| The '555 BANNED' message should not be expected by the client. This message is only enabled temporary to help developers understand what they are doing wrong.}}<br />
<br />
{{eyecatch|NOTE:|<br />
While in daily maintenance the AniDB API will reply with<br />
<br />
601 ANIDB OUT OF SERVICE - TRY AGAIN LATER<br />
<br />
to all commands. If a client recieves such a return value it should wait at least 30 minutes before trying again.<br />
}}<br />
<br />
=== Server / UDP Connection ===<br />
The Client has to send data packets to:<br />
* '''Server:''' api.anidb.info<br />
* '''Port:''' 9000/UDP<br />
The servername and port should not be hardcoded into a frontend but should be read from a configuration file.<br />
=== Server Errors ===<br />
* At any time the API might return a fatal error of the form:<br />
: <tt>6xx ERROR DESCRIPTION</tt><br />
* Possible codes are 600-699.<br />
* Occurrences of these errors (except 601) should be reported to [[User:Ommina|Ommina]].<br />
{{eyecatch|NOTE:| 6XX messages do not always return the tags given with the command which caused the error!}}<br />
<br />
=== Connection Problems ===<br />
There are many ways for a client to end up banned or the API might currently be handling too many concurrent connections.<br />
If a client does not get any reply to an AUTH command it should start to increase the retry delay exponentially with every failed login attempt. (i.e. try again after 30 seconds if the first login attempt failed, if the second fails too retry after 2 minutes, then 5 minutes, then 10 minutes, then 30 minutes, ... until you reach a retry delay of ~2-4h.)<br />
<br />
=== Local Port ===<br />
A client should select a fixed local port >1024 at install time and reuse it for local UDP Sockets. If the API sees too many different UDP Ports from one IP within ~1 hour it will ban the IP. (So make sure you're reusing your UDP ports also for testing/debuging!)<br />
<br />
The local port may be hardcoded, however, an option to manually specify another port should be offered.<br />
<br />
'''Note when behind a [http://en.wikipedia.org/wiki/Network_address_translation NAT]/masquerading router:'''<br/><br />
A session between the server and a client is identified by the ''ip and port'' used by the client. So when the port (or ip) changes within a session the client has to authenticate again. If a client is behind a nat router it can’t actually control the local port used for the connection. The router will normally ''translate'' the port to support several computers on a lan to share the internet connection. The public port (as determined by the router and seen by the server) which has been assigned to the connection will only be reserved for as long as it is in use. This means that the router will usually ''deallocate the port after a fixed timeout period'' (i.e. 5, 10 or 15 minutes). Once that happens the client will no longer be able to receive UDP messages from the server (the messages will be discarded as undeliverable by the router) and a new port will be selected once the client tries to send a message to the server (which will result in a new connection session - NOTE: this could get you banned!, see above). So in order to keep a session over a NAT router alive, the client has to ping the server within this period to prevent a timeout.<br />
<br />
The client can decide whether it is behind a NAT router or not by adding <tt>nat=1</tt> to the AUTH command. This will cause the response to include the ip and port as seen by the server. If the port differs from the port reported by the local socket, the connection subject to NAT and the client should issue PING commands in regular intervals. Please do not send pings more often then once every 5 minutes and only on connections via NAT routers or if the user has explicitly enabled regular keepalive pings via a configuration setting (default setting should be OFF).<br />
<br />
=== Flood Protection ===<br />
To prevent high server load the UDP API server enforces a strict flood protection policy.<br />
* Short Term:<br />
** A Client MUST NOT send more than 0.5 packets per second.<br />
** The server will start to enforce the limit after the first 5 packets have been recieved.<br />
* Long Term:<br />
** A Client MUST NOT send more than one packet every 30 seconds over an extended amount of time.<br />
** ''An extended amount of time'' is not defined. Use common sense.<br />
<br />
Once a client exceeds a rate limit all further UDP packets from that client will be dropped without feedback until the client's packet rate is back down to acceptable levels.<br />
<br />
{{eyecatch|NOTE:| Dropped packets are still taken into account for the packet rate. Meaning if you continuously send packets your client will be banned forever.}}<br />
<br />
Generally clients should be written in a way to minimize server and network load. You should always keep that in mind.<br />
<br />
Abusive clients may be banned completly.<br />
<br />
{{eyecatch|NOTE:|<br />
If you suddenly stop getting replies from the AniDB API or you normally don't have a noteable packetloss and from one point on you suddenly note a high packetloss percentage you have most likely entered a critical flood ratio.<br />
If the AniDB API isn't answering at all it might either be down or you have been banned, this is normally caused by vialoating the API specs (i.e. too many connections using different ports from one ip, too many auth failures, ...) (usually lasts 30 minutes).<br />
If you're experiencing packet loss you have probably reached the rate limit and the API starts to randomly drop incoming packets from your IP. (can be solved by enforcing a delay between multiple commands when you're sending a batch)<br />
}}<br />
<br />
=== Anti Leech Protection ===<br />
The API should not be used to "download" AniDB. If such attempts are detected you will get banned.<br />
<br />
=== Caching ===<br />
To minimize server and network load a client should use local caching in order to prevent repeated API requests for the same data.<br />
<br />
A client should locally cache FILE/EP/ANIME/GROUP/... info wherever possible for extended amounts of time.<br />
(I.e. if a client is used to scan a local folder with anime files and add them via API to a users mylist then it shall only ask for all files in the first run and cache the info for all files known to AniDB. If run again over the same folder it shall only check those files which were unknown to anidb at the time of the last check.)<br />
<br />
Later versions of the API might enforce this by banning clients which ask for the same information more than once every week/month.<br />
<br />
=== Tag option ===<br />
The api will add a user defined string at the beginning of each reply line seperated with a space, if desired.<br />
* To enable add the <tt>tag={str usertag}</tt> option to a command.<br />
* A tag is only valid for the command it was send with, meaning it is not persistent. If you want to have tags in front of all reply lines you will have to append the tag option to each command you send to the server.<br />
* Tags are ment to enable a client to handle more than one request/reply at a time.<br />
<br />
Usage example:<br />
AUTH user=baka&pass=baka&protover=25&client=someclient&clientver=1&tag=abc123<br />
abc123 200 Jxqxb LOGIN ACCEPTED<br />
or<br />
LOGOUT s=Jxqxb&tag=byebye<br />
byebye 203 LOGGED OUT<br />
<br />
{{eyecatch|NOTE:| The tag option is valid for all api commands and is thus not explicitly listed in the description of each command.}}<br />
<br />
=== Data Indexes (fid,aid,eid,gid,lid) ===<br />
* All indexes start at 1 (not 0).<br />
* It is possible for table entries to have id fields with a value of 0 (i.e. gid). Those are to be interpreted as "NONE" or "NULL". <br />
* An ID is '''never''' reused. That means after an entry is deleted no new entry will ever have that ID again.<br />
* Mylist IDs (lid) are globally unique, not per-user unique.<br />
<br />
== Authing Commands ==<br />
{{eyecatch|NOTE:| _ANY_ command which requires parameters may return: 505 ILLEGAL INPUT OR ACCESS DENIED<br />
}}<br />
<br />
----<br />
=== AUTH: Authing to the AnimeDB ===<br />
'''Command String:'''<br />
* AUTH user={str username}&pass={str password}&protover={int4 apiversion}&client={str clientname}&clientver={int4 clientversion}[&nat=1&comp=1&enc={str encoding}&mtu{int4 mtu value}]<br />
<br />
'''Possible Replies:'''<br />
* 200 {str session_key} LOGIN ACCEPTED<br />
* 201 {str session_key} LOGIN ACCEPTED - NEW VERSION AVAILABLE<br />
* 500 LOGIN FAILED<br />
* 503 CLIENT VERSION OUTDATED<br />
* 504 CLIENT BANNED - {str reason}<br />
* 505 ILLEGAL INPUT OR ACCESS DENIED<br />
* 601 ANIDB OUT OF SERVICE - TRY AGAIN LATER<br />
when nat=1<br />
* 200 {str session_key} {str ip}:{int2 port} LOGIN ACCEPTED<br />
* 201 {str session_key} {str ip}:{int2 port} LOGIN ACCEPTED - NEW VERSION AVAILABLE<br />
<br />
'''Info:'''<br />
{{eyecatch|NOTE:| The password is the normal AniDB website password! The password listed in the profile as API Password in only used for the optional encryption feature.}}<br />
* The ''session_key'' is a String containing only ''a-z,A-Z,0-9'' chars of a length of ''4-8'' characters.<br />
: It has to be stored by the client and needs to be sent as parameter with every command which requires the user to logged in.<br />
* The ''session_key'' String is appended as parameter "s", i.e. "PUSH notify=1&msg=1&s={str session_key}".<br />
* On a '''500 LOGIN FAILED''' message the client should request the user to enter username and password again.<br />
* In case of a '''501 LOGIN FIRST''' message the client should silently resend an auth command and send the failed command again.<br />
* A '''502 ACCESS DENIED''' message should abort the current action on the client side and display a message to the user.<br />
* A '''503 CLIENT VERSION OUTDATED''' message states that the udp server has been updated and does not support your client any longer. (protover is too low). A 201 message referes to a new version of the client software.<br />
* A '''506 INVALID SESSION''' means that either the session key parameter "s" was not provided with a command that requires it or the session key is no longer valid. The client should reissue an AUTH command.<br />
{{eyecatch|NOTE:| A frontend shall expect 501 and 502 messages to be returned on ANY command.}}<br />
{{eyecatch|NOTE:| Anidb usernames are always lowercase and may only contain characters (a-z) and numbers (0-9).}}<br />
* The client should silently convert all entered usernames to lowercase before sending them to the API.<br />
* The client should send the apiversion of the AnimeDB API version it supports as value of the protover parameter.<br />
* The client MAY NOT send anything but the version of the API Specs the author used to write the client! (as it is stated at the top of this file @ "Version number used for protover parameter")<br />
: The API will compare that value to it's own version of the API and if the version of the client is older the API will decide wheter the changes were significant enough to deny the old client access to the DB.<br />
* The clientname shall be a lowercase string containing only the chars ''a-z'' of ''4-16 chars'' length which identifies the client. (i.e. mykickassclient)<br />
* The clientversion shall be a number starting with 1, increased on every change in the client.<br />
: clientname and clientversion might be used by the API to distinguish between different clients and client versions if that should ever become nessecary.<br />
{{eyecatch|IMPORTANT:|<br />
* DO NOT use the clientname of another existing client.<br />
* ALWAYS increase the clientversion number if you release a new client version.<br />
}}<br />
* A Login and its assigned ''session_key'' is valid until the virtual UDP connection times out or until a LOGOUT command is issued.<br />
* The virtual UDP connection times out if no data was recieved from the client for '''35 minutes'''.<br />
* A client should issue a UPTIME command once every 30 minutes to keep the connection alive should that be required.<br />
* If the client does not use any of the notification/push features of the API it should NOT keep the connection alive, furthermore it should explicitly terminate the connection by issueing a LOGOUT command once it finished it's work.<br />
* If it is very likely that another command will be issued shortly (within the next 20 minutes) a client may keep the current connection open, until it times out on it's own, by not sending a LOGOUT command.<br />
* The client shall notify the user if it recieved a 201 message at login.<br />
: This means a new version of the client is available, however the old version is still supported otherwise a client banned message would have been returned.<br />
* The user should get a popup message on 503 and 504 messages telling him to update his client software.<br />
: (NOTE: 504 means that this version of the client is banned, not the user!)<br />
* The 'nat' option makes the client able to detect whether it is behind a nat router or not. When the client is behind a nat router it should keep the "connection" alive with the PING command.<br />
{{eyecatch|IMPORTANT:| Make sure your client handels ALL possible AUTH return codes before giving out any versions!}}<br />
* When ''enc=x'' is defined the server will change the encoding used to x. <br />
**If the encoding is supported it will change right away (including the response) and be reset on logout/timeout.<br />
**If not supported then the argument will be silently ignored. Use ENCODING to test what works.<br />
**Supported encodings are [http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html these].<br />
* ''comp=1'' means that the client supports compression ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/zip/Deflater.html DEFLATE]).<br />
**The server will compress (instead of truncating) the datagrams when needed if this option is enabled.<br />
**The first two bytes of compressed datagrams will always be set to zero. (So tags should never start with that.)<br />
* Default [http://en.wikipedia.org/wiki/MTU_(networking) ''MTU''] is 1400. Minimum allowed is 400, maximum 1400, due [http://en.wikipedia.org/wiki/Point-to-Point_Protocol_over_Ethernet PPPoE].<br />
<br />
----<br />
<br />
=== LOGOUT: Logout ===<br />
'''Command String:'''<br />
* LOGOUT<br />
<br />
'''Possible Replies:'''<br />
* 203 LOGGED OUT<br />
* 403 NOT LOGGED IN<br />
<br />
'''Info:'''<br />
* This command only works if you are already logged in.<br />
* A logout should ALWAYS be issued if the client is currently logged in and is either exiting or not expecting to send/receive any anidb api packets for the next >= 30 minutes.<br />
<br />
----<br />
<br />
=== ENCRYPT: Start Encrypted Session ===<br />
Will cause all future messages from the server, except the first (the reply to the ENCRYPT command itself), to be encrypted (128 bit [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES]). The client will also have to encrypt all future requests sent to the server. All non-encrypted messages will be discarded by the server. The encryption key is the [http://en.wikipedia.org/wiki/MD5 MD5] hash of a special ''API Password'' (defined in the users profile) concatenated with the salt string as given in the reply to the ENCRYPT message. A normal AUTH message is still necessary to authenticate and should follow the ENCRYPT command once the API has acknowledged the encryption.<br />
<br />
'''Command String:'''<br />
* ENCRYPT user={str name}&type={int2 type}<br />
<br />
'''Possible Replies:'''<br />
* 209 {str salt} ENCRYPTION ENABLED<br />
* 309 API PASSWORD NOT DEFINED<br />
* 509 NO SUCH ENCRYPTION TYPE<br />
* 394 NO SUCH USER<br />
<br />
'''Info:'''<br />
* ''user'' is the user name.<br />
* ''type'' is the type of encryption; 1 => 128 bit AES (only one defined).<br />
* ''API Password'' is the one defined in the profile settings [http://anidb.info/perl-bin/animedb.pl?show=profile page].<br />
* It is not possible to disable the encryption once enabled while staying logged in.<br />
** A logout (the logout message needs to be correctly encrypted) or timeout will disable the encryption.<br />
* In order to minimize server load, encryption should be disabled by default and should have to be enabled manually by the user in the configuration options.<br />
* The encryption key is md5(api_password_of_user+''salt'').<br />
* Padding of the message needs to be done according to the PKCS5Padding scheme.<br />
<br />
<br />
== Notify Commands ==<br />
<br />
=== Introduction ===<br />
<br />
Broadly speaking, notifications provide an indication to the client that some event has occurred within the AniDB database.<br />
<br />
There are three types:<br />
* New file [[Notifications|notification]]. (Only anime type supported.)<br />
* New private message notification.<br />
* New buddy event notification.<br />
<br />
Note that, while a user can subscribe to multiple 'new file' events (see [[Notifications|notifications]]), at present, the UDP API only supports notifications of new files by anime. New files by group, or new files by producer, are NOT presently supported. Just the same, keeping in mind that the API is designed to potentially support such notifications in the future will help in understanding why some of the commands are structured the way they are.<br />
<br />
The word "notification" is also used a bit inconsistently in this document. An AniDB notification is originally a "new file [[Notifications|notification]]". It might be more correct to use the term "event" for the original "happening" and then "notification" as the means to notify the user (client). New-file, new-message, buddy-* and going-down are all events that results in notifications. Only the first two type of events are persistent, though, meaning they exist and remain in the same state until some user action affects them.<br />
<br />
=== Getting Notifications ===<br />
<br />
Clients that wish to receive notifications have two routes available to them. They are by no means mutually exclusive and selecting one does not imply a client is unable to use commands from another.<br />
<br />
'''Method One: Polling'''<br />
<br />
With this method, the client contacts the server at some interval (no more than once every 20 minutes) to see if there are new file notifications waiting. If there are, the client can the get further details of the files in question. This is analogous to checking an email server every half hour to see if new email has arrived.<br />
<br />
Its principal advantage is that it is easy to design and code. Blocking sockets are sufficient as the client can expect the reply received to correspond with the command sent.<br />
<br />
The disadvantage of this approach is that it introduces a delay and some uncertainty in receiving notifications. If, for example, the user clears the notification on the website before the client collects it, the client will not learn of the new file. Similarly, if the user does not dismiss notifications via the site, the client will have an increasing amount of stale data to work though. Finally, notifications cleared by the client also clears them from the website, so users will need to be made aware of what is going on.<br />
<br />
A polling HOWTO:<br />
<br />
* Use NOTIFY (no more than once every 20 minutes) to get the number of pending notifications<br />
* IF there are new notifications pending, use NOTIFYLIST to get a list of notification types and associated IDs.<br />
* Use NOTIFYGET to receive a notification, suppling the ID provided by NOTIFYLIST<br />
* Use NOTIFYACK to acknowledge a notification, suppling the ID provided by NOTIFYLIST (if desired)<br />
<br />
<br />
{{eyecatch|NOTE|The ID supplied by NOTIFYLIST will be the ID of the affected notification type. Since, at present, only the anime type is supported, this value is always an aid. In the future, it may represent a group or producer ID. In these cases, the str '''type''' value will indicate what entity the ID represents.}}<br />
<br />
'''Method Two: Server PUSH'''<br />
<br />
With this method, the server takes the active role in advising the client that a new file has arrived. The client must register with the server to receive these advisements, and will be responsible for keeping the login session from timing out, and any NAT router ports open. The UDP packet is sent to the ip and port from which the AUTH command was recieved.<br />
<br />
This method compensates for the disadvantages of the polling method, but is more difficult to code. Blocking sockets are no longer an option, nor can a client make any assumptions that an incoming packet will necessarily be a reply to the last command sent. The tag option may be helpful here.<br />
<br />
A PUSH HOWTO:<br />
<br />
* PUSH to register your client session.<br />
* Listen for 271-274 NOTIFICATIONs ('''not 290''').<br />
* Use PUSHACK to to acknowledge the notification using the nid supplied with NOTIFICATION<br />
* Use NOTIFYGET to receive a notification, suppling the relid provided by NOTIFICATION (NOT the packet ID)<br />
* Use NOTIFYACK to acknowledge a notification, suppling the relid provided by NOTIFICATION (if desired)<br />
* Use UPTIME (with an interval between 30 and 35 minutes) to keep login session valid<br />
<br />
<br />
It is probably a good idea to use tags to separate NOTIFICATIONs from the other communication. NOTIFICATIONs will '''never''' have tags.<br />
<br />
<br />
=== PUSH: UDP Notification Registration ===<br />
Register your client as an observer for anidb notification events for the current user. If you are registered for one or more event types the anidb server will send an UDP packet (format see below) on each change which affects the current user.<br />
<br />
'''Command String:'''<br />
* PUSH notify={boolean on_new_file}&msg={boolean on_new_private_message}[&buddy={boolean on_buddy_event}]<br />
<br />
'''Possible Replies:'''<br />
* 270 NOTIFICATION ENABLED<br />
OR (if both values are 0)<br />
* 370 NOTIFICATION DISABLED<br />
<br />
'''Info:'''<br />
* A client which has registered to recieve UDP notification packets must:<br />
** Issue a PUSHACK command for each notification received with ''notify_packet_id'' provided in the notification packet.<br />
** Use PING to keep the connection alive (< 30 min).<br />
** Use UPTIME to ensure that the session is OK (>= 30 min).<br />
* Every notification generated is resent 3 times unless acknowleged. After that the client is logged out.<br />
<br />
====Notification Packet Format====<br />
'''New File Notify:'''<br />
<br />
271 {int4 notify_packet_id} NOTIFICATION<br />
{int4 relid}|{int4 date}|{int4 count}|{str relname}|{int2 reltype}|{int2 priority}<br />
<br />
* relid is the id of the related entry (anime, group)<br />
* date is the time of the event (in seconds since 1.1.1970)<br />
* count is the number of events pending for type<br />
* relname is the name of the related entry<br />
* reltype is: 1 = anime, 2 = group, 3 = producer<br />
* priority is: 0 = low, 1 = medium, 2 = high<br />
<br />
{{eyecatch|NOTE| Group (and producer) related file notifications are not implemented yet.}}<br />
<br />
'''New Private Message Notify:'''<br />
<br />
272 {int4 notify_packet_id} NOTIFICATION<br />
{int2 type}|{int4 date}|{int4 sent_by_uid}|{str sent_by_name}|{str subject}|{str body}|{int mid}<br />
<br />
* type is the type of the message (0=normal msg, 1=annonymous, 2=system msg, 3=mod msg)<br />
* date is the time the message was sent (in seconds since 1.1.1970)<br />
* senderuid/sendername are the user id and username of the sender<br />
* subject is the message subject<br />
* body is message body (can be truncated)<br />
* mid is message id and can be used with NOTIFYACK<br />
<br />
'''Buddy Event Notify:'''<br />
273 {int4 notify_packet_id} NOTIFICATION<br />
{int4 buddy uid}|{int2 event type}<br />
* Possible event types:<br />
** 0 => LOGIN<br />
** 1 => LOGOUT<br />
** 2 => ACCEPTED<br />
** 3 => ADDED<br />
<br />
'''Going Down Event Notify:'''<br />
274 {int4 notify_packet_id} NOTIFICATION<br />
{int4 time offline}|{int4 comment}<br />
<br />
* Clients with any notification on will receive the GOINGDOWN message before the API goes offline.<br />
* Time offline is the time in minutes the API will be down, 0 if indefinite (client can direct user to the anidb site for status updates).<br />
* The comment is a short explanation for the downtime.<br />
* Only one datagram will be sent, and the server will not listen for replies.<br />
----<br />
<br />
=== PUSHACK: UDP Notification Acknowledge ===<br />
Used to acknowledge notification packets (271-274). A client must be prepared to issue this command before using '''PUSH'''.<br />
<br />
'''Command String:'''<br />
* PUSHACK nid={int4 notify_packet_id}<br />
<br />
'''Possible Replies:'''<br />
* 280 PUSHACK CONFIRMED<br />
* 380 NO SUCH PACKET PENDING<br />
<br />
'''Info:'''<br />
* See: '''PUSH'''<br />
<br />
----<br />
=== NOTIFY: Notifications ===<br />
Get number of pending notifications (and number of online buddies).<br />
<br />
'''Command String:'''<br />
* NOTIFY [buddy=1]<br />
<br />
'''Possible Replies:'''<br />
* 290 NOTIFICATION<br />
: {int4 pending_file_notifications}|{int4 number_of_unread_messages}<br />
when ''buddy=1''<br />
* 290 NOTIFICATION<br />
: {int4 pending_file_notifications}|{int4 number_of_unread_messages}|{int4 number_of_online_buddies}<br />
<br />
'''Info:'''<br />
* If the client did send a NOTIFY within the last 35 minutes and it was confirmed by AniDB then recieving a 501 LOGIN FIRST message for the next NOTIFY command shows that AniDB logged the client out because it did not respond to a PUSH Notification packet.<br />
* There is no command to retrieve missed PUSH Notifications.<br />
{{eyecatch|NOTE| This command MUST NOT be issued more than once every 20 minutes.}}<br />
<br />
----<br />
<br />
=== NOTIFYLIST: List Notification/Message IDs ===<br />
List id of all pending (not acknowledged) ''new private message'' and ''new file'' notifications. Buddy events are not acknowledgeable.<br />
<br />
'''Command String:'''<br />
* NOTIFYLIST<br />
<br />
'''Possible Replies:'''<br />
*291 NOTIFYLIST<br />
: {str type}|{int4 id}<br />
: {str type}|{int4 id}<br />
: ...<br />
<br />
'''Info:'''<br />
* type is:<br />
: M for message entries<br />
: N for notification entries<br />
* id is the identifier for the notification/message as required by NOTIFYGET. For messages it is the actual message id, for notifications it is the id of the related type; anime, group or producer. Since only file notifications related to anime is implemented atm, it is the anime id (aid).<br />
* NOTIFYLIST returns one line per entry, if no entries are available only the first line of the reply is returned.<br />
{{eyecatch|NOTE| This command MUST NOT be issued regulary but should only be triggered by either a push message recieved by the client or a reply to a NOTIFY command which tells you that there are messages/notifications waiting.}}<br />
<br />
----<br />
<br />
=== NOTIFYGET: Get Notification/Message ===<br />
Receive private message or file notification.<br />
<br />
'''Command String:'''<br />
* NOTIFYGET type={str type}&id={int4 id}<br />
<br />
'''Possible Replies:'''<br><br />
when type = M<br />
* 292 NOTIFYGET<br />
: {int4 id}|{int4 from_user_id}|{str from_user_name}|{int4 date}|{int4 type}|{str title}|{str body}<br />
* 392 NO SUCH ENTRY<br />
when type = N<br />
* 293 NOTIFYGET<br />
: {int4 relid}|{int4 type}|{int2 count}|{int4 date}|{str relidname}|{str fids}<br />
* 393 NO SUCH ENTRY<br />
<br />
'''Info:'''<br />
* type is:<br />
: M for message entries<br />
: N for notification entries<br />
* id is the identifier for the notification/message as given by NOTIFYLIST (or ''relid'' from 271 NOTIFICATION and mid from 272 NOTIFICATION)<br />
* for message entries (M):<br />
: date is the time of the event (in seconds since 1.1.1970)<br />
: type is the type of the message (0=normal msg, 1=annonymous, 2=system msg, 3=mod msg)<br />
* for notification entries (N):<br />
: relid is the id of the related type (anime)<br />
: relname is the name of the related type (anime)<br />
: type is the notification type (0=all, 1=new, 2=group, 3=complete)<br />
: count is the number of events pending for this subscription<br />
: date is the time of the event (in seconds since 1.1.1970)<br />
: fids is a comma separated list with the affected file ids<br />
----<br />
<br />
=== NOTIFYACK: Acknowledge Notification/Message ===<br />
This command will mark a message read or clear a ''new file'' notification. Buddy events are not acknowledgeable.<br />
<br />
'''Command String:'''<br />
* NOTIFYACK type={str type}&id={int4 id}<br />
<br />
'''Possible Replies:'''<br><br />
when type = M<br />
* 281 NOTIFYACK SUCCESSFUL<br />
* 381 NO SUCH ENTRY<br />
when type = N<br />
* 282 NOTIFYACK SUCCESSFUL<br />
* 382 NO SUCH ENTRY<br />
<br />
'''Info:'''<br />
* type is:<br />
: M for message entries<br />
: N for notification entries<br />
<br />
== Buddy Commands ==<br />
Group of commands used to administrate your buddylist.<br />
<br />
=== BUDDYADD: Add a user to Buddy List ===<br />
'''Command String:'''<br />
* BUDDYADD uid={int4 buddy uid}<br />
* BUDDYADD uname={int4 buddy name}<br />
'''Possible Replies:'''<br />
* 394 NO SUCH USER<br />
* 255 BUDDY ADDED<br />
* 355 BUDDY ALREADY ADDED<br />
<br />
----<br />
<br />
=== BUDDYDEL: Remove a user from Buddy List ===<br />
'''Command String:'''<br />
* BUDDYDEL uid={int4 buddy uid}<br />
'''Possible Replies:'''<br />
* 356 NO SUCH BUDDY<br />
* 256 BUDDY DELETED<br />
<br />
----<br />
<br />
=== BUDDYACCEPT: Accept user as Buddy ===<br />
'''Command String:'''<br />
* BUDDYACCEPT uid={int4 user uid}<br />
'''Possible Replies:'''<br />
* 356 NO SUCH BUDDY<br />
* 257 BUDDY ACCEPTED<br />
* 357 BUDDY ALREADY ACCEPTED<br />
<br />
----<br />
<br />
=== BUDDYDENY: Deny user as Buddy ===<br />
'''Command String:'''<br />
* BUDDYDENY uid={int4 buddy uid}<br />
'''Possible Replies:'''<br />
* 394 NO SUCH USER<br />
* 258 BUDDY DENIED<br />
* 358 BUDDY ALREADY DENIED<br />
<br />
----<br />
<br />
=== BUDDYLIST: Retrieve Buddy List ===<br />
'''Command String:'''<br />
* BUDDYLIST startat={int2 start at #}<br />
'''Possible Replies:'''<br />
* 253 {int2 start} {int2 end} {int2 total} BUDDY LIST<br />
: {int4 uid}|{str username}|{int2 state}<br />
: ...<br />
'''Info:'''<br />
* state is a 16bit bit field in integer notation (lowest bit first):<br />
* bit 1 = this user is in your buddylist<br />
* bit 2 = this user has accepted you<br />
* bit 3 = this user is waiting for your approval<br />
<br />
----<br />
<br />
=== BUDDYSTATE: Retrieve Buddy States===<br />
'''Command String:'''<br />
* BUDDYSTATE startat={int2 start at #}<br />
'''Possible Replies:'''<br />
* 254 {int2 start} {int2 end} {int2 total} BUDDY STATE<br />
: {int4 uid}|{int2 onlinestate}<br />
: ...<br />
<br />
'''Info:'''<br />
* onlinestate is a 16bit bit field in integer notation (lowest bit first):<br />
* bit 1 = http online (user has issued a HTTP request within the last 10 minutes)<br />
* bit 2 = udp api online (user is currently connected to the udp api server)<br />
* example: 0=offline, 1=http online, 2=udp api online, 3=http&udp api online<br />
<br />
== Data Commands ==<br />
=== ANIME: Retrieve Anime Data ===<br />
'''Command String:'''<br><br />
by aid<br />
* ANIME aid={int4 id}&amask={hexstr}<br />
by name<br />
* ANIME aname={str anime name}&amask={hexstr}<br />
<br />
'''Possible Replies:'''<br />
* 230 ANIME<br />
: {int4 aid}|{int4 eps}|{int4 ep count}|{int4 special cnt}|{int4 rating}|{int4 votes}|{int4 tmprating}|{int4 tmpvotes}|{int4 review rating average}|{int4 reviews}|{str year}|{str type}|{str romaji}|{str kanji}|{str english}|{str other}|{str short names}|{str synonyms}|{str category list}<br />
* 330 NO SUCH ANIME<br />
<br />
'''Info:'''<br />
* Fields are returned in the same order they appear in the ''amask'' field list: byte 1, bit 7 first<br />
* Synonyms and short names are separated with '<br />
* Category names are separated with ',' and ordered by weight (desc).<br />
* By name: must be perfect match of romaji/kanji/english/other/synonym/short name.<br />
* NOTE: The category list is the first data to be truncated if needed. And then: synonym list, short name list. This applies for the FILE command too.<br />
<br />
<table border="0" cellpadding="0" cellspacing="2"><br />
<tr><td colspan="5" align="center">'''amask'''</td></tr><br />
<tr><br />
<td align="center">'''Byte 1'''</td><br />
<td align="center">'''Byte 2'''</td><br />
<td align="center">'''Byte 3'''</td><br />
<td align="center">'''Byte 4'''</td><br />
<td align="center">'''Byte 5'''</td><br />
</tr><br />
<tr><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int aid</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str year</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str type</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str related aid list</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>str related aid type</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str category list</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>reserved</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>str romaji name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str kanji name</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str english name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str other name</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str short name list</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>str synonym list</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str producer name list</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>str producer id list</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int4 episodes</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>int4 normal ep count</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>int4 special ep count</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>int4 air date</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>int4 end date</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>str url</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str picname</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>unused</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int4 rating</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>int4 vote count</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>int4 temp rating</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>int4 temp vote count</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>int4 average review rating</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>int4 review count</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str award list</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>unused</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int4 anime planet id</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>int4 ANN id</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>int4 allcinema id</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str animenfo id</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>reserved</td><br />
</tr><br />
</table><br />
</td><br />
</tr><br />
</table><br />
<br />
<br />
=== ANIME: Retrieve Anime Data (deprecated) ===<br />
<br />
'''Command String:'''<br><br />
by aid<br />
* ANIME aid={int4 id}[&acode={int4}]<br />
by name<br />
* ANIME aname={str anime name}[&acode={int4}]<br />
<br />
'''Possible Replies:'''<br />
* 230 ANIME<br />
: {int4 aid}|{int4 eps}|{int4 ep count}|{int4 special cnt}|{int4 rating}|{int4 votes}|{int4 tmprating}|{int4 tmpvotes}|{int4 review rating average}|{int4 reviews}|{str year}|{str type}|{str romaji}|{str kanji}|{str english}|{str other}|{str short names}|{str synonyms}|{str category list}<br />
* 330 NO SUCH ANIME<br />
<br />
'''Info:'''<br />
* Synonyms and short names are separated with '<br />
* Category names are separated with ',' and ordered by weight (desc).<br />
* No support for genres.<br />
* By name: must be perfect match of romaji/kanji/english/other/synonym/short name.<br />
* NOTE: The category list is the first data to be truncated if needed. And then: synonym list, short name list. This applies for the FILE command too.<br />
<br />
'''acode:'''<br />
{| cellpadding="0" align="center"<br />
! width="40"|Bit<br />
! width="80"|Decimal<br />
! width="160"|Data field<br />
! width="50"|-<br />
! width="40"|Bit<br />
! width="120"|Decimal<br />
! width="160"|Data field<br />
|- style="background-color: #eee;"<br />
|0 ||1 || int4 aid || || 16 || 65536 || str url<br />
|-<br />
|1 ||2 || int4 episodes || || 17 || 131072 || str picname<br />
|- style="background-color: #eee;"<br />
|2 ||4 || int4 normal ep count || || 18 || 262144 || str year<br />
|-<br />
|3 ||8 || int4 special ep count || || 19 || 524288 || str type<br />
|- style="background-color: #eee;"<br />
|4 ||16 || int4 rating || || 20 || 1048576 || str romaji name<br />
|-<br />
|5 ||32 || int4 vote count || || 21 || 2097152 || str kanji name<br />
|- style="background-color: #eee;"<br />
|6 ||64 || int4 temp rating || || 22 || 4194304 || str english name<br />
|-<br />
|7 ||128 || int4 temp vote count || || 23 || 8388608 || str other name<br />
|- style="background-color: #eee;"<br />
|8 ||256 || int4 average review rating || || 24 || 16777216 || str short name list<br />
|-<br />
|9 ||512 || int4 review count || || 25 || 33554432 || str synonym list<br />
|- style="background-color: #eee;"<br />
|10 ||1024 || int4 air date || || 26 || 67108864 || str category list<br />
|-<br />
|11 ||2048 || int4 end date || || 27 || 134217728 || str related aid list<br />
|- style="background-color: #eee;"<br />
|12 ||4096 || int4 anime planet id || || 28 || 268435456 || str producer name list<br />
|-<br />
|13 ||8192 || int4 anime news network id || || 29 || 536870912 || str producer id list<br />
|- style="background-color: #eee;"<br />
|14 ||16384 || int4 allcinema id || || 30 || 1073741824 || str award list<br />
|-<br />
|15 ||32768 || str animenfo id || || 31 || -2147483648 || reserved (all)<br />
|}<br />
<br />
'''Examples:''' (html escaped code intended)<br />
> ANIME aname=tmm&s=xxxxx<br />
< 230 ANIME<br />
161|52|50|0|715|57|777|35|816|1|2002-2003|TV|Tokyo Mew Mew|&#26481;&#20140;&#12511;&#12517;&#12454;&#12511;&#12517;&#12454;||||TMM'mew|Cat Girls<br />
<br />
> ANIME aname=&#12490;&#12523;&#12488;&s=xxxxx<br />
< 230 ANIME<br />
239|0|140|2|1000|10|855|3750|803|36|2002-2005|TV|Naruto|&#12490;&#12523;&#12488;||&#1504;&#1488;&#1512;&#1493;&#1496;&#1493;|NARUTO'&#1606;&#1575;&#1585;&#1608;&#1578;&#1608;|naruto tv'ntv|Action,Shounen,Past,...(cut)<br />
<br />
=== ANIMEDESC: Retrieve Anime Description ===<br />
'''Command String:'''<br><br />
by aid<br />
* ANIMEDESC aid={int4 id}&part={int4 partno}<br />
<br />
'''Possible Replies:'''<br />
* 233 ANIMEDESC<br />
: {int4 current part}|{int4 max parts}|{str description}<br />
* 330 NO SUCH ANIME<br />
* 333 NO SUCH DESCRIPTION<br />
<br />
'''Info:'''<br />
* The maximum length of the anime description is roughly 5000 characters, but the maximum length of a UDP packet is 1400 bytes<br />
* Multiple calls to ANIMEDESC may be necessary to retrieve the complete text, retrieving separate 1400 byte parts with each call<br />
* ''part'' is zero-based<br />
* Note: No support, at present, for retrieving descriptions by title. ''aid'' only<br />
<br />
<br />
'''Examples:''' (html escaped code intended)<br />
> ANIMEDESC aid=3169&part=0&s=xxxxx<br />
< 233 ANIMEDESC<br />
0|1|As summer break arrives for the students, Jun Sakurada is busily studying on his own in the library, making up for time lost <cut><br />
<br />
----<br />
=== EPISODE: Retrieve Episode Data ===<br />
'''Command String:'''<br><br />
by eid<br />
* EPISODE eid={int4 eid}<br />
by anime and episode number<br />
* EPISODE aname={str anime name}&epno={int4 episode number}<br />
* EPISODE aid={int4 anime id}&epno={int4 episode number}<br />
<br />
'''Possible Replies:'''<br />
* 240 EPISODE<br />
: {int4 eid}|{int4 aid}|{int4 length}|{int4 rating}|{int4 votes}|{str epno}|{str eng}|{str romaji}|{str kanji}|{int4 aired}<br />
* 340 NO SUCH EPISODE<br />
<br />
'''Info:'''<br />
* length is in minutes<br />
* Returned 'epno' includes special character (only if special) and padding (only if normal). Special characters are S(special), C(credits), T(trailer), P(parody), O(other).<br />
<br />
'''Examples:''' (html escaped code intended)<br />
> EPISODE eid=1&s=xxxxx<br />
< 240 EPISODE<br />
1|1|24|400|4|01|Invasion|shinryaku|??<br />
<br />
> EPISODE aname=Seikai no Monshou&epno=2&s=xxxxx<br />
< 240 EPISODE<br />
2|1|24|750|2|02|Kin of the Stars|Hoshi-tachi no Kenzoku|??????<br />
<br />
----<br />
<br />
=== FILE: Retrieve File Data ===<br />
'''Command String:'''<br><br />
by fid:<br />
* FILE fid={int4 id}&fmask={hexstr fmask}&amask={hexstr amask}<br />
by size+ed2k hash:<br />
* FILE size={int8 size}&ed2k={str ed2khash}&fmask={hexstr fmask}&amask={hexstr amask}<br />
by anime, group and epno<br />
* FILE aname={str anime name}&gname={str group name}&epno={int4 episode number}&fmask={hexstr fmask}&amask={hexstr amask}<br />
* FILE aname={str anime name}&gid={int4 group id}&epno={int4 episode number}&fmask={hexstr fmask}&amask={hexstr amask}<br />
* FILE aid={int4 anime id}&gname={str group name}&epno={int4 episode number}&fmask={hexstr fmask}&amask={hexstr amask}<br />
* FILE aid={int4 anime id}&gid={int4 group id}&epno={int4 episode number}&fmask={hexstr fmask}&amask={hexstr amask}<br />
<br />
'''Possible Replies:'''<br />
* 220 FILE<br />
: {int4 fid}|{int4 aid}|{int4 eid}|{int4 gid}|{int4 state}|{int8 size}|{str ed2k}|{str anidbfilename}<br />
* 220 FILE<br />
: {int4 fid}|...(data list)<br />
* 322 MULTIPLE FILES FOUND<br />
: {int4 fid 0}|{int4 fid 1}|...|{int4 fid n}<br />
* 320 NO SUCH FILE<br />
<br />
'''Info:'''<br />
* fid, aid, eid, gid are the unique ids for the file, anime, ep, group entries at anidb.<br />
: You can use those to create links to the corresponding pages at anidb.<br />
* anidbfilename is the anidb filename for the file.<br />
: However this name does not contain all the extra information of the filenames on AniDB and might be composed slightly different.<br />
* fmask and amask are hexidecimal strings where each bit corresponds to a data field related to the specified file (see below). The data list received is sorted in the same order as the tables (and fmask before amask). There is '''no''' provision to retrieve all fields. Further, requesting a 'unusued' or 'reserved' bit will return an "illegal input" error.<br />
* Only the first matching file is returned when aname, gname and epno is used.<br />
<br />
'''State:'''<br />
<pre><br />
bit / int value meaning<br />
1 / 1 FILE_CRCOK: file matched official crc (displayed with green background in anidb)<br />
2 / 2 FILE_CRCERR: file DID NOT match official crc (displayed with red background in anidb)<br />
3 / 4 FILE_ISV2: file is version 2<br />
4 / 8 FILE_ISV3: file is version 3<br />
5 / 16 FILE_ISV4: file is version 4<br />
6 / 32 FILE_ISV5: file is version 5<br />
7 / 64 FILE_UNC: file is uncensored<br />
8 / 128 FILE_CEN: file is censored<br />
<br />
examples:<br />
state ==== 9 ==> FILE_CRCOK+FILE_ISV3 ==> file matched official crc and is version 3<br />
state ==== 0 ==> - ==> file was not crc checked and is version 1<br />
state ==== 34 ==> FILE_CRCERR+FILE_ISV5 ==> file DID NOT match official crc and is version 5<br />
state ==== 1 ==> FILE_CRCOK ==> file matched official crc and is version 1<br />
state ==== 8 ==> FILE_ISV3 ==> file was not crc checked and is version 3<br />
</pre><br />
<br />
<table border="0" cellpadding="0" cellspacing="2"><br />
<tr><td colspan="4" align="center">'''fmask:'''</td></tr><br />
<tr><br />
<td align="center">'''Byte 1'''</td><br />
<td align="center">'''Byte 2'''</td><br />
<td align="center">'''Byte 3'''</td><br />
<td align="center">'''Byte 4'''</td><br />
</tr><br />
<tr><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>int4 aid</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>int4 eid</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>int4 gid</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>int4 lid</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>list other episodes</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>int2 IsDeprecated</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>int2 state</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int8 size</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str ed2k</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str md5</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str sha1</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str crc32</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>unused</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>reserved</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str source</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str audio codec</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>int4 audio bitrate</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str video codec</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>int4 video bitrate</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str video resolution</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>str file type (extension)</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>str dub language</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str sub language</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>int4 length in seconds</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str description</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>int4 release date</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>str anidb file name</td><br />
</tr><br />
</table><br />
</td><br />
</tr><br />
</table><br />
<br />
<br />
<table border="0" cellpadding="0" cellspacing="2"><br />
<tr><td colspan="4" align="center">'''amask:'''</td></tr><br />
<tr><br />
<td align="center">'''Byte 1'''</td><br />
<td align="center">'''Byte 2'''</td><br />
<td align="center">'''Byte 3'''</td><br />
<td align="center">'''Byte 4'''</td><br />
</tr><br />
<tr><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>int4 anime total episodes</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>int4 highest episode number</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str year</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str type</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str related aid list</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>str related aid type</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str category list</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>reserved</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>str romaji name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str kanji name</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str english name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str other name</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>str short name list</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>str synonym list</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>str producer name list</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>str producer id list</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>str epno</td><br />
</tr><br />
<tr><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str ep name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>str ep romaji name</td><br />
</tr><br />
<tr><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>str ep kanji name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>unused</td><br />
</tr><br />
</table><br />
</td><br />
<td><br />
<table><br />
<tr><br />
<td>'''Bit'''</td><br />
<td align="right">'''Dec'''</td><br />
<td>'''Data Field'''</td><br />
</tr><br />
<tr><br />
<td>7</td><br />
<td align="right">128</td><br />
<td>str group name</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>6</td><br />
<td align="right">64</td><br />
<td>str group short name</td><br />
</tr><br />
<tr><br />
<td>5</td><br />
<td align="right">32</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>4</td><br />
<td align="right">16</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>3</td><br />
<td align="right">8</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>2</td><br />
<td align="right">4</td><br />
<td>unused</td><br />
</tr><br />
<tr><br />
<td>1</td><br />
<td align="right">2</td><br />
<td>unused</td><br />
</tr><br />
<tr bgcolor="#eee"><br />
<td>0</td><br />
<td align="right">1</td><br />
<td>reserved</td><br />
</tr><br />
</table><br />
</td><br />
</tr><br />
</table><br />
<br />
'''Examples:''' (html escaped code intended)<br />
<pre><br />
> FILE size=177747474&ed2k=70cd93fd3981cc80a8ea6a646ff805c9&fmask=7FF8FEF8&amask=C000F0C0&s=xxxxx<br />
< 220 FILE<br />
312498|4688|69260|4243|0||0|1|177747474|70cd93fd3981cc80a8ea6a646ff805c9|b2a7c7d591333e20495de3571b235c28|7af9b962c17ff729baeee67533e5219526cd5095|a200fe73|high|DTV|Vorbis (Ogg Vorbis)|104|H264/AVC|800|704x400|japanese|english'english'english|1560||1175472000|26|26|01|The Wings to the Sky|Sora he no Tsubasa|????|#nanoha-DamagedGoodz|Nanoha-DGz<br />
</pre><br />
<br />
<br />
----<br />
<br />
=== FILE: Retrieve File Data (deprecated) ===<br />
'''Command String:'''<br><br />
by fid:<br />
* FILE fid={int4 id}[&fcode={int4}&acode={int4}]<br />
by size+ed2k hash:<br />
* FILE size={int8 size}&ed2k={str ed2khash}[&fcode={int4}&acode={int4}]<br />
by anime, group and epno<br />
* FILE aname={str anime name}&gname={str group name}&epno={int4 episode number}[&fcode={int4}&acode={int4}]<br />
* FILE aname={str anime name}&gid={int4 group id}&epno={int4 episode number}[&fcode={int4}&acode={int4}]<br />
* FILE aid={int4 anime id}&gname={str group name}&epno={int4 episode number}[&fcode={int4}&acode={int4}]<br />
* FILE aid={int4 anime id}&gid={int4 group id}&epno={int4 episode number}[&fcode={int4}&acode={int4}]<br />
<br />
'''Possible Replies:'''<br />
* 220 FILE<br />
: {int4 fid}|{int4 aid}|{int4 eid}|{int4 gid}|{int4 state}|{int8 size}|{str ed2k}|{str anidbfilename}<br />
* 220 FILE<br />
: {int4 fid}|...(data list)<br />
* 322 MULTIPLE FILES FOUND<br />
: {int4 fid 0}|{int4 fid 1}|...|{int4 fid n}<br />
* 320 NO SUCH FILE<br />
<br />
'''Info:'''<br />
* fid, aid, eid, gid are the unique ids for the file, anime, ep, group entries at anidb.<br />
: You can use those to create links to the corresponding pages at anidb.<br />
* anidbfilename is the anidb filename for the file.<br />
: However this name does not contain all the extra information of the filenames on AniDB and might be composed slightly different.<br />
* fcode and acode is integers where each bit corresponds to a data field related to the specified file (se below). The data list received is sorted in the same order as the tables (and fcode before acode). {f|a}code=-1 means retrieve all fields.<br />
* Only the first matching file is returned when aname, gname and epno is used.<br />
<br />
'''State:'''<br />
<pre><br />
bit / int value meaning<br />
1 / 1 FILE_CRCOK: file matched official crc (displayed with green background in anidb)<br />
2 / 2 FILE_CRCERR: file DID NOT match official crc (displayed with red background in anidb)<br />
3 / 4 FILE_ISV2: file is version 2<br />
4 / 8 FILE_ISV3: file is version 3<br />
5 / 16 FILE_ISV4: file is version 4<br />
6 / 32 FILE_ISV5: file is version 5<br />
7 / 64 FILE_UNC: file is uncensored<br />
8 / 128 FILE_CEN: file is censored<br />
<br />
examples:<br />
state ==== 9 ==> FILE_CRCOK+FILE_ISV3 ==> file matched official crc and is version 3<br />
state ==== 0 ==> - ==> file was not crc checked and is version 1<br />
state ==== 34 ==> FILE_CRCERR+FILE_ISV5 ==> file DID NOT match official crc and is version 5<br />
state ==== 1 ==> FILE_CRCOK ==> file matched official crc and is version 1<br />
state ==== 8 ==> FILE_ISV3 ==> file was not crc checked and is version 3<br />
</pre><br />
<br />
'''fcode:'''<br />
{| cellpadding="0" align="center"<br />
! width="40"|Bit<br />
! width="80"|Decimal<br />
! width="160"|Data field<br />
! width="50"|-<br />
! width="40"|Bit<br />
! width="120"|Decimal<br />
! width="160"|Data field<br />
|- style="background-color: #eee;"<br />
|0 ||1 || not used || || 16 || 65536 || str dub language<br />
|-<br />
|1 ||2 || int4 aid || || 17 || 131072 || str sub language<br />
|- style="background-color: #eee;"<br />
|2 ||4 || int4 eid || || 18 || 262144 || str quality<br />
|-<br />
|3 ||8 || int4 gid || || 19 || 524288 || str source<br />
|- style="background-color: #eee;"<br />
|4 ||16 || int4 lid || || 20 || 1048576 || str audio codec<br />
|-<br />
|5 ||32 || not used || || 21 || 2097152 || int4 audio bitrate<br />
|- style="background-color: #eee;"<br />
|6 ||64 || not used || || 22 || 4194304 || str video codec<br />
|-<br />
|7 ||128 || not used || || 23 || 8388608 || int4 video bitrate<br />
|- style="background-color: #eee;"<br />
|8 ||256 || int2 state || || 24 || 16777216 || str video resolution<br />
|-<br />
|9 ||512 || int8 size || || 25 || 33554432 || str file type (extension)<br />
|- style="background-color: #eee;"<br />
|10 ||1024 || str ed2k || || 26 || 67108864 || int4 length in seconds<br />
|-<br />
|11 ||2048 || str md5 || || 27 || 134217728 || str description<br />
|- style="background-color: #eee;"<br />
|12 ||4096 || str sha1 || || 28 || 268435456 || not used<br />
|-<br />
|13 ||8192 || str crc32 || || 29 || 536870912 || not used<br />
|- style="background-color: #eee;"<br />
|14 ||16384 || not used || || 30 || 1073741824 || str anidb file name<br />
|-<br />
|15 ||32768 || not used || || 31 || -2147483648 || not used<br />
|}<br />
'''acode:'''<br />
{| cellpadding="0" align="center"<br />
! width="40"|Bit<br />
! width="80"|Decimal<br />
! width="160"|Data field<br />
! width="50"|-<br />
! width="40"|Bit<br />
! width="120"|Decimal<br />
! width="160"|Data field<br />
|- style="background-color: #eee;"<br />
|0 ||1 || str group name || || 16 || 65536 || int4 anime total episodes<br />
|-<br />
|1 ||2 || str group short name || || 17 || 131072 || int4 last episode nr (highest, not special)<br />
|- style="background-color: #eee;"<br />
|2 ||4 || not used || || 18 || 262144 || str year<br />
|-<br />
|3 ||8 || not used || || 19 || 524288 || str type<br />
|- style="background-color: #eee;"<br />
|4 ||16 || not used || || 20 || 1048576 || str romaji name<br />
|-<br />
|5 ||32 || not used || || 21 || 2097152 || str kanji name<br />
|- style="background-color: #eee;"<br />
|6 ||64 || not used || || 22 || 4194304 || str english name<br />
|-<br />
|7 ||128 || not used || || 23 || 8388608 || str other name<br />
|- style="background-color: #eee;"<br />
|8 ||256 || str epno || || 24 || 16777216 || str short name list<br />
|-<br />
|9 ||512 || str ep name || || 25 || 33554432 || str synonym list<br />
|- style="background-color: #eee;"<br />
|10 ||1024 || str ep romaji name || || 26 || 67108864 || str category list<br />
|-<br />
|11 ||2048 || str ep kanji name || || 27 || 134217728 || str related aid list<br />
|- style="background-color: #eee;"<br />
|12 ||4096 || not used || || 28 || 268435456 || str producer name list<br />
|-<br />
|13 ||8192 || not used || || 29 || 536870912 || str producer id list<br />
|- style="background-color: #eee;"<br />
|14 ||16384 || not used || || 30 || 1073741824 || not used<br />
|-<br />
|15 ||32768 || not used || || 31 || -2147483648 || not used<br />
|}<br />
'''Examples:''' (html escaped code intended)<br />
<pre><br />
> FILE fid=15201&s=xxxxx<br />
< 220 FILE<br />
15201|74|445|41|1|242772540|a53c401ed95eaa502ba85acde773040c|Ai yori Aoshi - 1 - Relation - [Zhentarim DivX].ogm<br />
<br />
> FILE fid=15201&fcode=33554432&acode=1049346 <br />
< 220 FILE <br />
15201|ogm|zx|01|Relation|Ai yori Aoshi<br />
<br />
> FILE aname=narutaru&gname=triad&amp;amp;aone&epno=2&s=xxxxx<br />
< t001 220 FILE<br />
15459|782|8772|380|1|171298816|2c8a3b53d94d8579b9b81941c549e108|Narutaru - 02 - Catastrophe During the Daytime - [Triad & AonE].avi<br />
</pre><br />
<br />
----<br />
<br />
=== GROUP: Retrieve Group Data ===<br />
'''Command String:'''<br><br />
by gid<br />
* GROUP gid={int4 gid}<br />
by name/shortname<br />
* GROUP gname={str group name}<br />
<br />
'''Possible Replies:'''<br />
* 250 GROUP<br />
: {int4 gid}|{int4 rating}|{int4 votes}|{int4 acount}|{int fcount}|{str name}|{str short}|{str irc channel}|{str irc server}|{str url}<br />
* 350 NO SUCH GROUP<br />
<br />
'''Examples:'''<br />
> GROUP gid=1&s=xxxxx<br />
< 250 GROUP<br />
41|851|665|109|1004|Zhentarim DivX|zx|#zhentarim|irc.deltaanime.net|http://www.zhentarim.net/<br />
<br />
> GROUP gname=a-l&s=xxxxx<br />
< 250 GROUP<br />
566|840|453|53|534|Anime-Legion|A-L|#anime-legion|irc.irchighway.net|http://www.anime-legion.net<br />
<br />
----<br />
=== PRODUCER: Retrieve Producer Data ===<br />
'''Command String:'''<br><br />
by id<br />
* PRODUCER pid={int4 producer id}<br />
by name<br />
* PRODUCER pname={str producer name/short name/other name}<br />
<br />
'''Possible Replies:'''<br />
* 245 PRODUCER<br />
: {int4 id}|{str name}|{str short name}|{str other name}|{str type}|{str picture name}|{str home page url}<br />
* 345 NO SUCH PRODUCER<br />
'''Example:'''<br />
> PRODUCER pid=1<br />
< 245 PRODUCER<br />
1|GAINAX||ガイナックス|Company|1088.gif|http://www.gainax.co.jp/<br />
<br />
----<br />
<br />
<br />
== Mylist Commands ==<br />
=== MYLIST: Retrieve Mylist Data ===<br />
'''Command String:'''<br><br />
by lid: (mylist id)<br />
* MYLIST lid={int4 lid}<br />
by fid:<br />
* MYLIST fid={int4 fid}<br />
by size+ed2k hash:<br />
* MYLIST size={int4 size}&ed2k={str ed2khash}<br />
by anime + group + epno<br />
* MYLIST aname={str anime name}[&gname={str group name}&epno={int4 episode number}]<br />
* MYLIST aname={str anime name}[&gid={int4 group id}&epno={int4 episode number}]<br />
* MYLIST aid={int4 anime id}[&gname={str group name}&epno={int4 episode number}]<br />
* MYLIST aid={int4 anime id}[&gid={int4 group id}&epno={int4 episode number}]<br />
<br />
'''Possible Replies:'''<br />
* 221 MYLIST<br />
: {int4 lid}|{int4 fid}|{int4 eid}|{int4 aid}|{int4 gid}|{int4 date}|{int2 state}|{int4 viewdate}|{str storage}|{str source}|{str other}|{int2 filestate}<br />
* 312 MULTIPLE MYLIST ENTRIES<br />
: {str anime title}|{int episodes}|{str eps with state unknown}|{str eps with state on hhd}|{str eps with state on cd}|{str eps with state deleted}|{str watched eps}|{str group 1 short name}|{str eps for group 1}|...|{str group N short name}|{str eps for group N}<br />
* 321 NO SUCH ENTRY<br />
<br />
'''Info:'''<br />
* The state field provides information about the location and sharing state of a file in mylist.<br />
* If files are added after hashing, a client should specify the state as 1 (on hdd) (if the user doesn't explicitly select something else).<br />
* eps is a list of episodes, e.g. "1-12,14-16,T1"<br />
<br />
'''States:'''<br />
0 - unknown - state is unknown or the user doesn't want to provide this information<br />
1 - on hdd - the file is stored on hdd (but is not shared)<br />
2 - on cd - the file is stored on cd<br />
3 - deleted - the file has been deleted or is not available for other reasons (i.e. reencoded)<br />
<br />
'''Filestates:''' (for normal files, ie. not generic)<br />
0 => normal/original<br />
1 => corrupted version/invalid crc<br />
2 => self edited<br />
10 => self ripped<br />
11 => on dvd<br />
12 => on vhs<br />
13 => on tv<br />
14 => in theaters<br />
15 => streamed<br />
100 => other<br />
<br />
'''Example:'''<br />
> MYLIST aname=gits sac&s=xxxxx<br />
< 322 MULTIPLE FILES FOUND<br />
Koukaku Kidoutai STAND ALONE COMPLEX|26||1-26|1-26,S2-S27|||V-A|S2-S27|LMF|20-26|KAA|1-26|AonE|1-19|Anime-MX|1-3,9-20<br />
<br />
----<br />
<br />
=== MYLISTADD: Add file to mylist ===<br />
'''Command String:'''<br><br />
by lid: (mylist id, edit only)<br />
* MYLISTADD lid={int4 lid}&edit=1[&state={int2 state}&viewed={boolean viewed}&viewdate={int4 viewdate}&source={str source}&storage={str storage}&other={str other}]<br />
by fid:<br />
* MYLISTADD fid={int4 fid}[&state={int2 state}&viewed={boolean viewed}&viewdate={int4 viewdate}&source={str source}&storage={str storage}&other={str other}][&edit=1]<br />
by size+ed2k hash:<br />
* MYLISTADD size={int4 size}&ed2k={str ed2khash}[&state={int2 state}&viewed={boolean viewed}&viewdate={int4 viewdate}&source={str source}&storage={str storage}&other={str other}][&edit=1]<br />
by anime + group + epno<br />
* MYLISTADD aname={str anime name}[&gname={str group name}&epno={int4 episode number}][&state={int2 state}&viewed={boolean viewed}&viewdate={int4 viewdate}&source={str source}&storage={str storage}&other={str other}][&edit=1]<br />
<br />
* MYLISTADD aname={str anime name}&gid={int4 group id}[&epno={int4 episode number}][...]<br />
* MYLISTADD aname={str anime name}&edit=1[&gid={int4 group id}&epno={int4 episode number}][...]<br />
* MYLISTADD aid={int4 anime id}&gname={str group name}[&epno={int4 episode number}][...]<br />
* MYLISTADD aid={int4 anime id}&edit=1[&gname={str group name}&epno={int4 episode number}][...]<br />
* MYLISTADD aid={int4 anime id}&gid={int4 group id}[&epno={int4 episode number}][...]<br />
* MYLISTADD aid={int4 anime id}&edit=1[&gid={int4 group id}&epno={int4 episode number}][...]<br />
<br />
'''Possible Replies:'''<br />
* 320 NO SUCH FILE<br />
* 330 NO SUCH ANIME<br />
* 350 NO SUCH GROUP<br />
when edit=0 and adding by fid, size/ed2k<br />
* 210 MYLIST ENTRY ADDED<br />
: {int4 mylist id of new entry}<br />
when edit=0 and adding by aname, aid<br />
* 210 MYLIST ENTRY ADDED<br />
: {int4 number of entries added}<br />
* 310 FILE ALREADY IN MYLIST<br />
* 322 MULTIPLE FILES FOUND<br />
: {int4 fid 1}|{int4 fid 2}|...|{int4 fid n}<br />
when edit=1<br />
* 311 MYLIST ENTRY EDITED<br />
* 311 MYLIST ENTRY EDITED<br />
: {int4 number of entries edited}<br />
* 411 NO SUCH MYLIST ENTRY<br />
<br />
'''Info:'''<br />
* All data except lid/fid/size+hash is optional.<br />
* Viewed should be 0 for unwatched files and 1 for watched files.<br />
* Viewdate is optional; the current time will be used if not defined. The field will be disregarded if viewed=0.<br />
* Other is the only field which may contrain newlines, but they have to be stored as &lt;br /&gt;<br />
* If edit is 1 then an existing entry, if found, will be updated with the given values.<br />
* For state values refer to: '''MYLIST'''<br />
* If you want to change an existing entry and already know it's mylist id (lid) please use the lid-version of this command. It put less load on the server.<br />
* epno=0 means all eps (default), negative numbers means upto. (-12 -> upto 12)<br />
* group is optional only when edit=1, meaning you can't add every file for an anime<br />
{{eyecatch|NOTE|This command does not update the the cached mylist counts seen in [[Myplace]].}}<br />
<br />
----<br />
<br />
=== MYLISTDEL: Remove file from mylist ===<br />
'''Command String:'''<br><br />
by lid: (mylist id)<br />
* MYLISTDEL lid={int4 lid}<br />
by fid:<br />
* MYLISTDEL fid={int4 fid}<br />
by size+ed2k hash:<br />
* MYLISTDEL size={int4 size}&ed2k={str ed2k hash}<br />
by anime + group + epno<br />
* MYLISTDEL aname={str anime name}[&gname={str group name}&epno={int4 episode number}]<br />
* MYLISTDEL aname={str anime name}[&gid={int4 group id}&epno={int4 episode number}]<br />
* MYLISTDEL aid={int4 anime id}[&gname={str group name}&epno={int4 episode number}]<br />
* MYLISTDEL aid={int4 anime id}[&gid={int4 group id}&epno={int4 episode number}]<br />
<br />
'''Possible Replies:'''<br />
* 211 MYLIST ENTRY DELETED<br />
: {int4 number of entries}<br />
* 411 NO SUCH MYLIST ENTRY<br />
'''Info:'''<br />
* group is optional<br />
* command will delete all enties found<br />
<br />
----<br />
<br />
=== MYLISTSTATS : Retrieve mylist stats ===<br />
'''Command String:'''<br />
* MYLISTSTATS<br />
'''Possible Replies:'''<br />
* 222 MYLIST STATS<br />
{animes}|{eps}|{files}|{size of files}|{added animes}|{added eps}|{added files}|{added groups}|{leech %}|{glory %}|{viewed % of db}|{mylist % of db}|{viewed % of mylist}|{number of viewed eps}|{votes}|{reviews}<br />
<br />
'''Info:'''<br />
* All fields are int<br />
<br />
----<br />
<br />
=== VOTE: Vote for specified anime/episode/group ===<br />
'''Command String:'''<br><br />
by id<br />
* VOTE type={int2 type}&id={int4 id}[&value={int4 vote value}&epno={int4 episode number}]<br />
by name<br />
* VOTE type={int2 type}&name={string name}[&value={int4 vote value}&epno={int4 episode number}]<br />
<br />
'''Possible Replies:'''<br />
* 260 VOTED<br />
: {str aname/ename/gname}<br />
* 261 VOTE FOUND<br />
: {str aname/ename/gname}|{vote value}<br />
* 262 VOTE UPDATED<br />
: {str aname/ename/gname}|{old vote value}<br />
* 263 VOTE REVOKED<br />
: {str aname/ename/gname}|{revoked vote value}<br />
* 360 NO SUCH VOTE<br />
* 361 INVALID VOTE TYPE<br />
* 362 INVALID VOTE VALUE<br />
* 363 PERMVOTE NOT ALLOWED<br />
: {str aname}<br />
* 364 ALREADY PERMVOTED<br />
: {str aname/ename/gname}<br />
<br />
'''Info:'''<br />
* type: 1=anime, 2=anime tmpvote, 3=group<br />
* for episode voting add epno on type=1<br />
* value: negative number means revoke, 0 means retrieve (default), 100-1000 are valid vote values, rest is illegal<br />
* votes will be updated automatically (no questions asked)<br />
* tmpvoting when there exist a perm vote is not possible<br />
<br />
----<br />
=== RANDOM: Get a random anime ===<br />
'''Command String:'''<br />
* RANDOMANIME type={int4 type}<br />
<br />
'''Possible Replies:'''<br />
* 230 ANIME ... (see ANIME)<br />
<br />
'''Info:'''<br />
* type: 0=from db, 1=watched, 2=unwatched, 3=all mylist<br />
<br />
== Misc Commands ==<br />
<br />
=== MYLISTEXPORT: Schedule a MyList Export ===<br />
Queues a [http://anidb.net/perl-bin/animedb.pl?show=export MyList Export] by the AniDb Servers. As with a manual export request, exports are only done during periods when server load is low. As a result, exports may take up to 24 hours. The client submitting the request will receive an AniDb message when the export is ready to be collected.<br />
<br />
Only one export can be in the queue at a time.<br />
<br />
'''Command String:'''<br />
* MYLISTEXPORT [template={str template_name}|cancel=1]<br />
<br />
'''Possible Replies:'''<br />
* 217 Export Queued<br />
* 218 Export Cancelled<br />
* 317 No Such Template<br />
* 318 Export Already In Queue<br />
* 319 No Export In Queue or Export In Progress<br />
<br />
'''Info:'''<br />
* ''template_name'' must match an available export template on the [http://anidb.net/perl-bin/animedb.pl?show=export MyList Export] page.<br />
* ''cancel'' will cancel any pending export request, queued either through UDP or the web server.<br />
* Clients can subscribe the message notifications if they wish to be notified when an export is complete.<br />
<br />
----<br />
<br />
=== PING: Ping Command ===<br />
'''Command String:'''<br />
* PING [nat=1]<br />
<br />
'''Possible Replies:'''<br />
* 300 PONG<br />
: {int4 port} ''(when nat=1)''<br />
<br />
'''Info:'''<br />
* This command does not require a session.<br />
* May be used by a frontend to determine if the API is still available.<br />
* May be executed even if not yet logged in.<br />
* The option <tt>nat=1</tt> provides an easy way to determine if the router has changed the outgoing port. ([http://tracker.anidb.info/view.php?id=587 587])<br />
<br />
----<br />
<br />
=== VERSION: Retrieve Server Version ===<br />
'''Command String:'''<br />
* VERSION<br />
<br />
'''Possible Replies:'''<br />
* 998 VERSION<br />
: {str server version}<br />
<br />
'''Info:'''<br />
* This command does not require a session.<br />
<br />
----<br />
<br />
=== UPTIME: Retrieve Server Uptime ===<br />
'''Command String:'''<br />
* UPTIME<br />
<br />
'''Possible Replies:'''<br />
* 208 UPTIME<br />
: {int4 udpserver uptime in milliseconds}<br />
<br />
'''Info:'''<br />
* This command is the preferred way to check that the session is OK.<br />
<br />
----<br />
<br />
=== ENCODING: Change Encoding for Session ===<br />
Sets preferred [http://en.wikipedia.org/wiki/Character_encoding encoding] per session. The preferred way to do this is to use the '''enc''' argument for AUTH. This command is mostly for testing.<br />
<br />
'''Command String:'''<br />
* ENCODING name={str encoding name}<br />
<br />
'''Possible Replies:'''<br />
* 219 ENCODING CHANGED<br />
* 519 ENCODING NOT SUPPORTED<br />
<br />
'''Info:'''<br />
* This command does not require a session.<br />
* Supported encodings: http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html<br />
* Default: ASCII.<br />
* Resets to default on logout.<br />
<br />
----<br />
=== SENDMSG: Send Message ===<br />
'''Command String:'''<br />
* SENDMSG to={str username}&title={str title}&body={str body}<br />
<br />
'''Possible Replies:'''<br />
* 294 SENDMSG SUCCESSFUL<br />
* 394 NO SUCH USER<br />
* 501 LOGIN FIRST<br />
<br />
'''Note:'''<br />
* This command allows you to send an AniDB message.<br />
{{eyecatch|IMPORTANT:|<br />
title must not be longer than 50 chars.<br />
body must not be longer than 900 chars.<br />
}}<br />
<br />
----<br />
<br />
=== USER: Retrieve User UID ===<br />
'''Command String:'''<br />
* USER user={str user name}<br />
<br />
'''Possible Replies:'''<br />
* 394 NO SUCH USER<br />
* 295 USER<br />
: {int4 uid}<br />
'''Info:'''<br />
* The client should the check length (3-10) and case (lower) of ''user'' before sending.<br />
<br />
----<br />
<br />
=== STATS [<span style="color:red">disabled</span>] ===<br />
'''Command String:'''<br />
* STATS<br />
<br />
'''Possible Replies:'''<br />
* 206 STATS<br />
: {int4 animes)|{int4 eps}|{int4 files}|{int4 groups}|{int4 users}|{int8 total file size in bytes}|{int4 open [[creq|creqs]]}<br />
<br />
----<br />
<br />
=== TOP [<span style="color:red">disabled</span>] ===<br />
'''Command String:'''<br />
* TOP<br />
<br />
'''Possible Replies:'''<br />
* 207 TOP<br />
: {str longest mylist}|{int count}<br />
: {str largest mylist}|{int count}<br />
: {str most lame files}|{int count}<br />
: {str most indep. user}|{int count}<br />
: {str biggest leecher}|{int count}<br />
: {str most anime added}|{int count}<br />
: {str most eps added}|{int count}<br />
: {str most files added}|{int count}<br />
: {str most groups added}|{int count}<br />
: {str most votes}|{int count}<br />
: {str most reviews}|{int count}<br />
<br />
'''Info:'''<br />
* All strings are user names.<br />
* 'Hide myself in IRC stats' applies for this too.<br />
<br />
== Fatal Errors ==<br />
At anypoint int the retrieval process you have to expect the following output:<br />
* 6xx INTERNAL SERVER ERROR<br />
: ERROR: {str errormessage}<br />
OR<br />
*6xx INTERNAL SERVER ERROR - {str errormessage}<br />
<br />
Such errors should be reported back to [[User:Ommina|Ommina]].<br />
(xx is a number between 00 and 99)<br />
<br />
If you supply an unknown or unimplemented command you will get an error:<br />
* 598 UNKNOWN COMMAND<br />
<br />
== Return Codes ==<br />
Note: The names below do _not_ necessarily reflect the actual code strings returned by the server. <br />
<pre><br />
// POSITIVE 2XX<br />
<br />
LOGIN_ACCEPTED =200, //a<br />
LOGIN_ACCEPTED_NEW_VER =201, //a<br />
LOGGED_OUT =203, //a<br />
RESOURCE =205, //d<br />
STATS =206, //b<br />
TOP =207, //b<br />
UPTIME =208, //b<br />
ENCRYPTION_ENABLED =209, //c<br />
<br />
MYLIST_ENTRY_ADDED =210, //a<br />
MYLIST_ENTRY_DELETED =211, //a<br />
<br />
ADDED_FILE =214, //e<br />
ADDED_STREAM =215, //e<br />
<br />
ENCODING_CHANGED =219, //c<br />
<br />
FILE =220, //a<br />
MYLIST =221, //a<br />
MYLIST_STATS =222, //b<br />
<br />
ANIME =230, //b<br />
ANIME_BEST_MATCH =231, //b<br />
RANDOMANIME =232, //b<br />
ANIME_DESCRIPTION =233, //b<br />
<br />
EPISODE =240, //b<br />
PRODUCER =245, //b<br />
GROUP =250, //b<br />
<br />
BUDDY_LIST =253, //c<br />
BUDDY_STATE =254, //c<br />
BUDDY_ADDED =255, //c<br />
BUDDY_DELETED =256, //c<br />
BUDDY_ACCEPTED =257, //c<br />
BUDDY_DENIED =258, //c<br />
<br />
VOTED =260, //b<br />
VOTE_FOUND =261, //b<br />
VOTE_UPDATED =262, //b<br />
VOTE_REVOKED =263, //b<br />
<br />
NOTIFICATION_ENABLED =270, //a<br />
NOTIFICATION_NOTIFY =271, //a<br />
NOTIFICATION_MESSAGE =272, //a<br />
NOTIFICATION_BUDDY =273, //c<br />
NOTIFICATION_SHUTDOWN =274, //c<br />
PUSHACK_CONFIRMED =280, //a<br />
NOTIFYACK_SUCCESSFUL_M =281, //a<br />
NOTIFYACK_SUCCESSFUL_N =282, //a<br />
NOTIFICATION =290, //a<br />
NOTIFYLIST =291, //a<br />
NOTIFYGET_MESSAGE =292, //a<br />
NOTIFYGET_NOTIFY =293, //a<br />
<br />
SENDMSG_SUCCESSFUL =294, //a<br />
USER =295, //d<br />
<br />
// AFFIRMATIVE/NEGATIVE 3XX<br />
<br />
PONG =300, //a<br />
AUTHPONG =301, //c<br />
NO_SUCH_RESOURCE =305, //d<br />
API_PASSWORD_NOT_DEFINED =309, //c<br />
<br />
FILE_ALREADY_IN_MYLIST =310, //a<br />
MYLIST_ENTRY_EDITED =311, //a<br />
MULTIPLE_MYLIST_ENTRIES =312, //e<br />
<br />
SIZE_HASH_EXISTS =314, //c<br />
INVALID_DATA =315, //c<br />
STREAMNOID_USED =316, //c<br />
<br />
NO_SUCH_FILE =320, //a<br />
NO_SUCH_ENTRY =321, //a<br />
MULTIPLE_FILES_FOUND =322, //b<br />
<br />
NO_SUCH_ANIME =330, //b<br />
NO_SUCH_ANIME_DESCRIPTION =333, //b<br />
NO_SUCH_EPISODE =340, //b<br />
NO_SUCH_PRODUCER =345, //b<br />
NO_SUCH_GROUP =350, //b<br />
<br />
BUDDY_ALREADY_ADDED =355, //c<br />
NO_SUCH_BUDDY =356, //c<br />
BUDDY_ALREADY_ACCEPTED =357, //c<br />
BUDDY_ALREADY_DENIED =358, //c<br />
<br />
NO_SUCH_VOTE =360, //b<br />
INVALID_VOTE_TYPE =361, //b<br />
INVALID_VOTE_VALUE =362, //b<br />
PERMVOTE_NOT_ALLOWED =363, //b<br />
ALREADY_PERMVOTED =364, //b<br />
<br />
NOTIFICATION_DISABLED =370, //a<br />
NO_SUCH_PACKET_PENDING =380, //a<br />
NO_SUCH_ENTRY_M =381, //a<br />
NO_SUCH_ENTRY_N =382, //a<br />
<br />
NO_SUCH_MESSAGE =392, //a<br />
NO_SUCH_NOTIFY =393, //a<br />
NO_SUCH_USER =394, //a<br />
<br />
<br />
// NEGATIVE 4XX<br />
<br />
<br />
NOT_LOGGED_IN =403, //a<br />
<br />
NO_SUCH_MYLIST_FILE =410, //a<br />
NO_SUCH_MYLIST_ENTRY =411, //a<br />
<br />
<br />
// CLIENT SIDE FAILURE 5XX<br />
<br />
<br />
LOGIN_FAILED =500, //a<br />
LOGIN_FIRST =501, //a<br />
ACCESS_DENIED =502, //a<br />
CLIENT_VERSION_OUTDATED =503, //a<br />
CLIENT_BANNED =504, //a<br />
ILLEGAL_INPUT_OR_ACCESS_DENIED =505, //a<br />
INVALID_SESSION =506, //a<br />
NO_SUCH_ENCRYPTION_TYPE =509, //c<br />
ENCODING_NOT_SUPPORTED =519, //c<br />
<br />
BANNED =555, //a<br />
UNKNOWN_COMMAND =598, //a<br />
<br />
<br />
// SERVER SIDE FAILURE 6XX<br />
<br />
<br />
INTERNAL_SERVER_ERROR =600, //a<br />
ANIDB_OUT_OF_SERVICE =601, //a<br />
SERVER_BUSY =602, //d<br />
API_VIOLATION =666, //a<br />
</pre><br />
<br />
== Changelog ==<br />
<pre><br />
0.03b - 23.07.2006<br />
BUDDY*, PRODUCER, ENCRYPT, ENCODING, USER, VERSION commands added<br />
AUTH, NOTIFY, ANIME, FILE commands extended<br />
STATS and TOP commands disabled due performance issues<br />
several fixes<br />
<br />
0.03 - 13.01.2006<br />
ANIME, EPISODE, GROUP, STATS, TOP, UPTIME, MYLISTSTATS, VOTE and RANDOM commands added<br />
it is now possible to use html escaped code in mylist fields, and '='<br />
updated epno in default file name (for new specials)<br />
... (a lot of stuff already forgotten)<br />
<br />
0.02c - 10.10.2004<br />
LOGOUT now requires the session string too<br />
Note on 6xx server errors and tags added<br />
<br />
0.02b - 14.08.2004<br />
503 INVALID SESSION changed to 506 INVALID SESSION<br />
BUGFIX: 200 message on AUTH did not contain a session key<br />
BUGFIX: 1 internal bug fixed<br />
<br />
0.02 - 13.08.2004<br />
new session key needs to be send with each command<br />
random udp ports no longer required<br />
FILE, MYLIST, MYLISTDEL, MYLISTADD commands added<br />
Some textparts of return values changed<br />
additional documentation added<br />
check the caching section!<br />
<br />
0.01b - 12.08.2004<br />
added NOTIFYLIST, NOTIFYGET, NOTIFYACK, SENDMSG commands<br />
<br />
0.01 - 10.08.2004<br />
initial version<br />
</pre><br />
<br />
[[Category:Development]]<br />
[[Category:UDP]]<br />
[[Category:API]]</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=11290API2008-11-30T22:47:33Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data. Feel free to drop by on IRC if you have any questions or simply don't know where to start :o)<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]], [[UDP API DEV]], [[UDP Clients]], [[WebAOM]]<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides ''read-only'' access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]], [[AniDB O'Matic]]<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat.gz http://anidb.net/api/animetitles.dat.gz]<br />
<br />
[http://anidb.net/api/animetitles.xml.gz http://anidb.net/api/animetitles.xml.gz]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}<br />
<br />
[[Category:Development]]<br />
[[Category:API]]</div>Exphttps://wiki.anidb.net/index.php?title=SSL_Encryption&diff=10901SSL Encryption2008-06-03T12:30:09Z<p>Exp: </p>
<hr />
<div>{{t|1091|Quote from exp on the anidb tracker (2008-04-17 23:43)}}<br />
<br />
URL: https://anidb.net<br />
<br />
*2008-06-03: new ssl certificates*<br />
<br />
ROOT CA: http://static.anidb.net/misc/ca.crt<br />
SHA1 Fingerprint=BE:BB:3D:9D:5D:77:FE:AB:77:89:F5:37:57:DB:82:AA:C3:3A:CF:CA<br />
{{Eyecatch|Please note:|<br />
<br />
All requests for images, stylesheets and other page elements are NOT encrypted. Such requests should usually not be directed towards "anidb.net" but rather towards specific subdomains (i.e. "static.anidb.net" or "imgX.anidb.net"). Requests to subdomains do not include the anidb authentication cookies and should thus not allow attackers to hijack your anidb session.<br />
<br />
This means that:<br />
<br />
a) If we've accidentially hardcoded an access to http://anidb.net somewhere, this would instantly allow an attacker to obtain your session authorisation cookie.<br />
<br />
b) Attackers may be able to infer the anidb pages you're browsing on and your anidb user id by looking at the cookie and referer data sent to anidb subdomains when stylesheet and image data is loaded. For maximum security you should browse anidb with all images and stylesheets disabled.<br />
Or, the recommended approach, use some VPN.}}</div>Exphttps://wiki.anidb.net/index.php?title=AniDB:CSS_DEV&diff=10824AniDB:CSS DEV2008-05-12T20:53:59Z<p>Exp: .info -> .net</p>
<hr />
<div>{{TOCright}}<br />
<br />
This pages content is centered around CSS development via Anidb's [http://en.wikipedia.org/wiki/Subversion_(software) SVN]. The goals of the SVN are:<br />
# Keeping track of all CSS styles.<br />
# Version control for developers.<br />
# Automatical upload procedure to one of anidbs server.<br />
# Automatical update of the drop down menu in the [[profile]].<br />
<br />
{{eyecatch|Note|You should build your style on already existing code. Check the folder '''css/common'''. Examples can be found in '''css/sub'''.}}<br />
<br />
==Getting the Source of a Style==<br />
If you only want to get the latest version of all files belonging to a particular style, you don't need to install an SVN client. A simpler approach would be to download the files from the SVN repository with your webbrowser.<br />
<br />
To do that go to [http://dev.anidb.net/websvn/listing.php?repname=AniDB+CSS&path=%2Ftrunk%2Fcss%2F&rev=0&sc=0 http://dev.anidb.net/websvn/] and click the "tarball" link next to the style you want to download. You will need a compression program which can handle ".tar.gz" or ".tgz" files, but nowadays most tools support these formats.<br />
<br />
If you want to contribute your own styles, you will need to install an SVN client.<br />
<br />
==Connecting to SVN==<br />
First thing you need is a client. You can of course use any svn client you want, but we recommend [http://tortoisesvn.tigris.org/ Tortoise SVN] for windows user as it nicely integrates into Explorer and makes it, as such, very easy to use. After that you specify a dir on your hdd where you want to put the files and checkout the current CVS version.<br />
<br />
If you don't like integration you could use [http://www.syntevo.com/smartsvn/ SmartSVN].<br />
<br />
For Mac users we recommend [http://rapidsvn.tigris.org/ RapidSVN]. RapidSVN does not integrate with the Mac Finder as much as Tortoise does with Explorer. Instead it is a standalone app that you use to browse the files on the SVN server (Repository) as well as your local files (Working Copy).<br />
<br />
By SVN Client: '''svn://dev.anidb.net/svn/trunk'''<br/><br />
For write access contact an [[User:Mods|AniDB Mod]].<br />
<br />
If you have further questions feel free to ask in {{irclink|anidb-dev}} or {{irclink|anidb}} or pm a mod.<br />
<br />
===SVN via Tortoise===<br />
Here some tortoise specific notes.<br />
<br />
After installing a version and having picked a dir, where to put your stuff right click in the new dir and select '''checkout''' In the following dialog enter svn://dev.anidb.net/svn/trunk/ in the url field. This will download the whole content of the svn to this dir. After this is done you will notice a green thingy in the file and dirname icons. (This means your local version matches the version in the SVN Once you edit any file it will turn red)<br />
<br />
To add new content you can create new files and dirs like you are used via explorer. Editing the files can be done via any editor you want as well. You will notice no green thingy turning up for anything new you created. This means the file is not in the svn and hence not recognized. You have to add them first. In the context menu you will find an option who would have guessed it named '''add'''. This only creates a placeholder in the SVN. No actual content is written yet.<br />
Deleting things works analog. You first have to delete the placeholder.<br />
<br />
===SVN via RapidSVN===<br />
To get started, run RapidSVN and go to '''Repository -&gt; Checkout''' and enter svn://dev.anidb.net/svn/trunk in the URL field and your desired local directory in the Destination Directory field.<br />
<br />
You may now create/edit/delete any files or folders in your working copy dir. Any changes you make will be automatically recognized and highlighted in the RapidSVN file browser: items edited or deleted will have a red icon, and items created will have a question mark icon. To add created items to the SVN right click on them and choose '''Add''' (or select them and hit '''cmd+A'''). Note that Adding only lets them be recognized by the SVN, it does not commit their creation to the server. To commit changes, select the files, right click and choose '''Commit'''. You will be given a dialog box in which you may annotate what this commit entails. You may choose to leave this blank, but it's good practice to log your changes so others know what you've changed.<br />
<br />
===Committing===<br />
After you have edited, added or even deleted some things you still have to commit your changes. This will write the things to the SVN. <br />
<br />
You can commit on a file or dirlevel. Meaning you can commit a big change with multiple files or folders involved or just specific files. '''To not spam us all into oblivion with SVN mails it's recommended to bundle some commits.'''<br />
<br />
Take also note that you should before editing anything '''always''' update your local files with the ones in the SVN.<br />
<br />
==Adding a new project==<br />
There are a few things that needs to get done when adding a new project:<br />
# Add a new dir for your project in the css folder (<tt>/trunk/css/{your_style}</tt>)<br />
# Name the dir whatever you want, but '''NO SPACES!'''.<br />
# If you are using images different from the anidb ones add a <tt>/images/</tt> dir below your project (i.e. <tt>/trunk/css/{your_style}/images</tt>)<br />
#* You may use subfolders below that one if you want.<br />
# Add a screenshot and a thumbnail of your style in the images folder with the following specifications:<br />
#* Filename: thumbnail.png<br />
#* Resolution: 210x150 (width is more or less optional, height should stay 150px, but try to keep to these values)<br />
#* Filename: screenshot.png<br />
#* Resolution: doesn't matter. just use something sensible<br />
# Add a description file in the root of your project, add the following lines and fill them accordingly as you see fit:<br />
#* title:<br />
#* creator: <br />
#* update: <br />
#* status: <br />
#* description: <br />
# (optional) For autoprocessing edit the '''styleslist''' file and add a relative path for the main css file (the one with all your <tt>@import</tt> lines, i.e. <tt>./sub/silver/main.css</tt>)<br />
#* You can disable processing by adding a # in front of the line.<br />
<br />
In the end you should end up with a structure like this:<br />
/trunk/css/<your project><br />
/trunk/css/<your project>/description<br />
/trunk/css/<your project>/images<br />
/trunk/css/<your project>/images/screenshot.png<br />
/trunk/css/<your project>/images/thumbnail.png<br />
<br />
==Merging & Hosting==<br />
Every css that is used this way gets merged into 1 file (to reduce http overhead), uploaded to 1 of anidb's server and added to the style selection in the anidb [[profile]]. To realize this a python script is used, doing the following:<br />
<br />
# read the file '''stylelist''' in the same folder as the script (ignores lines starting with #)<br />
# takes the first line from '''stylelist''' and reads the main css file for this style<br />
# reads every @import line, opens the file specified behind those and copies the content to a new file<br />
# repeats the procedure for the next lines aside of the # ones<br />
# checks if there are is an /images/ folder below the css folder and if yes collects a list of all gif/jpg/png files<br />
# uploads the big css file and the images to 1 of anidb's server<br />
<br />
[[Category:Development]][[Category:CSS]]</div>Exphttps://wiki.anidb.net/index.php?title=SigServer:SignatureXML&diff=10766SigServer:SignatureXML2008-05-11T16:18:04Z<p>Exp: /* Shape */</p>
<hr />
<div>{{TOCright}}<br />
<br />
Back to: [[SigServer:Documentation]]<br />
<br />
= Root Element =<br />
Each signature is required to have a root element, <signature> in this case. The root tag accepts the attribute quality. It set's the quality when output as JPEG is selected. It may be set to anything between 0 - 100, default 90.<br />
<br />
'''Example'''<br />
<signature quality="90"><br />
</signature><br />
<br />
The root element has two child elements, [[#Defaults|<defaults>]] and [[#Layout|<layout>]].<br />
<br />
== Defaults ==<br />
Inside this element you may override an element's default value.<br />
<br />
To override default element values the <defaults> tag is used. Inside the <defaults> tag elements are defined as usual.<br />
<br />
'''Example'''<br />
<signature><br />
<defaults><br />
<text color="#ff0000" /><br />
<shape type="rectangle" color="#0000ff" /><br />
</defaults><br />
</signature><br />
<br />
This sets the texts' default color to red and the rectangles' to blue.<br />
<br />
=== User defined variables ===<br />
'''[[SigServer:SignatureMath#Variables|New way of setting user variables available.]]''' Old way deprecated.<br />
<br />
== Layout ==<br />
All text, shapes and images are controlled by sub elements to <code><layout></code>.<br />
<br />
=== Image ===<br />
The <code><image></code> tag allows the user to include an image, chosen from the collection in the library section.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Description !! Values !! Default<br />
|-<br />
| src || Sets which image that should be included. || Any title available in the library || ''none''<br />
|-<br />
| position || Sets the included image's position. || ''x-pos''x''y-pos''|| 0x0<br />
|-<br />
| size || Sets the included image's size. || ''width''x''height'' || Image's own size<br />
|-<br />
| display || Sets whether the image is visible or not. || ''true'' or ''false'' || true<br />
|}<br />
<br />
=== Shape ===<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Description !! Values !! Default<br />
|-<br />
| type || Defines the type of shape. || rectangle, ellipse, pie, arc or line || ''none''<br />
|-<br />
| position || Sets the shape's position. || ''x-pos''x''y-pos''|| 0x0<br />
|-<br />
| size || Sets the shape's size. || ''width''x''height'' || 10x10<br />
|-<br />
| color || Sets the shape's color. || ''#<hex>'' or ''R, G, B'' || #000000<br />
|-<br />
| alpha || Sets the shape's opacity. Doesn't work very well with ellipses || ''1-100'' || 100<br />
|-<br />
| hollow || Sets whether the shape should be hollow or not. || ''true'' or ''false'' || false<br />
|-<br />
| thickness || Sets the border's thickness. Works on lines and hollow shapes. || ''1-10'' || 1<br />
|-<br />
| display || Sets whether the shape is visible or not. || ''true'' or ''false'' || true<br />
|-<br />
| angle ''(pie and arc only)'' || Sets the pie's/arc's start and end angle in degrees || ''stop'' or ''start''-''end'' || 0-90<br />
|}<br />
<br />
=== Text ===<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Description !! Values !! Default<br />
|-<br />
| position || Sets the text's position. Relative to the bottom left corner, if nothing else is set in the align attribute. || ''x-pos''x''y-pos''|| 0x0<br />
|-<br />
| size || Sets the text's size. || ''width''x''height'' || 10x10<br />
|-<br />
| color || Sets the text's color. || ''#<hex>'' or ''R, G, B'' || #000000<br />
|-<br />
| alpha || Sets the text's opacity. || ''1-100'' || 100<br />
|-<br />
| align || Sets the text's alignment. || ''bottom-left'', ''bottom-right'', ''top-left'' or ''top-right'' || bottom-left<br />
|-<br />
| face || Sets the text's face. || See [[SigServer:Fonts|font list]] for all font's with recommended size || verdana<br />
|-<br />
| angle || Sets the text's angle. || ''0-359'' || 0<br />
|-<br />
| line-space || Sets the spacing between the lines. || ''number'' || 1.5<br />
|-<br />
| thickness || Sets the border's thickness. Works on lines and hollow shapes. || ''1-10'' || 1<br />
|-<br />
| display || Sets whether the text is visible or not. || ''true'' or ''false'' || true<br />
|}<br />
<br />
==== Line ====<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Description !! Values !! Default<br />
|-<br />
| colspan="4" | Same as Text except no 'position' or 'align' attribute.<br />
|}<br />
<br />
[[Category:SigServer]]</div>Exphttps://wiki.anidb.net/index.php?title=File:AniTracker_AddFiles.png&diff=10647File:AniTracker AddFiles.png2008-05-03T13:05:40Z<p>Exp: uploaded a new version of "Image:AniTracker AddFiles.png"</p>
<hr />
<div>AniTracker MainTab (Add Files)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10589AniDB Applet DEV2008-04-25T18:19:16Z<p>Exp: /* Suggestion 1 */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of [[AniDB_Clients]] ([[UDP_Clients]]) which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Very simple one page interface with few options.<br />
<br />
The user simply selects a directory and a list is filled with all the supported media files located within that directory. The user can then decide whether files should be renamed or not and then presses the big "Start" button. All files are then hashed, identified and added to mylist one by one and the progress bar and the corresponding file entries in the list are updated accordingly. Once everything is done a notification sound is played and small popup is displayed (i.e. "Successfully added XXX files to your mylist.", with buttons "Restart" and "Close").<br />
<br />
=== Page 1 - Main (and only) page ===<br />
<br />
* Short description sentence at the top<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Initially empty and greyed out list view with displays all the media files which will be hashed/added due to the selected files/directories. Populated once the user selected files/directories.<br />
** Once processing starts files are marked (by colour, by image, ...) according to their state (not yet processed, processing, known and in mylist, known and not in mylist, unknown)<br />
** optional: context menu which allows removal of specific files<br />
* Options<br />
** Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
*** Using AniDB profile title language settings for selecting anime and episode title<br />
* Progress<br />
** Current file progress<br />
** Overall progress<br />
** Statistics and estimates (file x of x, elapsed time xx:xx:xx, time left: xx:xx:xx)<br />
* Button<br />
** advanced mode (small) (jumps to different UI for advanced users, not specified here)<br />
** start (big) (inactive untill files/directories are selected)<br />
<br />
== Suggestion 2 ==<br />
<br />
Wizard style interface with 4 pages.<br />
<br />
=== Page 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Page 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Page 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to Page 1)<br />
** Next<br />
<br />
=== Page 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to Page 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to Page 1, clear file/directory selection)<br />
<br />
== Suggestion X ==<br />
<br />
Feel free to add your own suggestions...</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10588AniDB Applet DEV2008-04-25T18:18:15Z<p>Exp: /* Possible Implementations */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of [[AniDB_Clients]] ([[UDP_Clients]]) which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Very simple one page interface with few options. The user simply selects a directory and a list is filled with all the supported media files located within that directory. The user can then decide whether files should be renamed or not and then presses the bug "Start" button. All files are then hashed, identified and added to mylist one by one and the progress bar and the corresponding file entries in the list are updated accordingly. Once everything is done a notification sound is played and small popup is displayed (i.e. "Successfully added XXX files to your mylist.", with buttons "Restart" and "Close").<br />
<br />
=== Page 1 - Main (and only) page ===<br />
<br />
* Short description sentence at the top<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Initially empty and greyed out list view with displays all the media files which will be hashed/added due to the selected files/directories. Populated once the user selected files/directories.<br />
** Once processing starts files are marked (by colour, by image, ...) according to their state (not yet processed, processing, known and in mylist, known and not in mylist, unknown)<br />
** optional: context menu which allows removal of specific files<br />
* Options<br />
** Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
*** Using AniDB profile title language settings for selecting anime and episode title<br />
* Progress<br />
** Current file progress<br />
** Overall progress<br />
** Statistics and estimates (file x of x, elapsed time xx:xx:xx, time left: xx:xx:xx)<br />
* Button<br />
** advanced mode (small) (jumps to different UI for advanced users, not specified here)<br />
** start (big) (inactive untill files/directories are selected)<br />
<br />
== Suggestion 2 ==<br />
<br />
Wizard style interface with 4 pages.<br />
<br />
=== Page 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Page 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Page 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to Page 1)<br />
** Next<br />
<br />
=== Page 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to Page 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to Page 1, clear file/directory selection)<br />
<br />
== Suggestion X ==<br />
<br />
Feel free to add your own suggestions...</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10586AniDB Applet DEV2008-04-25T17:52:19Z<p>Exp: /* Possible Implementations */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of [[AniDB_Clients]] ([[UDP_Clients]]) which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 pages.<br />
<br />
=== Page 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Page 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Page 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to Page 1)<br />
** Next<br />
<br />
=== Page 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to Page 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to Page 1, clear file/directory selection)<br />
<br />
== Suggestion 2 ==<br />
<br />
Feel free to add your own suggestions...</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10585AniDB Applet DEV2008-04-25T17:51:39Z<p>Exp: /* Goal */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of [[AniDB_Clients]] ([[UDP_Clients]]) which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 pages.<br />
<br />
=== Page 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Page 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Page 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to Page 1)<br />
** Next<br />
<br />
=== Page 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to Page 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to Page 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10584AniDB Applet DEV2008-04-25T17:40:41Z<p>Exp: /* Suggestion 1 */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of AniDB Clients which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 pages.<br />
<br />
=== Page 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Page 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Page 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to Page 1)<br />
** Next<br />
<br />
=== Page 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to Page 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to Page 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10583AniDB Applet DEV2008-04-25T17:38:24Z<p>Exp: /* Goal */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
AniDB already offers a number of AniDB Clients which can be used for this pourpose and some can even be run as Java applets. However, none of the available clients is user friendly enough to be of use to the general userbase of AniDB. Thus, many people are still adding individual files manually to their mylists or are simply using generic files. The Java Applet is meant to bring the benefits of automated mylist maintenance which is possible by means of AniDB Clients to a new audience.<br />
<br />
We are currently looking for people who'd be willing to take on this task. If you're interested, please drop by in #anidb on irc.synirc.net.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10582AniDB Applet DEV2008-04-25T17:34:48Z<p>Exp: /* Requirements */</p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API, see: [[UDP_API_Definition]]<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10581AniDB Applet DEV2008-04-25T12:22:28Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
<br />
= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10580AniDB Applet DEV2008-04-25T12:21:43Z<p>Exp: /* Dialog 3 - Identified files */</p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
** Using AniDB profile title language settings for selecting anime and episode title<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10579AniDB Applet DEV2008-04-25T12:19:50Z<p>Exp: /* Requirements */</p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
* Sun Java plug-in 1.5 compatible<br />
** Targets: Firefox and Opera (latest versions) on Windows, Linux, MacOS<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10578AniDB Applet DEV2008-04-25T08:51:50Z<p>Exp: /* Requirements */</p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
* Sun Java plug-in 1.5 compatible<br />
* Open Source<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10577AniDB Applet DEV2008-04-25T08:01:02Z<p>Exp: /* Dialog 1 - Directory selection */</p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
** optional: support drag and drop of files/directories under windows<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10576AniDB Applet DEV2008-04-25T07:59:49Z<p>Exp: </p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
** No options which are unlikely to be of interest to a large majority of users<br />
*** Advanced mode for everything else<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
Allows the user to select the file or directory which should be scanned for new files.<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
Hashes the selected file or all media files located within the selected directories (or their subdirectories...) and identifies all files via a FILE command of the UDP API. No mylist modifications are made at this point.<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
Displays an overview of all hashed files to the user together with their current status. This page/phase does not interact with the UDP API.<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
** Optional: right click context menu in tree/list view, i.e. to remove a file/entire (sub)directory from the list<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
Executes the actual mylist adding via the UDP API. Initially displays the progress of the adding process and later displays an "All done" message.<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB_Applet_DEV&diff=10575AniDB Applet DEV2008-04-25T07:46:21Z<p>Exp: New page: = Goal = A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist. ...</p>
<hr />
<div>= Goal =<br />
<br />
A very '''simple to use''' Java Applet which is directly integrated with the AniDB website and enables users to easily add files on their local harddrive to their AniDB mylist.<br />
<br />
= Requirements =<br />
<br />
* Extremely simple user interface<br />
** Usage should be as intuitive as possible for novice users<br />
* Tight integration with the AniDB website<br />
** Directly available via a link in the AniDB navbar<br />
** No additional login/authorisation<br />
* Use of the UDP API<br />
<br />
= Possible Implementations =<br />
<br />
== Suggestion 1 ==<br />
<br />
Wizard style interface with 4 dialogs.<br />
<br />
=== Dialog 1 - Directory selection ===<br />
<br />
* Short two sentence introduction to applet<br />
* File/Directory selection element which allows selection of a file or directory (with ctrl/shift also multiple elements)<br />
* Buttons<br />
** Advanced Mode (jumps to different UI for advanced users, not specified here)<br />
** Next<br />
<br />
=== Dialog 2 - Hashing ===<br />
<br />
* One sentence explanation of current activity<br />
* Directory/Name of currently processed file<br />
* Progress<br />
** Per file progress bar<br />
** Overall progress bar<br />
* Some statistics<br />
** i.e. files already hashed, files left to hash, size, speed, time elapsed, estimated time left, ...<br />
* Buttons<br />
** Back<br />
** Next (deactivated while hashing)<br />
<br />
=== Dialog 3 - Identified files ===<br />
<br />
* One sentence explanation<br />
* Tree or list view of hashed files and their status<br />
** Unknown / Known / Already in mylist<br />
* Checkbox: "[ ] Rename known files according to AniDB naming scheme"<br />
* Buttons<br />
** Back (jumps to dialog 1)<br />
** Next<br />
<br />
=== Dialog 4 - Adding Progress/Finished ===<br />
<br />
* One sentence explanation<br />
* Overall progress bar<br />
* Some statistics<br />
* All done message after all known files which weren't yet in the users mylist have been added<br />
* Buttons<br />
** Back (jumps to dialog 3, handling of already partly executed actions is undefined)<br />
** Restart (jump to dialog 1, clear file/directory selection)</div>Exphttps://wiki.anidb.net/index.php?title=AniDB:General_disclaimer&diff=10572AniDB:General disclaimer2008-04-24T19:15:58Z<p>Exp: </p>
<hr />
<div>To solve some common misconceptions about anidb:<br />
<br />
:* AniDB does neither host any files nor does AniDB link to any files.<br><br />
:* You can '''not''' download any files from AniDB.<br><br />
:* You can '''not''' download any files in our IRC Channels or Forum.<br><br />
:* Offering files or direct links to files in the forum or our irc channel will get you banned, as will asking for those.<br />
:* In cases were AniDB does link to external webpages we want to underline that those sites are not part of AniDB and are as such not under our control. We are not responsible for any content found on such sites.<br />
:* AniDB is a public anime database, everyone can [http://anidb.net/perl-bin/animedb.pl?show=signup signup] and add info to the DB. DB entries are not verified by AniDB staff members before they are inserted into the DB. This means that the AniDB staff can not guarantee the validity of any entries nor can they be held responsible for DB entries made by non AniDB staff members.<br />
:* Should you need to contact an AniDB representative please message [http://forum.anidb.net/ucp.php?i=pm&mode=compose&u=2 EXP] on the AniDB forum.</div>Exphttps://wiki.anidb.net/index.php?title=SSL_Encryption&diff=10518SSL Encryption2008-04-19T07:30:35Z<p>Exp: Protected "SSL Encryption" [edit=sysop:move=sysop]</p>
<hr />
<div>{{t|1091|Quote from exp on the anidb tracker (2008-04-17 23:43)}}<br />
<br />
URL: https://anidb.net<br />
<br />
ROOT CA: http://static.anidb.net/misc/ca.crt<br />
SHA1 Fingerprint=42:B5:D9:B7:2A:AC:18:5F:A7:10:4C:66:A6:B2:3A:E4:3C:EF:FC:D6<br />
<br />
{{Eyecatch|Please note:|<br />
<br />
All requests for images, stylesheets and other page elements are NOT encrypted. Such requests should usually not be directed towards "anidb.net" but rather towards specific subdomains (i.e. "static.anidb.net" or "imgX.anidb.net"). Requests to subdomains do not include the anidb authentication cookies and should thus not allow attackers to hijack your anidb session.<br />
<br />
This means that:<br />
<br />
a) If we've accidentially hardcoded an access to http://anidb.net somewhere, this would instantly allow an attacker to obtain your session authorisation cookie.<br />
<br />
b) Attackers may be able to infer the anidb pages you're browsing on and your anidb user id by looking at the cookie and referer data sent to anidb subdomains when stylesheet and image data is loaded. For maximum security you should browse anidb with all images and stylesheets disabled.<br />
Or, the recommended approach, use some VPN.}}</div>Exphttps://wiki.anidb.net/index.php?title=SSL_Encryption&diff=10517SSL Encryption2008-04-19T07:30:12Z<p>Exp: Unprotected "SSL Encryption"</p>
<hr />
<div>{{t|1091|Quote from exp on the anidb tracker (2008-04-17 23:43)}}<br />
<br />
URL: https://anidb.net<br />
<br />
ROOT CA: http://static.anidb.net/misc/ca.crt<br />
SHA1 Fingerprint=42:B5:D9:B7:2A:AC:18:5F:A7:10:4C:66:A6:B2:3A:E4:3C:EF:FC:D6<br />
<br />
{{Eyecatch|Please note:|<br />
<br />
All requests for images, stylesheets and other page elements are NOT encrypted. Such requests should usually not be directed towards "anidb.net" but rather towards specific subdomains (i.e. "static.anidb.net" or "imgX.anidb.net"). Requests to subdomains do not include the anidb authentication cookies and should thus not allow attackers to hijack your anidb session.<br />
<br />
This means that:<br />
<br />
a) If we've accidentially hardcoded an access to http://anidb.net somewhere, this would instantly allow an attacker to obtain your session authorisation cookie.<br />
<br />
b) Attackers may be able to infer the anidb pages you're browsing on and your anidb user id by looking at the cookie and referer data sent to anidb subdomains when stylesheet and image data is loaded. For maximum security you should browse anidb with all images and stylesheets disabled.<br />
Or, the recommended approach, use some VPN.}}</div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10500HTTP API Definition2008-04-16T20:08:55Z<p>Exp: anime url can be specified in API documentation</p>
<hr />
<div>{{TOCright}}<br />
= Early Draft =<br />
<br />
Note: This is still a very early draft and has not yet been implemented!<br />
<br />
= General =<br />
<br />
The HTTP XML API is only a small part of the AniDB API framework, please refer to [[API]] for an overview.<br />
<br />
== Encoding ==<br />
<br />
All content is UTF8 encoded and gzip compressed (you may have to handle the decompressing yourself, if your HTTP library doesn't support compression of HTTP data).<br />
<br />
== Flooding ==<br />
<br />
All users of this API should employ heavy local caching. Requesting the same dataset multiple times on a single day can get you banned. The same goes for request flooding. You should not request more than one page every two seconds on average.<br />
<br />
== Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
All users of the HTTP XML API need to be registered and have to provide their registered client identifier and version number on each request. For more information on client registration visit [[UDP_API_Definition]].<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
= Anime Search =<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short titles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
= Anime Data =<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10490HTTP API Definition2008-04-13T19:19:00Z<p>Exp: /* General */</p>
<hr />
<div>{{TOCright}}<br />
= Early Draft =<br />
<br />
Note: This is still a very early draft and has not yet been implemented!<br />
<br />
= General =<br />
<br />
The HTTP XML API is only a small part of the AniDB API framework, please refer to [[API]] for an overview.<br />
<br />
== Encoding ==<br />
<br />
All content is UTF8 encoded and gzip compressed (you may have to handle the decompressing yourself, if your HTTP library doesn't support compression of HTTP data).<br />
<br />
== Flooding ==<br />
<br />
All users of this API should employ heavy local caching. Requesting the same dataset multiple times on a single day can get you banned. The same goes for request flooding. You should not request more than one page every two seconds on average.<br />
<br />
== Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
All users of the HTTP XML API need to be registered and have to provide their registered client identifier and version number on each request. For more information on client registration visit [[UDP_API_Definition]].<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
= Anime Search =<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short tiles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
= Anime Data =<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10489HTTP API Definition2008-04-13T18:48:44Z<p>Exp: /* Parameters */</p>
<hr />
<div>{{TOCright}}<br />
= Early Draft =<br />
<br />
Note: This is still a very early draft and has not yet been implemented!<br />
<br />
= General =<br />
<br />
== Encoding ==<br />
<br />
All content is UTF8 encoded and gzip compressed (you may have to handle the decompressing yourself, if your HTTP library doesn't support compression of HTTP data).<br />
<br />
== Flooding ==<br />
<br />
All users of this API should employ heavy local caching. Requesting the same dataset multiple times on a single day can get you banned. The same goes for request flooding. You should not request more than one page every two seconds on average.<br />
<br />
== Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
All users of the HTTP XML API need to be registered and have to provide their registered client identifier and version number on each request. For more information on client registration visit [[UDP_API_Definition]].<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
= Anime Search =<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short tiles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
= Anime Data =<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10488HTTP API Definition2008-04-13T18:45:48Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
= Early Draft =<br />
<br />
Note: This is still a very early draft and has not yet been implemented!<br />
<br />
= General =<br />
<br />
== Encoding ==<br />
<br />
All content is UTF8 encoded and gzip compressed (you may have to handle the decompressing yourself, if your HTTP library doesn't support compression of HTTP data).<br />
<br />
== Flooding ==<br />
<br />
All users of this API should employ heavy local caching. Requesting the same dataset multiple times on a single day can get you banned. The same goes for request flooding. You should not request more than one page every two seconds on average.<br />
<br />
== Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
<br />
= Anime Search =<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short tiles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
= Anime Data =<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10487HTTP API Definition2008-04-13T18:45:19Z<p>Exp: /* Early Draft */</p>
<hr />
<div>= Early Draft =<br />
<br />
Note: This is still a very early draft and has not yet been implemented!<br />
<br />
= General =<br />
<br />
== Encoding ==<br />
<br />
All content is UTF8 encoded and gzip compressed (you may have to handle the decompressing yourself, if your HTTP library doesn't support compression of HTTP data).<br />
<br />
== Flooding ==<br />
<br />
All users of this API should employ heavy local caching. Requesting the same dataset multiple times on a single day can get you banned. The same goes for request flooding. You should not request more than one page every two seconds on average.<br />
<br />
== Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
<br />
= Anime Search =<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short tiles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
= Anime Data =<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
== Access ==<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
== Data ==<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10486HTTP API Definition2008-04-13T18:40:07Z<p>Exp: </p>
<hr />
<div>= Early Draft =<br />
<br />
== General Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
<br />
== Anime Search ==<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
<anime id="1"><br />
<titles><br />
<!-- always includes the main title as well as all official titles, synonyms and short tiles are not listed --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
</anime><br />
<anime id="2"><br />
<titles><br />
...<br />
</titles><br />
</anime><br />
...<br />
</search><br />
</pre></code><br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10485HTTP API Definition2008-04-13T18:37:37Z<p>Exp: /* Anime Search */</p>
<hr />
<div>= Early Draft =<br />
<br />
== General Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
<br />
== Anime Search ==<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string} [required]<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<search><br />
</search><br />
</pre></code><br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10484HTTP API Definition2008-04-13T18:35:47Z<p>Exp: </p>
<hr />
<div>= Early Draft =<br />
<br />
== General Parameters ==<br />
<br />
These parameters apply to all HTTP XML API pages and should always be added to the request URLs.<br />
<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&...<br />
<br />
<br />
== Anime Search ==<br />
<br />
Allows lookup of AniDB anime ids (AIDs) by anime title. Additionally AniDB also provides a daily dump with all anime titles which can be used to implement client-side searches, see: [[API]].<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* query={string}<br />
** the query string to search for.<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=search&query=sometitle<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
</pre></code><br />
<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&...&t=anime&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=Main_Page&diff=10479Main Page2008-04-11T20:03:10Z<p>Exp: </p>
<hr />
<div><div style="width: 47%; padding: 1%; float: left; background-color: #F8FFFF; border: 3px black double; margin-bottom: 1em;"><br />
== About AniDB ==<br />
<br />
'''[[AniDB:About|AniDB]]''' is non-profit database of anime information that is freely open to the public. As well as providing general anime information, if you [[AniDB:Sign up|sign up]] you can organise your anime collection, keep track of what you've seen and how much you liked it, and all kinds of nifty extras. <br />
<br />
To get your own [[mylist]] started, you can either add [[Content:Files|files]] you have on your harddrive, easiest by ''hashing'' them with an [[AniDB Clients|AniDB Client]], or use a [[Files:Generic files|generic]] for anything you've seen in a cinema or own on DVD. Read '''[[How to add files to your mylist|full details]]''' for more.<br />
<br />
Even without a mylist, you can [[Votes|vote]] for various things in AniDB: [[Votes: Anime|anime]], [[Votes: Episodes|episodes]], [[Votes: Groups|groups]] - and comment and vote on [[Votes: Anime: Group|groups releases of anime]] and [[AniDB:Review_Comments|reviews]] in the database. If you vote for the anime you've seen you can use the [[Anime Hint|anime hint]] feature to see what else you might like to watch.<br />
<br />
</div><br />
<div style="width: 47%; padding: 1%; float: right; background-color: #FFF8FF; border: 3px black double; margin-bottom: 1em;"><br />
== Frequently Asked Questions ==<br />
<br />
*[[FAQ:Anime|What is anime?]]<br />
*[[FAQ:Mylist|How do I add anime to my list?]]<br />
*[[FAQ:Signup|Help! I'm having problems signing up, what's wrong?]]<br />
*[[FAQ:Login problems|Help! I'm having problems logging in! What should I do?]]<br />
*[[FAQ:Website problems|Help! The website is not behaving right! Is it broken?]]<br />
*[[FAQ:Content|The database is missing this anime/file, why don't you add it?]]<br />
*[[FAQ:Creqs|There's a mistake in AniDB, can you fix it?]]<br />
*[[FAQ:Recommendations|What anime should I watch next?]]<br />
*[[FAQ:Pictures|What anime is this picture from?]]<br />
*[[FAQ:Downloads|How do I download anime from the database?]]<br />
*[[FAQ:Chii|Who's Chii, and where do I find her?]]<br />
*[[FAQ:Girls|Who's that girl?]]<br />
<br />
''See the [[FAQ:Index|complete list]] for more''<br />
</div><br />
<br />
<div style="clear: both; padding: 1em; text-align: center; background-color: #FFFFF8; border: 3px black double; margin-bottom: 1em;"><br />
== Index ==<br />
<br />
{| style="background: transparent; text-align: left; width: 100%;"<br />
| valign="top" width="33%" |<br />
=== Using AniDB ===<br />
*[[AniDB:Sign up|Sign up]]<br />
*[[MyList|Keeping track of your anime]]<br />
*[[Votes]]<br />
*[[Search]]<br />
*[[Animeentries]]<br />
*[[MyPlace]]<br />
*[[Anime Hint]]<br />
*[[Notifications]]<br />
*[[Donations]]<br />
| valign="top" width="33%" |<br />
=== Adding Data ===<br />
*[[Content:Anime|Anime]]<br />
*[[Content:Episodes|Episodes]]<br />
*[[Content:Files|Files]]<br />
*[[Content:Companies|Companies]]<br />
*[[Content:Groups|Groups]]<br />
*[[Categories|Categories]]<br />
*[[Categories:Index|Categories - Index]]<br />
| valign="top" width="33%" |<br />
=== Guidelines ===<br />
*[[Content:Filecomments]]<br />
*[[AniDB:Review Guideline]]<br />
*[[AniDB:Review Comments]]<br />
*[[AniDB:Dates|Dates]]<br />
*[[AniDB Definition:Romanisation]]<br />
*[[Content:Edit|Changing Data]]<br />
*[[Anidb:Creq_Guideline|Creq Guideline]]<br />
|-<br />
| valign="top" |<br />
=== IRC ===<br />
*[[IRC:Anidb|#anidb]]<br />
*[[IRC:Anidb-log|#anidb-log]]<br />
*[[IRC:Anidb-spam|#anidb-spam]]<br />
*[[IRC:Chii|Chii[AR]]]<br />
*[[IRC:Lafiel|Lafiel[AR]]]<br />
*[[IRC:Rar|Rar]]<br />
*[[IRC:Tessa|Tessa[AR]]]<br />
*UTF-8 for [[How to get UTF-8 to work with mIRC|mIRC]]/[[Utf8/irssi|irssi]]<br />
| valign="top" |<br />
=== Clients ===<br />
*[[AniDB Clients]]<br />
*[[AniDB O'Matic]]<br />
*[[WebAOM]]<br />
*[[UDP Clients]]<br />
*[[Avdump]]<br />
*[[API|API - How to interface with AniDB]]<br />
*[[UDP API Definition]]<br />
*[[UDP API DEV]]<br />
| valign="top" |<br />
=== Technical ===<br />
*[[AniDB:Css_styles|AniDB CSS Themes]]<br />
*[[Mylist_export_template_guidelines|AniDB Mylist Export Templates]]<br />
*[[Browser-Internal AniDB Search]]<br />
*[[How to take a screenshot]]<br />
*[[ZIDRAV]]<br />
*[[QuickPar]]<br />
*[[AniDB:Ed2k-hash]]<br />
*[[Routine Maintenance]]<br />
*[[Shadow Files]]<br />
*[[Scripts]]<br />
*[[Development]]<br />
|}<br />
<br />
''[[Special:Allpages|Complete list of pages on the wiki]]''<br />
<br />
</div><br />
<br />
<div style="border-bottom: 3px double #AAAAAA; border-top: 3px double #AAAAAA; font-size: small; color: #666666; text-align: center;"><br />
For further help with a problem or just for chatting visit us on [[IRC:Anidb|IRC]]:<br />
<br />
{{irclink|anidb}}<br />
</div><br />
<br />
__NOTOC__ __NOEDITSECTION__</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10478API2008-04-11T20:02:41Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data. Feel free to drop by on IRC if you have any questions or simply don't know where to start :o)<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]], [[UDP API DEV]], [[UDP Clients]], [[WebAOM]]<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides ''read-only'' access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]], [[AniDB O'Matic]]<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10477API2008-04-11T20:01:44Z<p>Exp: /* TCP API (private) */</p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]], [[UDP API DEV]], [[UDP Clients]], [[WebAOM]]<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides ''read-only'' access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]], [[AniDB O'Matic]]<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10476API2008-04-11T20:01:17Z<p>Exp: /* UDP API */</p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]], [[UDP API DEV]], [[UDP Clients]], [[WebAOM]]<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides ''read-only'' access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]]<br />
<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10475HTTP API Definition2008-04-11T19:57:45Z<p>Exp: /* Data */</p>
<hr />
<div>= Early Draft =<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime id="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodecount>13</episodecount><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<ratings><br />
<rating type="permanent" count="2333">8.54</rating><br />
<rating type="temporary" count="82">7.61</rating><br />
<rating type="review" count="9">9.01</rating><br />
</ratings><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10474HTTP API Definition2008-04-11T19:56:05Z<p>Exp: /* Data */</p>
<hr />
<div>= Early Draft =<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime aid="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodes>13</episodes><br />
<date><br />
<!-- note: dates can also be YYYY-MM-?? and YYYY-??-?? --><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<rating><br />
<permanent votecount="2333">8.54</permanent><br />
<temporary votecount="82">7.61</temporary><br />
<review reviewcount="9">9.01</review><br />
</rating><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10472HTTP API Definition2008-04-11T19:55:29Z<p>Exp: /* Data */</p>
<hr />
<div>= Early Draft =<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime aid="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<!-- should we include all titles or are official+main title enough? --><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodes>13</episodes><br />
<date><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<rating><br />
<permanent votecount="2333">8.54</permanent><br />
<temporary votecount="82">7.61</temporary><br />
<review reviewcount="9">9.01</review><br />
</rating><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10471HTTP API Definition2008-04-11T19:54:55Z<p>Exp: </p>
<hr />
<div>= Early Draft =<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime aid="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodes>13</episodes><br />
<date><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<relations><br />
<!-- relations are always listed with official transcription title --><br />
<relation type="sequel" aid="4">Seikai no Senki</type><br />
<relation type="prequel" aid="6">Seikai no Danshou</type><br />
<relation type="summary" aid="1623">Seikai no Monshou Movie</type><br />
</relations><br />
<rating><br />
<permanent votecount="2333">8.54</permanent><br />
<temporary votecount="82">7.61</temporary><br />
<review reviewcount="9">9.01</review><br />
</rating><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10470HTTP API Definition2008-04-11T19:52:07Z<p>Exp: </p>
<hr />
<div>= Early Draft =<br />
<br />
== Anime Data ==<br />
<br />
Allows retrieval of non-file or episode related information for a specific anime by AID (AniDB anime id).<br />
<br />
=== Access ===<br />
<br />
Base URL: TBA<br />
<br />
Parameters:<br />
* client={string} [required]<br />
** client identification string, needs to be a registered client identifier, see: <br />
<br />
* clientver={integer} [required]<br />
** client version number, needs to be valid client version number for the given client identification string.<br />
<br />
* aid={integer} [required]<br />
** AniDB anime id of the anime you want to retrieve data for.<br />
<br />
<br />
Example:<br />
URL: http://.../animedb.pl?show=xmlapi&client=clientname&clienver=13&aid=1832<br />
<br />
<br />
=== Data ===<br />
<br />
<code><pre><br />
<?xml version="1.0" encoding="utf-8" ?><br />
<anime aid="1"><br />
<url>http://anidb.net/a1</url><br />
<titles><br />
<title type="main" lang="x-jat">Seikai no Monshou</title><br />
<title type="official" lang="ja">星界の紋章</title><br />
<title type="official" lang="en">Crest of the Stars</title><br />
<title type="official" lang="fr">Crest of the Stars</title><br />
<title type="official" lang="pl">Crest of the Stars</title><br />
</titles><br />
<type>TV Series</type><br />
<episodes>13</episodes><br />
<date><br />
<from>1999-01-03</from><br />
<till>1999-03-28</from><br />
</date><br />
<categories><br />
<category id="233" weight="6">Dynamic::Plot Continuity</category><br />
<category id="4" weight="4">Elements::Action</category><br />
...<br />
<categories><br />
<producers><br />
<producer id="34" type="Financial Production">Bandai Visual</producer><br />
<producer id="108" type="Music Production">BeSTACK</producer><br />
...<br />
</producers><br />
<rating><br />
<permanent votecount="2333">8.54</permanent><br />
<temporary votecount="82">7.61</temporary><br />
<review reviewcount="9">9.01</review><br />
</rating><br />
<images><br />
<image size="full">http://img5.anidb.net/pics/anime/440.jpg</image><br />
<image size="small">http://img5.anidb.net/pics/anime/thumbs/150/440.jpg-thumb.jpg</image><br />
<image size="tiny">http://img5.anidb.net/pics/anime/thumbs/50/440.jpg-thumb.jpg</image><br />
</images><br />
<description><br />
Jinto Lin's life changes forever when the Humankind Empire Abh takes over his home planet of Martine without firing a single shot. He is soon sent off to study the Abh language and culture and to prepare himself for his future as a nobleman - a future he never dreamed of. Or wanted.<br />
<br />
Now, Jinto is entering the next phase of his training, and he is about to meet his first Abh, the lovely Lafiel. But Jinto is about to learn that she is more than she appears to be. And together they will have to fight for their very lives.<br />
</description><br />
</anime><br />
</pre></code></div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10469API2008-04-11T19:27:00Z<p>Exp: /* HTTP API (limited) */</p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]]<br />
<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides ''read-only'' access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]]<br />
<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10468API2008-04-11T19:26:34Z<p>Exp: </p>
<hr />
<div>{{TOCright}}<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]]<br />
<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]]<br />
<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10467API2008-04-11T19:25:52Z<p>Exp: /* HTTP API (limited) */</p>
<hr />
<div>{{TOCright}}<br />
'''under construction'''<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]]<br />
<br />
<br />
== HTTP API (limited) ==<br />
<br />
Provides access to a limited subset of the AniDB database via HTTP requests. Currently this is only interesting for people interested in non-file/episode related information for a specific anime.<br />
<br />
more: [[HTTP_API_Definition]]<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]]<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=HTTP_API_Definition&diff=10466HTTP API Definition2008-04-11T19:24:26Z<p>Exp: New page: todo</p>
<hr />
<div>todo</div>Exphttps://wiki.anidb.net/index.php?title=API&diff=10465API2008-04-11T19:20:40Z<p>Exp: New page: {{TOCright}} '''under construction''' AniDB offers a number of different ways in which you can obtain or modify specific data. = Core Services = == UDP API == The UDP API is a '''publi...</p>
<hr />
<div>{{TOCright}}<br />
'''under construction'''<br />
<br />
AniDB offers a number of different ways in which you can obtain or modify specific data.<br />
<br />
<br />
= Core Services =<br />
<br />
== UDP API ==<br />
The UDP API is a '''public''' UDP based ''read/write'' API which can be used to obtain information about specific files and database entries. This API is the best choice for all file related activities as well as for many others.<br />
<br />
If you're new to the AniDB APIs, we recommend that you take a look at the UDP API first.<br />
<br />
more: [[UDP_API_Definition]]<br />
<br />
<br />
== HTTP API (limited) ==<br />
<br />
<br />
== TCP API (private) ==<br />
<br />
The TCP API is a special, '''private''' API which provides access to full copies of the AniDB database for offline use.<br />
Access to the TCP API is only provided on request and with restrictions. Please contact EXP on AniDB for additional information.<br />
Currently the only available TCP API Client is AOM.<br />
<br />
see also: [[AniDB_Clients]]<br />
<br />
= Data Dumps =<br />
<br />
== Anime Titles ==<br />
<br />
AniDB offers a daily updated dump of all anime titles which can be used to support client sided anime search features.<br />
This file can also be used for anime title to AID lookups.<br />
<br />
[http://anidb.net/api/animetitles.dat http://anidb.net/api/animetitles.dat]<br />
<br />
<br />
= Additional Resources =<br />
<br />
== Mylist Export ==<br />
<br />
A user can export his entire mylist in different formats. Among the supported formats is an XML export. This approach can be used to retrieve and import a large amount of data on files, episodes and animes which are part of the anime collection of a specific user. This is therefore a very good first step to obtain a local data set which can then be used for further work.<br />
<br />
see: [[Mylist_export]]<br />
<br />
<br />
== Singature Data ==<br />
<br />
The AniDB Signature Server allows user to create dynamic signature images for use in forum signatures. The corresponding data is also availabe in raw format in case you want to build your own system.<br />
<br />
more: [[SigServer]], [[SigServer_DEV]]<br />
<br />
<br />
== RSS Feeds ==<br />
<br />
AniDB offers regularly updated information about recently added files and user specific file notifications as RSS feeds.<br />
<br />
more: [[RSSRDF]]<br />
<br />
<br />
== IRC Bots ==<br />
<br />
There are a number of IRC bots on the SynIRC network. They can be used to interface with AniDB and provide real time information about database changes.<br />
<br />
more: [[IRC:Chii]], [[IRC:Lafiel]]<br />
<br />
<br />
= Screen Scraping =<br />
<br />
We would like to ask you not to parse the AniDB html data directly for data extraction pourposes. If your requirements are not covered by the APIs and resources available so far, please feel free to contact us directly.<br />
<br />
{{eyecatch|Warning:| Issuing too many HTTP requests might get you banned.}}</div>Exphttps://wiki.anidb.net/index.php?title=SigServer_DEV&diff=10464SigServer DEV2008-04-11T19:04:40Z<p>Exp: /* Data Retrieval */</p>
<hr />
<div>{{TOCright}}<br />
<br />
{{eyecatch|Note:|'''This page only lists development resources. If you're interested in using the AniDB Signature Server, visit: [[SigServer]]'''}}<br />
<br />
=General=<br />
this is the place to contribute ideas on a possible future addition of a special signature picture feature to anidb.<br />
<br />
Related forum thread: [http://www.anidb.net/forum/viewtopic.php?t=5413 AniDB Development Forum - SigServer]<br />
<br />
For other areas of active development on AniDB, check: [[Development]]<br />
<br />
=Vision=<br />
AniDB users can create highly personalized signature images which can be used in forum singatures and which acurately reflect user specific or general anidb data. Some examples are:<br />
* Mylist statistics of the user (Mylist size, latest added, latest watched, total watched, ...)<br />
* Vote statistics general or user based (Top3 animes, my Top3, worst anime ever, ...)<br />
* General anidb statistics<br />
* Group statistics (Latest releases by group X, ...)<br />
* Anime statistics (percent aired, percent subbed, latest file added, total users, total groups, total files, total eps, ...)<br />
* ...<br />
<br />
The user would not need any webspace to host such images and would not need to update/regenerate them. All signature images would be directly loaded from an AniDB webserver.<br />
<br />
The idea is for the sig server to be the middle entity between AniDB and the user, which allows almost any kind of singature pic to be created, according to the personal preferences of the user. As such a lot of attention should go towards the configuration/customization interface of such a feature. We are aware that this is a hell lot of work, but it's the long term goal. The image generation itself is fairly easy.<br />
<br />
Basically AniDB will offer all kinds of stats data and more via xml, much more than is currently on offer. The sig server would transparently get it's data from AniDB and the user will be able to pick all kinds of information bits from the available data and position and format it freely on a background pic which he can upload himself.<br />
Of course many users wouldn't need this degree of flexibility, so there would need to be some common premade default selections for style/info combinations which are most commonly requested. Furthermore background images could be shared between users.<br />
<br />
... if a users feels like having a total mess of a sig pic where every single character is done in a different font type, color and size... why not let him do it? ...<br />
<br />
Some examples:<br />
<br />
[[Image:Sig1.png]]<br />
[[Image:Sig2.png]]<br />
<br />
=Data=<br />
<br />
=Implementation=<br />
<br />
==General==<br />
here a short outline of the way it is supposed to work:<br />
(Let's call the new server "sig server" for now)<br />
* The sig server has it's own user database<br />
* Users can configure the signature pics via a webinterface of the sig server<br />
* The sig server provides an url which returns the sig pic<br />
* When the url is requested the sig server will look for a locally cached pic or cached anidb status information for the user and will either return the cached pic, a new pic created with the cached information or will issue an http request to retrieve the needed stats via as XML and then create the pic.<br />
<br />
It is important to underline at this point that the sig server does never directly interact with the anidb database. It does not have SQL access, it does not store the users anidb password (only their anidb username) and it never modifies any information on anidb. <br />
<br />
On suggestion for how things could look like (feel free to suggest other ways):<br />
* AniDB will link to the sig server<br />
* A first time user will visit the sig server and register a new account (username and password can be different from anidb)<br />
* Once registered the user gets to a configuration page where he has to enter his anidb username (without the anidb password!) and there will be a help text explaining the required profile settings on anidb for this to work (the anidb XML interface will only provide the information if the user selected certain permissions for the guest user)<br />
* the user can then either select an image from a selection of publicly available pictures stored on the server or can upload is own picture (for each own picture the user can specify whether it should be made public or not (needs mod review)).<br />
* once a picture is selected the user can select the type of data shown and the formatting from predefined profiles or can define his own profile (profile can be made public)<br />
* a profile should be very configurable, allowing selections like:<br />
** information to display<br />
** font/size/color/location/... for each part<br />
** maybe some kind of basic scripting<br />
* one user should be able to specify upto N signature picture+profile combinations which can all be active at the same time (maybe 5 ?)<br />
* some nice statistics and a modding interface would be good<br />
<br />
==Hosting==<br />
We have a dedicated server ready for hosting this feature. Restrictions:<br />
* Database related code should be able to work with PostgreSQL AND MySQL<br />
** Just to be clear - You will NOT have access to the AniDB database via SQL. As such you're free to come up with your own database schema for the information you need to store. All AniDB data you need will be available as XML via HTTP GET requests.<br />
** The SigServer will require a separate signup and will not make use of the AniDB user account data.<br />
* Currently the server only runs PHP4 [http://sig.anidb.info/phptest.php Php Info], but PHP5 could be installed.<br />
<br />
==Data Retrieval==<br />
The SigServer will receive the required data by making HTTP GET requests to the main anidb server and by getting XML replies.<br />
Here are some examples.<br />
<br />
CAUTION! - Don't access these urls more than once or twice a day or you will get yourself an automatic 24h ban!<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=file http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=file]<br />
:* latest files added to mylist<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=anime http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=anime]<br />
:* latest animes for which files were added to mylist (each anime is listed only once).<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=watched http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=watched]<br />
:* list of files which the user marked as watched. Ordered by the view date.<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=watching http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=watching]<br />
:* anime entries for which the user has watched at least one ep within the last 14 days. Ordered by view date of the last recently viewed file per anime.<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=finishedwatching http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=finishedwatching]<br />
:* anime entries which the user has completely watched within the last 2 months. Ordered by view date of the last recently viewed file per anime.<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=vote http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=vote]<br />
:* most recent votes of a user<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=review http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=review]<br />
:* most revent reviews of a user<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=recs http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userlatest&uid=32&list=recs]<br />
:* most recent recommendations made by a user<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userstat&uid=32 http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=userstat&uid=32]<br />
:* statistics for a user<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1 http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1]<br />
:* statistics for an anime<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&gid=41 http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&gid=41]<br />
:* statistics for an anime, together with group info<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&uid=32 http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&uid=32]<br />
:* statistics for an anime, together with user mylist info<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&uid=32&gid=41 http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=animestat&aid=1&uid=32&gid=41]<br />
:* statistics for an anime, together with user mylist and group info<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidbstat http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidbstat]<br />
:* global anidb statistics<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=file http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=file]<br />
:* latest files added to anidb<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=anime http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=anime]<br />
:* latest animes for which files were added to anidb (each anime is listed only once).<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=review http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=review]<br />
:* latest reviews added to anidb<br />
<br />
* [http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=recs http://anidb.net/perl-bin/animedb.pl?show=xmlsig&t=anidblatest&list=recs]<br />
:* latest recommendations added to anidb<br />
<br />
* ... lot's more to be added uppon request<br />
<br />
The mylist export documentation may be helpful in understanding the meaning of the different fields in the XML replies: [[Mylist_export_template_guidelines]]<br />
<br />
=== Feature Requests ===<br />
* add requests for additional data here<br />
* Latest votes - for each anime, tmp, episodes, groups, reviews --[[User:Suppy|Suppy]] 18:13, 28 April 2007 (UTC) - partly done [[User:Exp|Exp]] 15:10, 17 November 2007 (CET)<br />
* Top votes - for each anime, tmp, episodes, groups, reviews --[[User:Suppy|Suppy]] 18:13, 28 April 2007 (UTC)<br />
* Your top rated reviews --[[User:Suppy|Suppy]] 00:58, 30 April 2007 (UTC)<br />
<br />
Old:<br />
* Latest watched files. - antennen - done [[User:Exp|Exp]] 15:10, 17 November 2007 (CET)<br />
* Feed for resolving UserID etc. - antennen - done [[User:Exp|Exp]] 15:10, 17 November 2007 (CET)<br />
* Your latest written reviews --[[User:Suppy|Suppy]] 00:58, 30 April 2007 (UTC) - done [[User:Exp|Exp]] 15:10, 17 November 2007 (CET)<br />
<br />
==XML Parsing==<br />
To use the XML replies from the server, they have to be parsed and probably cached.<br />
<br />
To parse the XML, standard php-commands can be used.<br />
<br />
A working example for xml.xml with the output array stack():<br />
{| width="70%"<br />
|<pre><nowiki><br />
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
//Load and parse XML<br />
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
<br />
$file = "xml.xml";<br />
$stack = array();<br />
<br />
// start_element_handler ( resource parser, string name, array attribs )<br />
function startElement($parser, $name, $attribs)<br />
{<br />
global $stack;<br />
$tag=array("name"=>$name,"attribs"=>$attribs);<br />
array_push($stack,$tag);<br />
}<br />
<br />
// end_element_handler ( resource parser, string name )<br />
function endElement($parser, $name)<br />
{<br />
global $stack;<br />
$stack[count($stack)-2]['children'][] = $stack[count($stack)-1];<br />
array_pop($stack);<br />
}<br />
<br />
// handler ( resource parser, string data )<br />
function characterData($parser, $data)<br />
{<br />
global $stack,$i;<br />
<br />
<br />
if(trim($data))<br />
{ <br />
$stack[count($stack)-1]['data'] .= $data; <br />
}<br />
}<br />
// handler ( resource parser, string target, string data )<br />
<br />
function defaultHandler($parser, $data)<br />
{<br />
<br />
}<br />
<br />
function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,<br />
$publicId) {<br />
if ($systemId) {<br />
if (!list($parser, $fp) = new_xml_parser($systemId)) {<br />
printf("Could not open entity %s at %s\n", $openEntityNames,<br />
$systemId);<br />
return false;<br />
}<br />
while ($data = fread($fp, 4096)) {<br />
if (!xml_parse($parser, $data, feof($fp))) {<br />
printf("XML error: %s at line %d while parsing entity %s\n",<br />
xml_error_string(xml_get_error_code($parser)),<br />
xml_get_current_line_number($parser), $openEntityNames);<br />
xml_parser_free($parser);<br />
return false;<br />
}<br />
}<br />
xml_parser_free($parser);<br />
return true;<br />
}<br />
return false;<br />
}<br />
<br />
function new_xml_parser($file)<br />
{<br />
global $parser_file;<br />
$xml_parser = xml_parser_create();<br />
<br />
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);<br />
<br />
xml_set_processing_instruction_handler($xml_parser, "PIHandler");<br />
<br />
xml_set_element_handler($xml_parser, "startElement", "endElement");<br />
<br />
xml_set_character_data_handler($xml_parser, "characterData");<br />
<br />
xml_set_default_handler($xml_parser, "defaultHandler");<br />
<br />
xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");<br />
<br />
if (!($fp = @fopen($file, "r"))) {<br />
return false;<br />
}<br />
if (!is_array($parser_file)) {<br />
settype($parser_file, "array");<br />
}<br />
$parser_file[$xml_parser] = $file;<br />
return array($xml_parser, $fp);<br />
}<br />
<br />
if (!(list($xml_parser, $fp) = new_xml_parser($file))) {<br />
die("could not open XML input");<br />
}<br />
<br />
//ERROR<br />
while ($data = fread($fp, 4096)) {<br />
if (!xml_parse($xml_parser, $data, feof($fp))) {<br />
die(sprintf("XML error: %s at line %d\n",<br />
xml_error_string(xml_get_error_code($xml_parser)),<br />
xml_get_current_line_number($xml_parser)));<br />
}<br />
}<br />
//END<br />
xml_parser_free($xml_parser);<br />
<br />
</nowiki></pre><br />
|}<br />
<br />
[[Category:SigServer]]<br />
[[Category:Development]]</div>Exp