[sound-juicer] Rate limit musicbrainz queries
- From: Phillip Wood <pwood src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sound-juicer] Rate limit musicbrainz queries
- Date: Tue, 16 Aug 2016 10:29:26 +0000 (UTC)
commit 33db56548cef2d5e2672d12d0e1f135b8b196116
Author: Phillip Wood <phillip wood dunelm org uk>
Date: Fri Jul 29 10:58:14 2016 +0100
Rate limit musicbrainz queries
Queries to MusicBraniz should be limited to one per second
https://musicbrainz.org/doc/XML_Web_Service/Rate_Limiting
https://bugzilla.gnome.org/show_bug.cgi?id=764941
libjuicer/sj-metadata-musicbrainz5.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/libjuicer/sj-metadata-musicbrainz5.c b/libjuicer/sj-metadata-musicbrainz5.c
index 1468e34..7245e8d 100644
--- a/libjuicer/sj-metadata-musicbrainz5.c
+++ b/libjuicer/sj-metadata-musicbrainz5.c
@@ -186,6 +186,7 @@ print_musicbrainz_query_error (SjMetadataMusicbrainz5 *self,
g_free (message);
}
+static gint64 last_query_time;
static Mb5Metadata
query_musicbrainz (SjMetadataMusicbrainz5 *self,
@@ -198,10 +199,17 @@ query_musicbrainz (SjMetadataMusicbrainz5 *self,
Mb5Metadata metadata;
char *inc[] = { "inc" };
SjMetadataMusicbrainz5Private *priv = GET_PRIVATE (self);
+ gint64 t;
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return NULL;
+ t = g_get_monotonic_time ();
+ while (t - last_query_time < G_USEC_PER_SEC) {
+ g_usleep (t - last_query_time + G_USEC_PER_SEC);
+ t = g_get_monotonic_time ();
+ }
+
if (includes == NULL)
metadata = mb5_query_query (priv->mb, entity, id, "",
0, NULL, NULL);
@@ -211,6 +219,7 @@ query_musicbrainz (SjMetadataMusicbrainz5 *self,
if (metadata == NULL)
print_musicbrainz_query_error (self, entity, id);
+ last_query_time = g_get_monotonic_time ();
return metadata;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]