[arch-commits] Commit in livestreamer/repos/community-any (3 files)

Evangelos Foutras foutrelis at archlinux.org
Sat Mar 7 06:52:14 UTC 2015


    Date: Saturday, March 7, 2015 @ 07:52:13
  Author: foutrelis
Revision: 128854

archrelease: copy trunk to community-any

Added:
  livestreamer/repos/community-any/PKGBUILD
    (from rev 128853, livestreamer/trunk/PKGBUILD)
Deleted:
  livestreamer/repos/community-any/PKGBUILD
  livestreamer/repos/community-any/plugins-hitbox-Refactor-to-use-the-StreamMapper.patch

-------------------------------------------------------+
 PKGBUILD                                              |   71 ++---
 plugins-hitbox-Refactor-to-use-the-StreamMapper.patch |  197 ----------------
 2 files changed, 31 insertions(+), 237 deletions(-)

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2015-03-07 06:52:06 UTC (rev 128853)
+++ PKGBUILD	2015-03-07 06:52:13 UTC (rev 128854)
@@ -1,40 +0,0 @@
-# $Id$
-# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
-# Contributor: Christopher Rosell <chrippa at tanuki.se>
-pkgname=livestreamer
-pkgver=1.11.1
-pkgrel=2
-pkgdesc='CLI program that launches streams from various streaming services in a custom video player'
-arch=('any')
-url='https://github.com/chrippa/livestreamer'
-license=('BSD')
-depends=('python-requests' 'rtmpdump' 'python-setuptools')
-makedepends=('python-sphinx')
-source=(https://pypi.python.org/packages/source/l/$pkgname/$pkgname-$pkgver.tar.gz
-        plugins-hitbox-Refactor-to-use-the-StreamMapper.patch)
-sha256sums=('84dd83d301518ffcf96f30cbffc0e0598e0756e7ab8e7498d11285d42fe17f9c'
-            '1a305add9db98912f0cdb16862d1296588b2ed299587de26d93c5be53f9fd572')
-
-prepare() {
-  cd "$srcdir/$pkgname-$pkgver"
-
-  # https://github.com/chrippa/livestreamer/issues/648
-  patch -Np1 -i ../plugins-hitbox-Refactor-to-use-the-StreamMapper.patch
-}
-
-build() {
-  cd "$srcdir/$pkgname-$pkgver"
-  python setup.py build_sphinx -b man
-}
-
-package() {
-  cd "$srcdir/$pkgname-$pkgver"
-  python setup.py install --root="$pkgdir/" --optimize=1
-
-  install -Dm644 build/sphinx/man/livestreamer.1 \
-    "$pkgdir/usr/share/man/man1/livestreamer.1"
-
-  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
-}
-
-# vim:set ts=2 sw=2 et:

Copied: livestreamer/repos/community-any/PKGBUILD (from rev 128853, livestreamer/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2015-03-07 06:52:13 UTC (rev 128854)
@@ -0,0 +1,31 @@
+# $Id$
+# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
+# Contributor: Christopher Rosell <chrippa at tanuki.se>
+pkgname=livestreamer
+pkgver=1.12.0
+pkgrel=1
+pkgdesc='CLI program that launches streams from various streaming services in a custom video player'
+arch=('any')
+url='https://github.com/chrippa/livestreamer'
+license=('BSD')
+depends=('python-requests' 'rtmpdump' 'python-setuptools')
+makedepends=('python-sphinx')
+source=(https://pypi.python.org/packages/source/l/$pkgname/$pkgname-$pkgver.tar.gz)
+sha256sums=('b541f550806d49bbc052da5e35aff78cbcca13d00135bee99637162b80158a7b')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+  python setup.py build_sphinx -b man
+}
+
+package() {
+  cd "$srcdir/$pkgname-$pkgver"
+  python setup.py install --root="$pkgdir" --optimize=1
+
+  install -Dm644 build/sphinx/man/livestreamer.1 \
+    "$pkgdir/usr/share/man/man1/livestreamer.1"
+
+  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:

Deleted: plugins-hitbox-Refactor-to-use-the-StreamMapper.patch
===================================================================
--- plugins-hitbox-Refactor-to-use-the-StreamMapper.patch	2015-03-07 06:52:06 UTC (rev 128853)
+++ plugins-hitbox-Refactor-to-use-the-StreamMapper.patch	2015-03-07 06:52:13 UTC (rev 128854)
@@ -1,197 +0,0 @@
-From 3cd7f604b9f3327f7626b719a3035c47a68ea9a2 Mon Sep 17 00:00:00 2001
-From: Christopher Rosell <chrippa at tanuki.se>
-Date: Tue, 16 Dec 2014 23:03:17 +0100
-Subject: [PATCH] plugins.hitbox: Refactor to use the StreamMapper.
-
-Also add support for HLS streams.
-
-Resolves #648.
----
- src/livestreamer/plugins/hitbox.py | 139 ++++++++++++++++++++++++-------------
- 1 file changed, 92 insertions(+), 47 deletions(-)
-
-diff --git a/src/livestreamer/plugins/hitbox.py b/src/livestreamer/plugins/hitbox.py
-index 306a318..556a3d9 100644
---- a/src/livestreamer/plugins/hitbox.py
-+++ b/src/livestreamer/plugins/hitbox.py
-@@ -1,10 +1,13 @@
- import re
- 
-+from itertools import chain
-+
- from livestreamer.compat import urlparse
- from livestreamer.plugin import Plugin
--from livestreamer.plugin.api import http, validate
-+from livestreamer.plugin.api import StreamMapper, http, validate
- from livestreamer.stream import HLSStream, HTTPStream, RTMPStream
- 
-+HLS_PLAYLIST_BASE = "http://www.hitbox.tv{0}"
- LIVE_API = "http://www.hitbox.tv/api/media/live/{0}?showHidden=true"
- PLAYER_API = "http://www.hitbox.tv/api/player/config/{0}/{1}?embed=false&showHidden=true"
- SWF_BASE = "http://edge.vie.hitbox.tv/static/player/flowplayer/"
-@@ -43,7 +46,7 @@
-                 validate.filter(lambda b: b.get("url") and b.get("label")),
-                 [{
-                     "label": validate.text,
--                    "url": validate.text
-+                    "url": validate.text,
-                 }],
-             )
-         },
-@@ -52,15 +55,20 @@
-             validate.optional("netConnectionUrl"): validate.text,
-             validate.optional("bitrates"): [{
-                 "label": validate.text,
--                "url": validate.text
-+                "url": validate.text,
-+                "provider": validate.text
-             }]
-         }],
--        "plugins": {
--            validate.optional("clustering"): {
--                "netConnectionUrl": validate.text,
--                "url": validate.text
-+        "plugins": validate.all(
-+            dict,
-+            validate.filter(lambda k, v: k in ["rtmp", "rtmpHitbox", "hls"]),
-+            {
-+                validate.text: {
-+                    validate.optional("netConnectionUrl"): validate.text,
-+                    "url": validate.text
-+                }
-             }
--        }
-+        )
-     }
- )
- 
-@@ -77,6 +85,79 @@ def _get_quality(self, label):
- 
-         return "live"
- 
-+    def _create_hls_streams(self, bitrate):
-+        url = bitrate["url"]
-+        quality = self._get_quality(bitrate["label"])
-+
-+        if not url.startswith("http"):
-+            url = HLS_PLAYLIST_BASE.format(url)
-+
-+        if bitrate["label"] == "Auto":
-+            try:
-+                streams = HLSStream.parse_variant_playlist(self.session, url)
-+                return streams.items()
-+            except IOError as err:
-+                self.logger.warning("Failed to extract HLS streams: {0}", err)
-+        else:
-+            return quality, HLSStream(self.session, url)
-+
-+    def _create_rtmp_stream(self, rtmp, swf_url, bitrate):
-+        quality = self._get_quality(bitrate["label"])
-+        url = bitrate["url"]
-+        stream = RTMPStream(self.session, {
-+            "rtmp": rtmp,
-+            "pageUrl": self.url,
-+            "playpath": url,
-+            "swfVfy": swf_url,
-+            "live": True
-+        })
-+
-+        return quality, stream
-+
-+    def _get_live_streams(self, player):
-+        mappers = []
-+        swf_url = SWF_URL
-+        for playlist in player.get("playlist", []):
-+            bitrates = playlist.get("bitrates")
-+            provider = playlist.get("connectionProvider")
-+            rtmp = None
-+
-+            if bitrates:
-+                rtmp = playlist.get("netConnectionUrl")
-+            elif provider and provider in player["plugins"]:
-+                provider = player["plugins"][provider]
-+                swf_name = provider["url"]
-+                swf_url = SWF_BASE + swf_name
-+                rtmp = provider["netConnectionUrl"]
-+                bitrates = player["clip"]["bitrates"]
-+            else:
-+                continue
-+
-+            mapper = StreamMapper(
-+                cmp=lambda provider, bitrate: bitrate["provider"].startswith(provider)
-+            )
-+            mapper.map("hls", self._create_hls_streams)
-+            mapper.map("rtmp", self._create_rtmp_stream, rtmp, swf_url)
-+            mappers.append(mapper(bitrates))
-+
-+        return chain.from_iterable(mappers)
-+
-+    def _create_video_stream(self, cls, base_url, bitrate):
-+        url = base_url + "/" + bitrate["url"]
-+        quality = self._get_quality(bitrate["label"])
-+        return quality, cls(self.session, url)
-+
-+    def _get_video_streams(self, player):
-+        base_url = player["clip"]["baseUrl"] or VOD_BASE_URL
-+        mapper = StreamMapper(
-+            cmp=lambda ext, bitrate: urlparse(bitrate["url"]).path.endswith(ext)
-+        )
-+        mapper.map(".m3u8", self._create_video_stream, HLSStream, base_url)
-+        mapper.map(".mp4", self._create_video_stream, HTTPStream, base_url)
-+        mapper.map(".flv", self._create_video_stream, HTTPStream, base_url)
-+
-+        return mapper(player["clip"]["bitrates"])
-+
-     def _get_streams(self):
-         match = _url_re.match(self.url)
-         if not match:
-@@ -96,46 +177,10 @@ def _get_streams(self):
- 
-         res = http.get(PLAYER_API.format(media_type, media_id))
-         player = http.json(res, schema=_player_schema)
-+
-         if media_type == "live":
--            swf_url = SWF_URL
--            for playlist in player.get("playlist", []):
--                bitrates = playlist.get("bitrates")
--                provider = playlist.get("connectionProvider")
--                rtmp = None
--
--                if bitrates:
--                    rtmp = playlist.get("netConnectionUrl")
--                elif provider and provider in player["plugins"]:
--                    provider = player["plugins"][provider]
--                    swf_name = provider["url"]
--                    swf_url = SWF_BASE + swf_name
--                    rtmp = provider["netConnectionUrl"]
--                    bitrates = player["clip"]["bitrates"]
--                else:
--                    continue
--
--                for bitrate in bitrates:
--                    quality = self._get_quality(bitrate["label"])
--                    url = bitrate["url"]
--                    stream = RTMPStream(self.session, {
--                        "rtmp": rtmp,
--                        "pageUrl": self.url,
--                        "playpath": url,
--                        "swfVfy": swf_url,
--                        "live": True
--                    })
--                    yield quality, stream
-+            return self._get_live_streams(player)
-         else:
--            base_url = player["clip"]["baseUrl"] or VOD_BASE_URL
--            for bitrate in player["clip"]["bitrates"]:
--                url = base_url + "/" + bitrate["url"]
--                quality = self._get_quality(bitrate["label"])
--
--                if urlparse(url).path.endswith("m3u8"):
--                    stream = HLSStream(self.session, url)
--                else:
--                    stream = HTTPStream(self.session, url)
--
--                yield quality, stream
-+            return self._get_video_streams(player)
- 
- __plugin__ = Hitbox



More information about the arch-commits mailing list