/** * Add a new video file into the mediawiki infrastructure so that it can * be accessed as {{whvid|filename.mp4|Preview.jpg}} */ public function addWikiHowVideo($articleId, &$video) { // find name for video; change filename to Filename 1.jpg if // Filename.jpg already existed $regexp = '/[^' . Title::legalChars() . ']+/'; $first = preg_replace($regexp, '', $video['first']); // Let's also remove " and ' since s3 doesn't seem to like $first = preg_replace('/["\']+/', '', $first); $ext = $video['ext']; $newName = $first . '.' . $ext; $i = 1; do { if (!WikiVideo::fileExists($newName)) { break; } $newName = $first . ' Version ' . ++$i . '.' . $ext; } while ($i <= 1000); // Move the file from one s3 bucket to another $ret = WikiVideo::copyFileToProd(WikiVisualTranscoder::AWS_TRANSCODING_OUT_BUCKET, $video['aws_uri_out'], $newName); if ($ret['error']) { return $ret['error']; } // instruct later processing about which mediawiki name was used $video['mediawikiName'] = $newName; // Add preview image $img = $video; $img['ext'] = 'jpg'; $err = Mp4Transcoder::addMediawikiImage($articleId, $img); if ($err) { return 'Unable to add preview image: ' . $err; } else { $video['previewMediawikiName'] = $img['mediawikiName']; // Cleanup temporary preview image if (!empty($img['filename'])) { $rmCmd = "rm " . $img['filename']; system($rmCmd); } } self::d(">>> addWikiHowVideo: video['mediawikiName']=" . $video['mediawikiName'] . ", video['previewMediawikiName']=" . $video['previewMediawikiName']); // Keep a log of where videos were uploaded in wikivideo_video_names table $dbw = WikiVisualTranscoder::getDB('write'); $vidname = $articleID . '/' . $video['name']; $sql = 'INSERT INTO wikivisual_vid_names SET filename=' . $dbw->addQuotes($vidname) . ', wikiname=' . $dbw->addQuotes($video['mediawikiName']); $dbw->query($sql, __METHOD__); return ''; }
/** * Add a new image file into the mediawiki infrastructure so that it can * be accessed as [[Image:filename.jpg]] */ private static function addMediawikiImage($articleID, &$image, $userIsScreenshotter) { // check if we've already uploaded this image $dupTitle = DupImage::checkDupImage($image['filename']); // if we've already uploaded this image, just return that filename if ($dupTitle) { $image['mediawikiName'] = $dupTitle; return true; } // find name for image; change filename to Filename 1.jpg if // Filename.jpg already existed $regexp = '/[^' . Title::legalChars() . ']+/'; $first = preg_replace($regexp, '', $image['first']); $ext = $image['ext']; $newName = $first . '.' . $ext; $i = 1; do { $title = Title::newFromText($newName, NS_IMAGE); if ($title && !$title->exists()) { break; } $newName = $first . ' Version ' . ++$i . '.' . $ext; } while ($i <= 1000); // insert image into wikihow mediawiki repos if (!$userIsScreenshotter) { $comment = '{{' . WikiVisualTranscoder::PHOTO_LICENSE . '}}'; } else { $comment = '{{' . WikiVisualTranscoder::SCREENSHOT_LICENSE . '}}'; } // next 6 lines taken and modified from // extensions/wikihow/eiu/Easyimageupload.body.php $title = Title::makeTitleSafe(NS_IMAGE, $newName); if (!$title) { return false; } $file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo()); if (!$file) { return false; } $ret = $file->upload($image['filename'], $comment, $comment); if (!$ret->ok) { return false; } // instruct later processing about which mediawiki name was used $image['mediawikiName'] = $newName; // Add our uploaded image to the dup table so it's no uploaded again DupImage::addDupImage($image['filename'], $image['mediawikiName']); // Keep a log of where images were uploaded in wikiphoto_image_names table $dbw = WikiVisualTranscoder::getDB('write'); $imgname = $articleID . '/' . $image['name']; $sql = 'INSERT INTO wikivisual_photo_names SET filename=' . $dbw->addQuotes($imgname) . ', wikiname=' . $dbw->addQuotes($image['mediawikiName']); $dbw->query($sql, __METHOD__); return true; }
private function dbRemoveTranscodingJobs($aid) { $dbw = WikiVisualTranscoder::getDB('write'); $dbw->delete('wikivisual_vid_transcoding_status', array("article_id" => $aid), __METHOD__); }
public static function isStillTranscoding($aid) { $dbr = WikiVisualTranscoder::getDB('read'); return 0 < $dbr->selectField('wikivisual_vid_transcoding_status', 'count(*)', array('article_id' => $aid, "status != 'Complete'")); }