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 31 October 2018

Siri Shortcuts app gets updated with weather, alarms, timers and more

Alongside today’s announcements of new iPads and Mac, Apple also rolled out an updated version of its Siri Shortcuts app. The app, first introduced at WWDC, arrived with iOS 12 as a way to unlock Siri’s potential by allowing users to create their own custom voice commands and workflows. Now, it can do a few new things, too – including setting alarms and timers, getting the latest weather, and more.

The weather actions should be especially useful for those who have created custom morning routines with Siri Shortcuts, as you’ll now be able to use the latest weather in your shortcuts with the new “Get Current Weather” and “Get Weather Forecast” actions. Being able to ask for this sort of information is already among the top use cases for voice assistants, like Alexa and Google Assistant, so it makes sense to offer these sorts of commands to Siri Shortcuts users, as well.

With these options, you can now ask for current conditions, forecasts (hourly, daily or 10 days out), or for any specific condition – like the humidity, chance of rain, air quality, and more.

Also helpful are the new “Create Alarm,” “Toggle Alarm,” and “Start Timer” actions, which addressed another notable hole in the Shortcuts app at launch. Many people were confused about how to use alarms within the app because these actions weren’t available, and the request often came up on Apple’s own support site, too. The new release, Siri Shortcuts 2.1, addresses this problem.

Other new actions include the ability to convert between a variety of units from the “Measurement” and “Convert Measurement” actions; the ability to get the most recent set of imported photos from the Photos app using the “Get Last Import” action; and the ability to star recording video immediately in the “Take Video” action.

Interestingly, Apple didn’t call that last one out in the App Store update text – maybe because all the news attention a user-created shortcut calledPolice” recently received. “Police” lets you speak a verbal command that performs a series of actions, including messaging a friend, turning down the phone’s brightness, and pausing the sounds on your phone. It then gives you a button to press to start to recording. Now, it seems you can tweak the “Police” shortcut to just begin recording right away.

The updated app also fixes a problem with using Siri Shortcuts with HomePod. It will now automatically play back media from the HomePod over AirPlay, when you run the shortcut from HomePod via Siri – which just makes more sense.

Siri Shortcuts version 2.1 is the first major update following the app’s release with iOS 12. However, the app today still largely appeals to iOS power users – those who were already comfortable using its predecessor, Workflow, and who understand how to build routines.

More mainstream users are likely being exposed to Siri’s expanded powers through their favorite apps. With iOS 12, a number of top developers updated their apps with “Add to Siri” buttons that point out special tasks their apps can perform by way of voice. Early adopters on this front included Pandora, The Weather Channel, Sky Guide, Citymapper, Google News, TripIt, Trello, Monster, and others.

The updated version of Siri Shortcuts is available for download from the App Store.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support