GNOME Bugzilla – Bug 457084
FooID support (FooID - free and opensourc eaudio fingerprint technology)
Last modified: 2018-05-24 12:41:57 UTC
At present a lot of music players support MusicDNS (MusikBrainz) audio fingerprinting. But MusikBrainz uses proprietary technology of audio fingerprints. FooID - free and open source solution. It`s abnormal if rhythmbox not support this.
Some information on the http://www.foosic.org/ the FooID protocol Protocol 2 3 foosic submissions protocol (rev.3 2006-5-1) 4 -------------------------------------------- 5 6 UDP packets, to port 34000 @ in.foosic.org (always use DNS, never hardcode IP) 7 8 PACKETS 9 ------- 10 11 bytes 1 username length > 0 <= 192, unsigned 12 .... username <= 32 UTF-8 characters, max 192 bytes 13 16 MD5 of password 14 1 command unsigned 15 defined commands: 16 0 INSERT 17 1 INSERT_FINGERPRINT 18 19 INSERT 20 bytes 1 titlelength > 0 and <= 255, unsigned 21 .... title <= 100 UTF-8 characters, max 255 bytes 22 1 artistlength > 0 and <= 255, unsigned 23 ... artist <= 100 UTF-8 characters, max 255 bytes 24 1 albumlength > 0 and <= 255, unsigned 25 ... album <= 100 UTF-8 characters, max 255 bytes 26 1 genrelength >= 0 (!) and <= 192, unsigned 27 ... genre <= 32 UTF-8 characters, max 192 bytes 28 4 length Little-Endian, centiseconds, rounded, unsigned 29 2 year Little-Endian, unsigned 30 1 va unsigned, boolean 31 1 tracknr unsigned 32 33 INSERT_FINGERPRINT (extended version of INSERT, use this if you have FooID support) 34 bytes 1 titlelength > 0 and <= 255, unsigned 35 .... title <= 100 UTF-8 characters, max 255 bytes 36 1 artistlength > 0 and <= 255, unsigned 37 ... artist <= 100 UTF-8 characters, max 255 bytes 38 1 albumlength > 0 and <= 255, unsigned 39 ... album <= 100 UTF-8 characters, max 255 bytes 40 1 genrelength >= 0 (!) and <= 192, unsigned 41 ... genre <= 32 UTF-8 characters, max 192 bytes 42 4 length Little-Endian, centiseconds, rounded, unsigned 43 2 year Little-Endian, unsigned 44 1 va unsigned, boolean 45 1 tracknr unsigned 46 1 fp_version unsigned 47 2 fp_length Little-Endian, unsigned 48 ... fingerprint > 0 and == fp_length bytes 49 50 51 NOTES 52 ----- 53 - No tags = no submission (BUT genre, length, year and tracknr are optional -> set to 0) 54 - Multiple artists: put together with ", " in alphabetical order. 55 - Various Artists: use real track artist, but set "va" flag 56 - Submit after song is playing for 60 seconds (watch out for seeking!). Songs < 60 seconds 57 can be submitted when their playback finishes. 58 - You can either use INSERT or use INSERT_FINGERPRINT, but only one of the two per song. 59 - Checking passwords, getting stats & spelling corrections are handled via 60 a seperate TCP protocol, and are completely optional (you only need to 61 support this one for the system to work). 62 63 64 foosic libFooID fingerprint server protocol (rev.1 2006-5-10) 65 ------------------------------------------------------------- 66 67 TCP connection, to port 35000 @ fp.foosic.org (always use DNS, never hardcode IP) 68 69 After initializing the connection, you submit a count of the number 70 of fingerprints you are going to submit, followed by an alternation 71 of fingerprint lengths and fingerprint data. 72 73 Fingerprints belonging to the same album should be submitted as a group, 74 and if possible, in the correct order. 75 Fingerprints from different albums should be submitted one by one. 76 77 78 bytes 1 fp_count unsigned 79 80 fp_count times | 1 fp_version unsigned 81 | 2 fp_length Little-Endian, unsigned 82 | ... fingerprint > 0 and == fp_length bytes 83 84 After receiving the fingerprints, the server will start processing them. 85 As soon as it is done, or encounters an error, it will reply with tag 86 information for the songs in the same order as they were submitted, 87 but it may return multiple possibilites per song (num_hits). 88 89 bytes 1 result_code 0 on success, >0 on error 90 On error no more data follows. 91 92 Error codes 93 ----------- 94 1: Unknown fingerprint version 95 2: Internal server error 96 97 fp_count times | 1 num_hits unsigned 98 99 num_hits times | 2 confidence unsigned, Little-Endian ( 0 = 0.0% to 10000 = 100.00%) 100 | 1 tag_count unsigned 101 102 tag_count times | 1 tag_name_size unsigned 103 | ... tag_name_data <= 100 UTF-8 characters, max 255 bytes 104 | 1 tag_value_size unsigned 105 | ... tag_value_data <= 100 UTF-8 characters, max 255 bytes 106 107 You can expect foosic to return the following tags (tag_name): 108 TITLE 109 ARTIST 110 ALBUM 111 VA 112 113 It might also return the following: 114 GENRE 115 TRACKNUMBER 116 YEAR 117 anything else 118 119 Now, you can either go back to the top and submit either more songs, or terminate 120 the connection by sending 0 as fp_count.
Created attachment 91805 [details] LibFooID modified for linux LibFooID modified for linux
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/rhythmbox/issues/403.