This example shows how to use the 51Degrees Cloud service to determine details about a
device based on its User-Agent and User-Agent Client Hint HTTP header values.
37 from fiftyone_devicedetection.devicedetection_pipelinebuilder
import DeviceDetectionPipelineBuilder
38 from fiftyone_devicedetection_examples.example_utils
import ExampleUtils
40 class GettingStartedConsole():
41 def run(self, resource_key, logger):
47 pipeline = DeviceDetectionPipelineBuilder(
49 resource_key = resource_key,
52 cloud_request_origin =
"51Degrees.example.com").build()
55 for values
in self.EvidenceValues:
56 self.analyseEvidence(values, pipeline, logger)
58 def analyseEvidence(self, evidence, pipeline, logger):
67 data = pipeline.create_flowdata()
72 message.append(
"Input values:\n")
74 message.append(f
"\t{key}: {evidence[key]}\n")
76 logger.info(
"".join(message))
79 data.evidence.add_from_dict(evidence)
85 message.append(
"Results:\n")
97 self.outputValue(
"Mobile Device", device.ismobile, message);
98 self.outputValue(
"Platform Name", device.platformname, message);
99 self.outputValue(
"Platform Version", device.platformversion, message);
100 self.outputValue(
"Browser Name", device.browsername, message);
101 self.outputValue(
"Browser Version", device.browserversion, message);
102 logger.info(
"".join(message));
104 def outputValue(self, name, value, message):
113 f
"\t{name}: {value.value()}\n" if value.has_value()
114 else f
"\t{name}: {value.no_value_message()}\n")
121 {
"header.user-agent":
122 "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G960U) " 123 "AppleWebKit/537.36 (KHTML, like Gecko) " 124 "SamsungBrowser/10.1 Chrome/71.0.3578.99 Mobile Safari/537.36" },
126 {
"header.user-agent":
127 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " 128 "AppleWebKit/537.36 (KHTML, like Gecko) " 129 "Chrome/78.0.3904.108 Safari/537.36" },
132 {
"header.user-agent":
133 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " 134 "AppleWebKit/537.36 (KHTML, like Gecko) " 135 "Chrome/98.0.4758.102 Safari/537.36",
136 "header.sec-ch-ua-mobile":
"?0",
138 "\" Not A; Brand\";v=\"99\", \"Chromium\";v=\"98\", " 139 "\"Google Chrome\";v=\"98\"",
140 "header.sec-ch-ua-platform":
"\"Windows\"",
141 "header.sec-ch-ua-platform-version":
"\"14.0.0\"" }
147 resource_key = argv[0]
if len(argv) > 0
else ExampleUtils.get_resource_key()
150 logger = logging.getLogger(
"Getting Started")
151 logger.setLevel(logging.INFO)
154 GettingStartedConsole().run(resource_key, logger)
157 "No resource key specified in environment variable " +
158 f
"'{ExampleUtils.RESOURCE_KEY_ENV_VAR}'. The 51Degrees " +
159 "cloud service is accessed using a 'ResourceKey'. " +
160 "For more detail see " +
161 "http://51degrees.com/documentation/4.3/_info__resource_keys.html. " +
162 "A resource key with the properties required by this " +
163 "example can be created for free at " +
164 "https://configure.51degrees.com/g3gMZdPY. " +
165 "Once complete, populated the environment variable " +
166 "mentioned at the start of this message with the key.")
168 if __name__ ==
"__main__":