package com.plivo.examples;
import com.plivo.api.Plivo;
import com.plivo.api.exceptions.PlivoRestException;
import com.plivo.api.exceptions.PlivoValidationException;
import com.plivo.api.models.base.ListResponse;
import com.plivo.api.models.recording.Recording;
import com.plivo.api.util.PropertyFilter;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Example script for downloading recording files
*/
public class DownloadRecordings {
private static final String AUTH_ID = "<auth_id>";
private static final String AUTH_TOKEN = "<auth_token>";
public static void main(String[] args) {
Plivo.init(AUTH_ID, AUTH_TOKEN);
try {
String greaterThan = "2023-04-01 00:00:00";
String lessThan = "2023-04-30 00:00:00";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date greaterThanDate = formatter.parse(greaterThan);
Date lessThanDate = formatter.parse(lessThan);
ListResponse<Recording> response = Recording.lister().addTime(new PropertyFilter<Date>().greaterThan(greaterThanDate).lessThan(lessThanDate)).offset(0).limit(5).list();
System.out.println("Found " + response.getObjects().size() + " recordings.");
for (Recording recording : response.getObjects()) {
String recordingURL = recording.getRecordingUrl();
String recordingId = recording.getRecordingId();
String format = recording.getRecordingFormat();
System.out.println("Downloading recording: " + recordingURL);
// Directory where the recordings will be saved
File outputFile = new File("recordings/" + recordingId + "." + format);
outputFile.getParentFile().mkdirs();
try {
// Download the file
FileUtils.copyURLToFile(new URL(recordingURL), outputFile);
System.out.println("Downloaded file to: " + outputFile.getPath());
} catch (IOException e) {
System.out.println("Error downloading file: " + e.getMessage());
}
}
} catch (PlivoRestException | IOException e) {
e.printStackTrace();
} catch (PlivoValidationException e) {
throw new RuntimeException(e);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}