aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/livestreamer/packages/flashmedia/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/livestreamer/packages/flashmedia/util.py')
-rw-r--r--src/livestreamer/packages/flashmedia/util.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/livestreamer/packages/flashmedia/util.py b/src/livestreamer/packages/flashmedia/util.py
new file mode 100644
index 0000000..237cf74
--- /dev/null
+++ b/src/livestreamer/packages/flashmedia/util.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+from .compat import bytes, is_py2
+
+def isstring(val):
+ if is_py2:
+ return isinstance(val, str) or isinstance(val, unicode)
+ else:
+ return isinstance(val, str)
+
+def byte(ordinal):
+ if isstring(ordinal):
+ ordinal = ord(ordinal)
+
+ return bytes((ordinal,))
+
+class flagproperty(object):
+ def __init__(self, flags, attr, boolean=False):
+ self.flags = flags
+ self.attr = attr
+ self.boolean = boolean
+
+ def __get__(self, obj, cls):
+ flags = getattr(obj, self.flags)
+ val = getattr(flags.bit, self.attr)
+
+ if self.boolean:
+ val = bool(val)
+
+ return val
+
+ def __set__(self, obj, val):
+ flags = getattr(obj, self.flags)
+ setattr(flags.bit, self.attr, int(val))
+
+def lang_to_iso639(lang):
+ res = [0, 0, 0]
+
+ for i in reversed(range(3)):
+ res[i] = chr(0x60 + (lang & 0x1f))
+ lang = lang >> 5
+
+ return "".join(res)
+
+
+def iso639_to_lang(iso639):
+ res = 0
+
+ for i in range(3):
+ c = ord(iso639[i]) - 0x60
+ res = res << 5
+ res = res | c
+
+ return res
+
+__all__ = ["byte", "isstring", "flagproperty", "lang_to_iso639", "iso639_to_lang"]
+