package com.torrenttunes.client.extra;
import java.io.File;
import java.util.concurrent.CountDownLatch;
import com.frostwire.jlibtorrent.LibTorrent;
import com.frostwire.jlibtorrent.Session;
import com.frostwire.jlibtorrent.TorrentAlertAdapter;
import com.frostwire.jlibtorrent.TorrentHandle;
import com.frostwire.jlibtorrent.alerts.BlockDownloadingAlert;
import com.frostwire.jlibtorrent.alerts.BlockFinishedAlert;
import com.frostwire.jlibtorrent.alerts.StateChangedAlert;
import com.frostwire.jlibtorrent.alerts.StatsAlert;
import com.frostwire.jlibtorrent.alerts.TorrentFinishedAlert;
import com.torrenttunes.client.tools.DataSources;
import com.torrenttunes.client.tools.Tools;
public final class DownloadTorrent {
public static void main(String[] args) throws Throwable {
File torrentFile = DataSources.SAMPLE_TORRENT;
final Session s = new Session();
final TorrentHandle th = s.addTorrent(torrentFile, torrentFile.getParentFile());
// s.startDHT();
// s.startLSD();
// s.startNATPMP();
// s.startUPnP();
s.addListener(new TorrentAlertAdapter(th) {
@Override
public void blockFinished(BlockFinishedAlert alert) {
}
@Override
public void torrentFinished(TorrentFinishedAlert alert) {
System.out.println("Torrent finished");
}
@Override
public void blockDownloading(BlockDownloadingAlert alert) {
super.blockDownloading(alert);
}
@Override
public void stateChanged(StateChangedAlert alert) {
System.out.println(th.getStatus().getState().toString());
super.stateChanged(alert);
}
@Override
public void stats(StatsAlert alert) {
String progress = Tools.NUMBER_FORMAT.format(th.getStatus().getProgressPpm()*1E-4) + "%";
System.out.println("Progress: " + progress);
String downloadSpeed = Tools.humanReadableByteCount(th.getStatus().getDownloadRate(), true)+ "/s";
String uploadSpeed = Tools.humanReadableByteCount(th.getStatus().getUploadRate(), true)+ "/s";
System.out.println("Download Speed: " + downloadSpeed);
System.out.println("Upload Speed: " + uploadSpeed);
System.out.println("Peers: " + th.getStatus().getNumConnections() + "/" +
th.getStatus().getConnectCandidates());
super.stats(alert);
}
});
th.resume();
}
}