[banshee: 4/61] [InternetArchive] Load basic track info
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee: 4/61] [InternetArchive] Load basic track info
- Date: Tue, 3 Nov 2009 06:28:11 +0000 (UTC)
commit 847b860e02a99e34a672ef7a3e8266dca4aa5249
Author: Gabriel Burt <gabriel burt gmail com>
Date: Wed Oct 7 11:32:19 2009 -0700
[InternetArchive] Load basic track info
The category and sort dropdowns are functional; add a Refresh button.
.../Banshee.InternetArchive/HeaderFilters.cs | 62 ++++++++++++++---
.../Banshee.InternetArchive/Source.cs | 47 ++++++++++++-
.../InternetArchive/Field.cs | 22 +++++--
.../InternetArchive/FieldValue.cs | 13 +++-
.../InternetArchive/Item.cs | 43 ++++++++++++
.../InternetArchive/JsonItem.cs | 56 +++++++++++++++
.../InternetArchive/JsonResults.cs | 73 ++++++++++++++++++++
.../InternetArchive/MediaType.cs | 2 +-
.../InternetArchive/Results.cs | 47 +++++++++++++
.../InternetArchive/Search.cs | 23 ++++---
src/Extensions/Banshee.InternetArchive/Makefile.am | 5 +-
11 files changed, 362 insertions(+), 31 deletions(-)
---
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
index 695ac7c..c6090db 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
@@ -39,30 +39,40 @@ namespace Banshee.InternetArchive
{
public class HeaderFilters : HBox
{
- public HeaderFilters ()
+ private Source source;
+
+ private ComboBox sort_combo, media_type_combo;
+ private TreeStore media_type_store;
+
+ public HeaderFilters (Source source)
{
+ this.source = source;
+
Spacing = 6;
- BuildMediaTypeCombo ();
BuildSortCombo ();
+ BuildMediaTypeCombo ();
+ BuildRefreshButton ();
+
+ UpdateSearch ();
}
private void BuildMediaTypeCombo ()
{
- var store = new TreeStore (typeof (string), typeof (string));
+ var store = media_type_store = new TreeStore (typeof (IA.MediaType), typeof (string));
foreach (var mediatype in IA.MediaType.Options.OrderBy (t => t.Name)) {
if (mediatype.Id != "software") {
- var iter = store.AppendValues (mediatype.Id, mediatype.Name);
+ var iter = store.AppendValues (mediatype, mediatype.Name);
if (mediatype.Children != null) {
foreach (var child in mediatype.Children.OrderBy (t => t.Name)) {
- store.AppendValues (iter, child.Id, child.Name);
+ store.AppendValues (iter, child, child.Name);
}
}
}
}
- var combo = new ComboBox ();
+ var combo = media_type_combo = new ComboBox ();
combo.Model = store;
var cell = new CellRendererText ();
@@ -70,20 +80,50 @@ namespace Banshee.InternetArchive
combo.AddAttribute (cell, "text", 1);
combo.Active = 0;
- PackStart (new Label (Catalog.GetString ("Show")), false, false, 0);
+ //PackStart (new Label (Catalog.GetString ("Show")), false, false, 0);
PackStart (combo, false, false, 0);
}
private void BuildSortCombo ()
{
- var combo = ComboBox.NewText ();
+ var combo = sort_combo = ComboBox.NewText ();
- combo.AppendText (Catalog.GetString ("Popular This Week"));
combo.AppendText (Catalog.GetString ("Popular"));
- combo.AppendText (Catalog.GetString ("Rated"));
+ combo.AppendText (Catalog.GetString ("Popular This Week"));
+ combo.AppendText (Catalog.GetString ("Highly Rated"));
+ combo.Active = 0;
- PackStart (new Label (Catalog.GetString ("Sort by")), false, false, 0);
+ //PackStart (new Label (Catalog.GetString ("Sort by")), false, false, 0);
PackStart (combo, false, false, 0);
}
+
+ private void BuildRefreshButton ()
+ {
+ var button = new Button (Stock.Refresh);
+ button.Clicked += (o, a) => {
+ UpdateSearch ();
+ source.Reload ();
+ };
+
+ PackStart (button, false, false, 0);
+ }
+
+ private void UpdateSearch ()
+ {
+ source.Search.Sorts.Clear ();
+
+ string [] sorts = { "downloads desc", "week asc", "avg_rating desc" };
+ source.Search.Sorts.Add (new IA.Sort () { Id = sorts[sort_combo.Active] });
+
+ Console.WriteLine ("sort = {0}", sorts[sort_combo.Active]);
+
+ TreeIter iter;
+ if (media_type_combo.GetActiveIter (out iter)) {
+ var media_type = media_type_store.GetValue (iter, 0) as IA.MediaType;
+ Console.WriteLine ("media_type_combo.Active = {0}", media_type.Id);
+
+ source.Search.Query = media_type.ToString ();
+ }
+ }
}
}
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Source.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Source.cs
index 027499a..309d2e6 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Source.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Source.cs
@@ -48,6 +48,8 @@ using Banshee.Preferences;
using Banshee.ServiceStack;
using Banshee.Sources;
+using IA=InternetArchive;
+
namespace Banshee.InternetArchive
{
public class Source : Banshee.Sources.PrimarySource
@@ -55,9 +57,16 @@ namespace Banshee.InternetArchive
private static string name = Catalog.GetString ("Internet Archive");
private Gtk.Widget header_widget;
+ private IA.Search search;
+
+ public IA.Search Search { get { return search; } }
public Source () : base (name, name, "internet-archive", 210)
{
+ search = new IA.Search () {
+ Format = IA.ResultsFormat.Json
+ };
+
IsLocal = false;
// TODO Should probably support normal playlists at some point (but not smart playlists)
SupportsPlaylists = false;
@@ -96,7 +105,7 @@ namespace Banshee.InternetArchive
DatabaseTrackModel.CanReorder = false;
if (header_widget == null) {
- header_widget = new HeaderFilters ();
+ header_widget = new HeaderFilters (this);
header_widget.ShowAll ();
Properties.Set<Gtk.Widget> ("Nereid.SourceContents.HeaderWidget", header_widget);
}
@@ -107,6 +116,42 @@ namespace Banshee.InternetArchive
base.Activate ();
}
+ public override void Reload ()
+ {
+ bool success = false;
+
+ try {
+ var results = new IA.JsonResults (search.GetResults ());
+
+ // TODO set the status bar w/ this
+ Console.WriteLine ("Have {0} total results, {1} current rows, and {2} is the offset", results.TotalResults, results.Count, results.Offset);
+
+ RemoveTrackRange (DatabaseTrackModel, new RangeCollection.Range (0, Count - 1));
+ DatabaseTrackModel.Clear ();
+
+ foreach (var item in results.Items) {
+ var track = new DatabaseTrackInfo () {
+ PrimarySource = this,
+ ArtistName = item.Get (IA.Field.Creator) ?? Catalog.GetString ("Unknown"),
+ TrackTitle = item.Get (IA.Field.Title),
+ Comment = Hyena.StringUtil.RemoveHtml (item.Get (IA.Field.Description))
+ };
+
+ track.Save (false);
+ }
+
+ base.Reload ();
+ success = true;
+ } catch (Exception e) {
+ Hyena.Log.Exception ("Error refreshing internet archive", e);
+ }
+
+ if (!success) {
+ // TODO differentiate between various errors types (network, invalid search, etc)
+ SetStatus (Catalog.GetString ("Error refreshing Internet Archive"), true);
+ }
+ }
+
/*public override bool AcceptsInputFromSource (Source source)
{
return false;
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
index 55064cd..aa3d5f2 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
@@ -26,6 +26,8 @@
using System;
+using Mono.Unix;
+
using Hyena.Query;
namespace InternetArchive
@@ -38,7 +40,6 @@ namespace InternetArchive
contributor
coverage
- creator
date
description
downloads
@@ -55,7 +56,6 @@ namespace InternetArchive
num_reviews
oai_updatedate
publicdate
- publisher
rights
scanningcentre
@@ -67,11 +67,23 @@ namespace InternetArchive
week
year*/
- public string Name { get; protected set; }
- public string Id { get; set; }
+ public static Field MediaType = new Field ("mediatype", Catalog.GetString ("Media Type"));
+ public static Field Identifier = new Field ("identifier", Catalog.GetString ("ID"));
+ public static Field Title = new Field ("title", Catalog.GetString ("Title"));
+ public static Field Creator = new Field ("creator", Catalog.GetString ("Creator"));
+ public static Field Publisher = new Field ("publisher", Catalog.GetString ("Publisher"));
+ public static Field Downloads = new Field ("downloads", Catalog.GetString ("Downloads"));
+ public static Field Description= new Field ("description",Catalog.GetString ("Description"));
+ public static Field AvgRating = new Field ("avg_rating", Catalog.GetString ("Rating"));
+ public static Field Format = new Field ("format", Catalog.GetString ("Format"));
+
+ public string Name { get; private set; }
+ public string Id { get; private set; }
- public Field ()
+ public Field (string id, string name)
{
+ Id = id;
+ Name = name;
}
}
}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/FieldValue.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/FieldValue.cs
index c9d356d..d9d78c6 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/FieldValue.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/FieldValue.cs
@@ -32,13 +32,20 @@ namespace InternetArchive
{
public class FieldValue
{
- public string Name { get; private set; }
- public string Id { get; private set; }
+ public Field Field { get; private set; }
+ public string Name { get; private set; }
+ public string Id { get; private set; }
- public FieldValue (string id, string name)
+ public FieldValue (Field field, string id, string name)
{
+ Field = field;
Id = id;
Name = name;
}
+
+ public override string ToString ()
+ {
+ return String.Format ("{0}:{1}", Field.Id, Id);
+ }
}
}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Item.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Item.cs
new file mode 100644
index 0000000..4370458
--- /dev/null
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Item.cs
@@ -0,0 +1,43 @@
+//
+// Item.cs
+//
+// Author:
+// Gabriel Burt <gabriel burt gmail com>
+//
+// Copyright (c) 2009 Gabriel Burt
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Linq;
+using System.Collections.Generic;
+
+namespace InternetArchive
+{
+ public abstract class Item
+ {
+ public Item ()
+ {
+ }
+
+ public abstract string Get (Field field);
+ }
+}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonItem.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonItem.cs
new file mode 100644
index 0000000..118710b
--- /dev/null
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonItem.cs
@@ -0,0 +1,56 @@
+//
+// JsonItem.cs
+//
+// Author:
+// Gabriel Burt <gabriel burt gmail com>
+//
+// Copyright (c) 2009 Gabriel Burt
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Linq;
+using System.Collections.Generic;
+
+using Hyena.Json;
+
+namespace InternetArchive
+{
+ public class JsonItem : Item
+ {
+ JsonObject item;
+
+ public JsonItem (JsonObject item)
+ {
+ this.item = item;
+ }
+
+ public override string Get (Field field)
+ {
+ object result;
+ if (item.TryGetValue (field.Id, out result)) {
+ return result as string;
+ }
+
+ return null;
+ }
+ }
+}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonResults.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonResults.cs
new file mode 100644
index 0000000..12342e7
--- /dev/null
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonResults.cs
@@ -0,0 +1,73 @@
+//
+// JsonResults.cs
+//
+// Author:
+// Gabriel Burt <gabriel burt gmail com>
+//
+// Copyright (c) 2009 Gabriel Burt
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Linq;
+using System.Collections.Generic;
+
+using Hyena.Json;
+
+namespace InternetArchive
+{
+ public class JsonResults : Results
+ {
+ JsonObject response_header;
+ JsonObject response_header_params;
+
+ JsonObject response;
+ JsonArray response_docs;
+
+ public JsonResults (string resultsString)
+ {
+ var json = new Deserializer (resultsString).Deserialize () as JsonObject;
+
+ if (Hyena.Log.Debugging) {
+ Hyena.Log.Debug ("Got JSON results from Internet Archive:");
+ json.Dump ();
+ }
+
+ response_header = (JsonObject) json["responseHeader"];
+ response_header_params = (JsonObject) response_header["params"];
+
+ response = (JsonObject) json["response"];
+ response_docs = (JsonArray) response["docs"];
+
+ TotalResults = (int) (double) response["numFound"];
+ Offset = (int) (double) response["start"];
+ Count = Int32.Parse (response_header_params["rows"] as string);
+ }
+
+ public override IEnumerable<Item> Items {
+ get {
+ foreach (object obj in response_docs) {
+ yield return new JsonItem ((JsonObject) obj);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/MediaType.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/MediaType.cs
index e05cc2e..5c57cb4 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/MediaType.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/MediaType.cs
@@ -33,7 +33,7 @@ namespace InternetArchive
{
public class MediaType : FieldValue
{
- private MediaType (string id, string name) : base (id, name) {}
+ private MediaType (string id, string name) : base (Field.MediaType, id, name) {}
private MediaType AddChildren (params MediaType [] children)
{
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Results.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Results.cs
new file mode 100644
index 0000000..f60fbe6
--- /dev/null
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Results.cs
@@ -0,0 +1,47 @@
+//
+// Results.cs
+//
+// Author:
+// Gabriel Burt <gabriel burt gmail com>
+//
+// Copyright (c) 2009 Gabriel Burt
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Linq;
+using System.Collections.Generic;
+
+namespace InternetArchive
+{
+ public abstract class Results
+ {
+ public int TotalResults { get; protected set; }
+ public int Count { get; protected set; }
+ public int Offset { get; protected set; }
+
+ public Results ()
+ {
+ }
+
+ public abstract IEnumerable<Item> Items { get; }
+ }
+}
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Search.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Search.cs
index 043bac2..536517e 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/Search.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Search.cs
@@ -57,11 +57,12 @@ namespace InternetArchive
List<Sort> sorts = new List<Sort> ();
List<Field> result_fields = new List<Field> ();
int NumResults;
- ResultsFormat format;
//bool indent = false;
- public IList<Field> ReturnFields { get { return result_fields; } }
- public IList<Sort> SortBy { get { return sorts; } }
+ public IList<Field> ReturnFields { get { return result_fields; } }
+ public IList<Sort> Sorts { get { return sorts; } }
+ public ResultsFormat Format { get; set; }
+ public string Query { get; set; }
static Search () {
//UserAgent = "InternetArchiveSharp";
@@ -70,12 +71,16 @@ namespace InternetArchive
public Search ()
{
- format = ResultsFormat.Json;
NumResults = 50;
- result_fields.Add (new Field () { Id = "identifier" });
- result_fields.Add (new Field () { Id = "title" });
- result_fields.Add (new Field () { Id = "creator" });
+ result_fields.Add (Field.Identifier);
+ result_fields.Add (Field.Title);
+ result_fields.Add (Field.Creator);
+ result_fields.Add (Field.Publisher);
+ result_fields.Add (Field.Downloads);
+ result_fields.Add (Field.AvgRating);
+ result_fields.Add (Field.Description);
+ result_fields.Add (Field.Format);
sorts.Add (new Sort () { Id = "avg_rating desc" });
}
@@ -84,7 +89,7 @@ namespace InternetArchive
{
var sb = new System.Text.StringBuilder ();
- sb.AppendFormat ("q={0}", "(collection%3Aaudio+OR+mediatype%3Aaudio)+AND+-mediatype%3Acollection");
+ sb.AppendFormat ("q={0}", System.Web.HttpUtility.UrlEncode (Query));//"(collection%3Aaudio+OR+mediatype%3Aaudio)+AND+-mediatype%3Acollection");
foreach (var field in result_fields) {
sb.AppendFormat ("&fl[]={0}", System.Web.HttpUtility.UrlEncode (field.Id));
@@ -95,7 +100,7 @@ namespace InternetArchive
}
sb.AppendFormat ("&rows={0}", NumResults);
- sb.AppendFormat ("&fmt={0}", format.Id);
+ sb.AppendFormat ("&fmt={0}", Format.Id);
sb.Append ("&xmlsearch=Search");
return sb.ToString ();
diff --git a/src/Extensions/Banshee.InternetArchive/Makefile.am b/src/Extensions/Banshee.InternetArchive/Makefile.am
index e7dd75e..67d27fd 100644
--- a/src/Extensions/Banshee.InternetArchive/Makefile.am
+++ b/src/Extensions/Banshee.InternetArchive/Makefile.am
@@ -9,6 +9,10 @@ SOURCES = \
InternetArchive/MediaType.cs \
InternetArchive/ResultsFormat.cs \
InternetArchive/Search.cs \
+ InternetArchive/Results.cs \
+ InternetArchive/Item.cs \
+ InternetArchive/JsonResults.cs \
+ InternetArchive/JsonItem.cs \
InternetArchive/Sort.cs \
Banshee.InternetArchive/HeaderFilters.cs \
Banshee.InternetArchive/Source.cs
@@ -16,4 +20,3 @@ SOURCES = \
RESOURCES = Banshee.InternetArchive.addin.xml
include $(top_srcdir)/build/build.mk
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]