'Video', // 'description' => 'Configure different aspects of the video module and its plugins', 'page callback' => '_video_zencoder_postback_jobs', 'access arguments' => array('zencoder postback'), 'type' => MENU_CALLBACK, ); return $items; } /** * This will handle Zencoder postback once video conversion is completed * */ function _video_zencoder_postback_jobs() { // get JSON post data $data = file_get_contents("php://input"); watchdog('zencoder', t('Postback received from the Zencoder Transcoding servers.' . serialize($data))); // get the file object by zenocder job id $video = json_decode($data); // print_r($zc); // $zc_job_id = $video->job->id; $zc_job_state = trim($video->job->state); // $zc_output_id = $video->output->id; $zc_output_state = trim($video->output->state); // $zc_output_url = $video->output->url; if ($zc_output_state == 'finished' && $zc_job_state == 'finished') $video->output->state = VIDEO_RENDERING_COMPLETE; if ($zc_output_state == 'failed' || $zc_job_state == 'failed') $video->output->state = VIDEO_RENDERING_FAILED; if ($zc_job_state == 'processing') { watchdog('zencoder', t('Job !jobid is processing.', array('!jobid' => $video->job->id))); return; } // update the Zencoder Job module_load_include('inc', 'video_zencoder', '/includes/transcoder/video_zencoder'); $zc = new video_zencoder; // Lets run delete. $videodb = $zc->load_job_by_jobid($video->job->id); if ($video->output->state == VIDEO_RENDERING_COMPLETE) { $nid = $videodb->nid; $vid = $videodb->vid; $fid = $videodb->fid; $zc->change_status($vid, VIDEO_RENDERING_COMPLETE); // update the thumbanils // this will update the default thumbnails, if user want to select another one then they wil need to edit the node // Setup our thmbnail path. $video_thumb_path = variable_get('video_thumb_path', 'videos/thumbnails'); $final_thumb_path = file_default_scheme() . '://' . $video_thumb_path . '/' . $fid; // Ensure the destination directory exists and is writable. file_prepare_directory($final_thumb_path, FILE_CREATE_DIRECTORY); // $i = rand(0, (variable_get('no_of_video_thumbs', 5) - 1)); $filename = $fid . '_' . sprintf("%04d", 1) . '.png'; $thumbfile = $final_thumb_path . '/' . $filename; // s3 libraries_load('awssdk'); $key = variable_get('media_amazon_key', ''); $secret_key = variable_get('media_amazon_key_secret', ''); $bucket = variable_get('media_amazon_s3_bucket', ''); $s3 = new AmazonS3($key, $secret_key); if ($s3->get_object_metadata($bucket, $video_thumb_path . '/' . $fid . '/' . $filename)) { $response = $s3->get_object($bucket, $video_thumb_path . '/' . $fid . '/' . $filename, array('fileDownload' => drupal_realpath($thumbfile))); $default = $final_thumb_path . '/no-thumb.png'; @unlink(drupal_realpath($default)); if ($response->status == 200) watchdog('zencoder', t('Successfully downloaded the thumbnails file and replaced the default image.')); else watchdog('zencoder', t('Download thumbanils files is failed.'), array(), WATCHDOG_ERROR); } watchdog('zencoder', t('No thumbanils found.', array('!id' => $video->job->id, '!states' => $zc_output_state))); } else if ($video->output->state == VIDEO_RENDERING_FAILED) { // echo 'working failed'; $zc->change_status($vid, VIDEO_RENDERING_FAILED); watchdog('zencoder', t('Zencoder job failed converting videos, please login to zencoder web and check the erros.', array()), NULL, WATCHDOG_ERROR); } else { echo 'zencoder postback is working'; } } /** * Implementation of hook_mail(). */ function video_zencoder_mail($key, &$message, $params) { $language = $message['language']; $message['subject'] .= 'Zencoder Registration Details for Drupal Video'; $message['body'][] = video_zencoder_mail_default($params); } function video_zencoder_mail_default($params) { return t( 'Welcome to Zencoder for Drupal ------------------------------- Your account has been created and is ready to start processing. Your account details are as below. API Key : %api_key Password : %password * Login URL: https://app.zencoder.com/login You can get help at the following places: * Our chat room at http://zencoder.com/chat * Customer forums at https://help.zencoder.com/forums * The help desk at https://help.zencoder.com/tickets/new We\'d love to hear from you. Let us know how we can help. Thanks! Thanks, -Zencoder for Drupal Team', array('%api_key' => $params['api_key'], '%password' => $params['password'])); }