package flick;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class DownloadLauncher {
static final public int LAST = 109;
static final public int START = 1;
static final public String PREFIX = "https://cfvod.kaltura.com/scf/hls/p/1921661/sp/192166100/serveFlavor/entryId/1_e4vktn7o/v/1/ev/7/flavorId/1_51i2iaqb/name/a.mp4/seg-";
static final public String POSTFIX1 = "-v1-a1.ts?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZnZvZC5rYWx0dXJhLmNvbS9zY2YvaGxzL3AvMTkyMTY2MS9zcC8xOTIxNjYxMDAvc2VydmVGbGF2b3IvZW50cnlJZC8xX2U0dmt0bjdvL3YvMS9ldi83L2ZsYXZvcklkLzFfNTFpMmlhcWIvbmFtZS9hLm1wNC8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTQ0NTExMjI4fX19XX0_&Signature=ZvSmUm7fUqvB7mX2XyrsMozNlRDL7O0QDkKTG5te-NDPNPvc1y7m~q20lAFYk2t0UzCOHSdpF5Jms3B65QPXG2uOF94eBQ8QnNAsUcCDyeFScwLo2b1WNXPnjn18cSZYXH2sBf9TiCu8TrMTWlf6SYGnhtWxQQfzdjbyVWhC9Lpt0uDL8gE~xpxNRUADRIJL7wQru4eBPWbqUFNkP6nNeTTkfcH~y-cYR1kZW8IaYoh1JRLTnZUrMjQMbyC6zi4MExo-SmAErLBXrjmjgMJ1fK4f9yRzIqlXnwIfg60jPDP-pBCvIGtVV22F0SLisaBrfHRCjSuOnZ0r0NvtcYJLZQ__&Key-Pair-Id=APKAJT6QIWSKVYK3V34A";
static final public String POSTFIX = ".ts";
static final public String LOCALPATH = "c:\\temp\\";
static final public String MERGED = "merged.avi";
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(1);
for( int i = START; i <= LAST; i++ ){
// String task = PREFIX + i + POSTFIX;
String task = PREFIX + i + POSTFIX1;
VideoFragmentDownloader load = new VideoFragmentDownloader(task, i);
executor.execute(load);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
}
}
package flick;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Merger {
private static final int START = 1;
private static void run() throws IOException{
FileInputStream in = null;
String destFile = DownloadLauncher.LOCALPATH +
DownloadLauncher.MERGED;
FileOutputStream out = new FileOutputStream(destFile,true);
for( int i = START; i <= DownloadLauncher.LAST; i++){
byte[] buf = new byte[1024];
int len = 0;
String sourceFile = DownloadLauncher.LOCALPATH + i +
DownloadLauncher.POSTFIX;
in = new FileInputStream(sourceFile);
while( (len = in.read(buf)) != -1 ){
out.write(buf,0,len);
}
}
out.close();
}
public static void main(String[] args) {
try {
run();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Merged ok!");
}
}
package flick;
import java.util.ArrayList;
import java.util.List;
public class TEST
{
public static void main(String[] args)
{
Utility.SetProxy();
ArrayList<String> a = null;
List<String> urlList = Utility.getURLList("c:\\temp\\url.txt");
for(int i = 0; i < urlList.size(); i++)
System.out.println("Index: " + i + "-" + URLFetcher.getStaticURL(urlList.get(i)));
}
}
package flick;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLFetcher
{
static public String getStaticURL(String ID)
{
String strFullURL = "http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&api_key=b29c2c7f2a7cf6deccdd2672a7893025&photo_id="
+ ID + "&format=rest";
URL url;
StringBuffer sb = new StringBuffer();
try
{
url = new URL(strFullURL);
URLConnection urlConnection;
urlConnection = url.openConnection();
urlConnection.setRequestProperty("Accept-Charset", "UTF-8");
InputStream is = urlConnection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int numCharsRead;
char[] charArray = new char[1024];
while ((numCharsRead = in.read(charArray)) > 0)
{
sb.append(charArray, 0, numCharsRead);
}
in.close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return Utility.getStaticURL(sb.toString());
}
}
package flick;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Utility
{
static public void SetProxy()
{
System.setProperty("http.proxyHost", "proxy");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "proxy");
System.setProperty("https.proxyPort", "8080");
}
static public List<String> getURLList(String file)
{
List<String> urlList = new ArrayList<String>();
try
{
FileInputStream f = new FileInputStream(file);
BufferedReader dr = new BufferedReader(new InputStreamReader(f));
String url = null;
while ( ( url = dr.readLine() ) != null )
{
urlList.add(getID(url));
}
f.close();
dr.close();
}
catch (IOException e)
{
}
return urlList;
}
static private String getID(String url)
{
String[] a = url.split("/");
return a[a.length-1];
}
static public String getStaticURL(String content)
{
String prefix = "source=";
int index = content.indexOf("Original");
if( index == -1)
return null;
String sub = content.substring(index);
int source = sub.indexOf(prefix);
if( source == -1)
return null;
int end = sub.indexOf("url=");
if( end == -1)
return null;
return sub.substring(source + prefix.length(), end);
}
}
package flick;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class VideoFragmentDownloader implements Runnable{
private String mTask;
private int mIndex;
public VideoFragmentDownloader(String url, int index){
this.mTask = url;
this.mIndex = index;
}
private void download(){
URL task = null;
String path = DownloadLauncher.LOCALPATH + this.mIndex +
DownloadLauncher.POSTFIX;
String url = this.mTask;
try {
task = new URL(url);
DataInputStream dataInputStream = new DataInputStream(task.openStream());
FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = dataInputStream.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
fileOutputStream.write(output.toByteArray());
dataInputStream.close();
fileOutputStream.close();
System.out.println("File: " + this.mIndex + " downloaded ok");
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
this.download();
}
}