package yukihane.inqubus.thumbnail;
import java.awt.image.BufferedImage;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.imageio.ImageIO;
-import javax.swing.ImageIcon;
import nicobrowser.NicoHttpClient;
import nicobrowser.util.RssContent;
import nicobrowser.util.RssContentParser;
private final ExecutorService executorService = Executors.newCachedThreadPool();
private final Map<String, Thumbnail> thumbnailMap = new HashMap<>();
- public void request(ProxyProfile proxy, String videoId) {
+ public void request(ProxyProfile proxy, File tempDir, String videoId) {
synchronized (thumbnailMap) {
final Thumbnail value = thumbnailMap.get(videoId);
if (value != null) {
}
}
- executorService.execute(new ThumnailFetchWorker(proxy, videoId));
+ executorService.execute(new ThumnailFetchWorker(proxy, tempDir, videoId));
}
public Thumbnail getThumnail(String videoId) {
private final ProxyProfile proxy;
private final String videoId;
+ private final File tempDir;
- private ThumnailFetchWorker(ProxyProfile proxy, String videoId) {
+ private ThumnailFetchWorker(ProxyProfile proxy, File tempDir, String videoId) {
this.proxy = proxy;
this.videoId = videoId;
+ this.tempDir = tempDir;
}
@Override
final RssContent cont = new RssContentParser().parse(is);
final URL thumbUrl = new URL(cont.getThumbnail_url());
- ImageIcon icon;
+ final File imageFile;
try (InputStream imageStream = client.get(thumbUrl)) {
final BufferedImage image = ImageIO.read(imageStream);
- icon = new ImageIcon(image);
+ imageFile = File.createTempFile("thumb", ".jpg", tempDir);
+ imageFile.deleteOnExit();
+ ImageIO.write(image, "jpeg", imageFile);
}
- final Thumbnail thumb = new Thumbnail(cont.getTitle(), icon);
+ final Thumbnail thumb = new Thumbnail(cont.getTitle(), cont.getLength(), imageFile);
synchronized (thumbnailMap) {
thumbnailMap.put(videoId, thumb);