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, 28 May 2020

Meet News Break, the news app trending in America founded by a Chinese media veteran

TikTok isn’t the only new media app with Chinese background that’s making waves in the U.S. News Break, a news app founded by China’s media veteran Jeff Zheng with teams in Beijing, Shanghai, Seattle and Mountain View, has been sitting among the top three news apps in the U.S. App Store since March, according to third-party data from Sensor Tower.

Positioned as a news aggregator focused on local reporting, the platform surged to be the third-most downloaded U.S. iOS app across the board in mid-March.

The fledgling news app announced this week a substantial boost as it onboards Harry Shum as its board chairman. Shum is the former president of Microsoft AI and Research Group and played a key role in establishing the Microsoft Research Asia lab, which has trained a raft of China’s top AI talents including the founder of autonomous driving unicorn Momenta.

Former Microsoft executive Harry Shum joins News Break, a local news aggregator founded in the U.S. by a Chinese media veteran (Photo source: News Break)

News Break is staffed with other storied overseas Chinese tech bosses. Jeff Zheng, the founding chief executive, headed up Yahoo Labs in Beijing where he oversaw algorithm improvements in search, media, advertising and mobile. In 2011, he left Yahoo to launch Yidian Zixun, the Beijing-based startup seen early on as the main rival of Toutiao, the hit news app that made ByteDance a household name in China before Douyin emerged. Together with other algorithm-driven news apps, the duo changed the habits of hundreds of millions in China from consuming human-curated news to machine-recommended content with minimal human oversight.

News Break is Zheng’s effort to replicate Yidian Zixun’s success in foreign markets with his co-founder Ren Xuyang, a former Baidu executive. Founded in Silicon Valley in 2015, News Break now boasts 23 million monthly users with a growing network of over 10,000 content providers.

Screenshots of the News Break app (Source: News Break)

The type of personalized reading experience pioneered by Toutiao is now a default feature across media apps in the U.S., said (in Chinese) Vincent Wu, chief operating officer of News Break, at an event in Silicon Valley. To stand out from the crowd, the company serves up local news and happenings for readers, for Wu observed that America’s mainstream media focus overwhelmingly on national affairs and celebrity gossip, “news that’s irrelevant to my day-to-day.”

“Only high-quality, hyper-relevant local news can provide valuable information to readers,” he added.

ByteDance has tried exporting the Toutiao model through TopBuzz, but the overseas edition never achieved mainstream success and is reportedly looking for a buyer.

Other big names involved in News Break range from Yahoo co-founder Jerry Yang who joined as the chief advisor as well as Wu, HuffPost’s former operations head.

Particle Media, the Delaware-registered operating entity of News Break, has raised over $20 million to date from investors including IDG Capital, ZhenFund and Ding Lei, the founder of Chinese online media and gaming giant NetEase.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support