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

Wednesday, 27 November 2019

TikTok apologizes for removing viral video about abuses against Uighurs, blames a “human moderation error”

TikTok has issued a public apology to a teenager who had her account suspended shortly after posting a video that asked viewers to research the persecution of Uighur people and other Muslim groups in Xinjiang. TikTok included a “clarification on the timeline of events,” and said that the viral video was removed four days after it was posted on November 23 “due to a human moderation error” and did not violate the platform’s community guidelines (the account @getmefamouspartthree and video have since been reinstated).

But the user, Feroza Aziz, who describes herself in her Twitter profile as “just a Muslim trying to spread awareness,” rejected TikTok’s claims, tweeting “Do I believe they took it away because of an unrelated satirical video that was deleted on a previous deleted account of mine? Right after I finished posting a 3 part video about the Uyghurs? No.”

In the video removed by TikTok, Aziz begins by telling viewers to use an eyelash curler, before telling them to put it down and “use your phone, that you’re using right now, to search up what’s happening in China, how they’re getting concentration camps, throwing innocent Muslims in there, separating families from each other, kidnapping them, murdering them, raping them, forcing them to eat pork, forcing them to drink, forcing them to convert. This is another Holocaust, yet no one is talking about it. Please be aware, please spread awareness in Xinjiang right now.”

TikTok is owned by ByteDance and the video’s removal led to claims that the Beijing-based company capitulated to pressure from the Chinese Communist Party (Douyin, ByteDance’s version of TikTok for China, is subject to the same censorship laws as other online platforms in China).

Though the government-directed persecution of Muslim minority groups in China began several years ago and about a million people are believed to be detained in internment camps, awareness of the crisis was heightened this month after two significant leaks of classified Chinese government documents were published by the New York Times and the International Consortium of Investigative Journalists, confirming reports by former inmates, eyewitnesses and researchers.

Aziz told BuzzFeed News she has been talking about the persecution of minority groups in China since 2018 because “as a Muslim girl, I’ve always been oppressed and seen my people be oppressed, and I’ve always been into human rights.”

In the BuzzFeed News article, published before TikTok’s apology post, the company claimed Aziz’s account suspension was related to another video she made that contained an image of Osama Bin Laden. The video was created as a satirical response to a meme about celebrity crushes and Aziz told BuzzFeed News that “it was a dark humor joke that he was at the end, because obviously no one in their right mind would think or say that.” A TikTok spokesperson said it nonetheless “violated its policies on terrorism-related content.”

“While we recognize that this video may have been intended as satire, our policies on this front are currently strict. Any such content, when identified, is deemed a violation of our Community Guidelines and Terms of Service, resulting in a permanent ban of the account and associated devices,” a TikTok spokesperson told BuzzFeed, adding that the suspension of Aziz’s second account, which the makeup tutorial video was posted on, was part of the platform’s blocking of 2,406 devices linked to previously suspended accounts.

In TikTok’s apology post today, TikTok US head of safety Eric Tan wrote that the platform relies on technology to uphold community guidelines and human moderators as a “second line of defense.”

“We acknowledge that at times, this process will not be perfect. Humans will sometimes make mistakes, such as the one made today in the case of @getmefamouspartthree’s video,” he added. “When those mistakes happen, however, our commitment is to quickly address and fix them, undertake trainings or make changes to reduce the risk of the same mistakes being repeated, and fully own the responsibility for our errors.”

Aziz told the Washington Post, however, that “TikTok is trying to cover up this whole mess. I won’t let them get away with this.”

The controversy comes as TikTok faces an inquiry by the U.S. government into how it secures the personal data of users. Reuters reported yesterday that TikTok plans to separate its product and business development, and marketing and legal teams from Douyin in the third quarter of this year.

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support