File: user_agent_parser.py

package info (click to toggle)
mozjs140 140.7.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,216,752 kB
  • sloc: javascript: 2,267,210; cpp: 1,423,664; python: 966,252; ansic: 632,297; xml: 115,965; sh: 15,392; asm: 13,399; makefile: 10,455; yacc: 4,504; perl: 2,223; lex: 1,414; ruby: 1,064; exp: 756; java: 185; sql: 66; sed: 18
file content (43 lines) | stat: -rw-r--r-- 950 bytes parent folder | download | duplicates (21)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# mypy: allow-untyped-defs

from ua_parser import user_agent_parser


def parse_user_agent(user_agent_string):
    user_agent = user_agent_parser.ParseUserAgent(user_agent_string)

    name = user_agent["family"]
    version = "0"

    if user_agent["major"] is not None:
        version = user_agent["major"]

    if user_agent["minor"] is not None:
        version = version + "." + user_agent["minor"]

    if user_agent["patch"] is not None:
        version = version + "." + user_agent["patch"]

    return {
        "name": name,
        "version": version
    }


def abbreviate_browser_name(name):
    short_names = {
        "Chrome": "Ch",
        "Chrome Mobile WebView": "Ch",
        "Chromium": "Cm",
        "WebKit": "Wk",
        "Safari": "Sf",
        "Firefox": "FF",
        "IE": "IE",
        "Edge": "Ed",
        "Opera": "Op"
    }

    if name in short_names:
        return short_names[name]
    else:
        return "Xx"