generated from Nekojimi/JavaMavenTemplate
WIP: added initial versions of search API.
This commit is contained in:
parent
c814c3ab4c
commit
4d7eccd1e0
7
pom.xml
7
pom.xml
|
@ -35,4 +35,11 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jsoup</groupId>
|
||||||
|
<artifactId>jsoup</artifactId>
|
||||||
|
<version>1.14.2</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -3,7 +3,7 @@
|
||||||
* To change this template file, choose Tools | Templates
|
* To change this template file, choose Tools | Templates
|
||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
package moe.nekojimi.javamaventemplate;
|
package moe.nekojimi.musicsearcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moe.nekojimi.musicsearcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jim
|
||||||
|
*/
|
||||||
|
public class Result {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moe.nekojimi.musicsearcher.providers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import moe.nekojimi.musicsearcher.Result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jim
|
||||||
|
*/
|
||||||
|
public class MetaSearcher extends Searcher
|
||||||
|
{
|
||||||
|
|
||||||
|
private final Set<Searcher> searchers;
|
||||||
|
|
||||||
|
public MetaSearcher()
|
||||||
|
{
|
||||||
|
super("meta");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Result> search(String query)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moe.nekojimi.musicsearcher.providers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.ForkJoinPool;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import moe.nekojimi.musicsearcher.Result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jim
|
||||||
|
*/
|
||||||
|
public abstract class Searcher
|
||||||
|
{
|
||||||
|
private final String name;
|
||||||
|
private final ForkJoinPool executor;
|
||||||
|
|
||||||
|
public Searcher(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.executor = new ForkJoinPool();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Result> searchAndWait(String query) throws InterruptedException, ExecutionException
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return searchAndWait(query, Long.MAX_VALUE, TimeUnit.DAYS);
|
||||||
|
} catch (TimeoutException ex)
|
||||||
|
{
|
||||||
|
throw new RuntimeException("This should never happen!",ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Result> searchAndWait(String query, long limit, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
|
||||||
|
{
|
||||||
|
return search(query).get(limit, unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Future<List<Result>> search(String query)
|
||||||
|
{
|
||||||
|
FutureTask<List<Result>> task = new FutureTask<>(() ->
|
||||||
|
{
|
||||||
|
return doSearch(query);
|
||||||
|
});
|
||||||
|
executor.execute(task);
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract List<Result> doSearch(String query);
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moe.nekojimi.musicsearcher.providers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import moe.nekojimi.musicsearcher.Result;
|
||||||
|
import org.jsoup.Jsoup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jim
|
||||||
|
*/
|
||||||
|
public class WebScraperSearcher extends Searcher
|
||||||
|
{
|
||||||
|
private String searchUrl;
|
||||||
|
|
||||||
|
private String resultItem;
|
||||||
|
private String artistItem;
|
||||||
|
private String titleItem;
|
||||||
|
private String linkHrefItem;
|
||||||
|
private String albumArtistItem;
|
||||||
|
|
||||||
|
public WebScraperSearcher(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<Result> doSearch(String query)
|
||||||
|
{
|
||||||
|
Jsoup.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue