aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/livestreamer/packages/flashmedia/util.py
diff options
context:
space:
mode:
authorGravatar Christopher Rosell <chrippa@tanuki.se>2012-10-04 14:11:17 +0200
committerGravatar Christopher Rosell <chrippa@tanuki.se>2012-10-04 14:14:20 +0200
commit1af7ca5f01989565fefe3bbfb4e5a387f0558602 (patch)
tree2d6a6085a4b10342df99969f9d26c1bcdd05c191 /src/livestreamer/packages/flashmedia/util.py
parent9bf96226fd76e1e318cc111a308b4289d91858e5 (diff)
Add support for AkamaiHD's HTTP streaming protocol.
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"]
+