Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 29 December 2020

Streaming services face their real test in 2021

After a year where the movie business was defined almost entirely by pauses and delays, Warner Bros. took decisive action on December 3.

It had only been a couple of weeks since the studio had announced that in the face of surging coronavirus numbers, it wouldn’t be delaying the Christmas release of “Wonder Woman 1984” yet again. Instead, it would launch the movie simultaneously in theaters and on HBO Max, the new streaming service from its parent company WarnerMedia.

While media/telecom executives and Wall Street investors seem willing to make big investments for a streaming-centric future, they’ll expect to see actual profits soon.

It turned out that this decision — already described as a transformative moment in the industry, and potentially the beginning of the end for theaters — was just the beginning. On December 3, Warner Bros. announced that it would be following the exact same strategy for every movie on its theatrical slate in 2021.

This may have seemed like welcome news to moviegoers eager to finally see “In the Heights” (already delayed by about a year thanks to the pandemic) or “Dune” (ditto). But while “Wonder Woman” director Patty Jenkins and star Gal Gadot seemed to embrace the news, declaring that it was time to share their movie with fans, other Warner Bros. filmmakers were less enthusiastic.

For example, “The Dark Knight” director Christopher Nolan complained that Warner Bros. executives “don’t even understand what they’re losing,” and he claimed that filmmakers had gone to bed “thinking they were working for the greatest movie studio and woke up to find out they were working for the worst streaming service.” (Nolan’s “Tenet” was released in theaters in the fall, and its disappointing box office numbers, particularly in the U.S., probably played a big role in Warner’s decision.)

And in a guest column for Variety, “Dune” director Denis Villeneuve pointed his finger at AT&T, which acquired Time Warner several years earlier. He suggested that the streaming strategy had less to do with the pandemic and more with the underwhelming launch of HBO Max over the summer.

“With HBO Max’s launch a failure thus far, AT&T decided to sacrifice Warner Bros.’ entire 2021 slate in a desperate attempt to grab the audience’s attention,” Villeneuve wrote.

Barely more than a week after the Warner Bros. announcement, Disney had a big presentation of its own, laying out ambitious streaming plans for the next few years, with 10 Marvel shows, 10 Star Wars shows, 15 Disney Animation/Disney live action/Pixar series and 15 Disney Animation/Disney live action/Pixar feature films all in the pipeline for Disney+.

Disney’s announcements weren’t greeted with the same uproar and controversy as Warner’s — it didn’t represent a wholesale shift in its theatrical strategy (the Marvel Studios film “Black Widow” is currently still scheduled for a traditional release in May, for example), and unlike WarnerMedia, its announcements didn’t blindside filmmakers and throw their compensation into question.

Still, the message to the industry and the public was quite similar: While Disney isn’t abandoning theaters outright, it clearly sees streaming as its future, with the studio willing to reboot any and every intellectual property (“Turner and Hooch”! “Swiss Family Robinson”! An “Alien” TV series!) to attract potential subscribers.



from TechCrunch https://ift.tt/3nT9FIq
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support