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();

Thursday, 1 August 2019

Facebook reveals early results from its subscription-focused local news accelerator

It’s been more than a year since Facebook announced that it would be funding a Local News Subscriptions Accelerator. Now the company is sharing some of the ways in which program has led to new initiatives at different publishers.

The accelerator is administered by the Lenfest Institute for Journalism, and in an email, the institute’s director of operations Ken Herts said the program “brought together an important set of metro news organizations in a boot-camp format, to learn from each other and from other industries,” then provided grant funding so the organizations could launch new programs to experiment and increase digital subscriptions.

“The Lenfest Institute’s mission is to develop and support sustainable business models for local journalism,” Herts said. “We strongly believe that digital subscriptions are part of the solution.”

According to Facebook, the projects funded through the program have led to tens of thousands of new digital subscriptions, as well as hundreds of thousands of new email subscribers, resulting in an estimated $5 million in additional value across the 14 participating metro newspapers.

For example, the San Francisco Chronicle held an “ultra sale” in the winter of 2018, signing up more than 5,000 new subscribers, making it its best digital subscription initiative so far. At the same time, the Advance Local-owned site Syracuse.com increased its newsletter subscriptions by 30,000 (275%) as preparation for its subsequently launched digital subscription business.

Facebook also pointed at the Philadelphia Inquirer’s creation of “a cross-functional agile team from marketing, circulation and data/analytics,” and at the Seattle Times’ efforts to personalize the messages asking readers to subscribe, and to study pricing elasticity.

And there are some broader lessons across the accelerator’s publishers, namely: 1) The leading publishers are still seeing increasing gains in digital subscriptions, 2) there’s a lot of room for email growth (half the accelerator publishers saw gains of more than 50,000 new subscribers), 3) that growth is important since 5% and 10% of email subscribers will convert to paid subscribers, 4) building user loyalty is crucial for future paid subscriptions and 5) retention among existing subscribers is also key — which is why the accelerator reconvened this year to focus on retention.

I got a chance to discuss about these initial results with Facebook Local News Partnerships Lead Josh Mabry and Accelerator Program Manager for News Partnerships David Grant.

“We want to make it a place where a cohort learns together, but then we share those learnings, those lessons out to the industry [so that everyone] benefits] more broadly,” Mabry said.

When I told them I was encouraged that publications that aren’t, say, New York Times-level can still grow their subscription programs, Grant replied, “Can local news do it? The answer to that is yes.”

He also quoted an accelerator instructor who told participants, “In your region, you are going to be The New York Times … You need to have that level of sophistication, with excellent products and excellent marketing.”

Grant also acknowledged that the first thing most publishers ask is: Why is Facebook doing this? Is it just to drive more usage of Facebook products like Instant Articles? In fact, he estimated that 99% of the program has nothing to do with Facebook.

“It’s not about Facebook tools and services,” he said. “Really, the focus is on building the right type of community. We’re trying to solve problems; we’re not trying to adopt products.”



from TechCrunch https://ift.tt/2yFum2N
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support