From c065fd35ae045ce537b7bfe9f1efa14e8bddc21b Mon Sep 17 00:00:00 2001
From: Ole Ernst <olebowle@gmx.com>
Date: Sun, 13 Jul 2014 12:16:25 +0200
Subject: [PATCH 1/3] [gameone] add playlist capability

---
 youtube_dl/extractor/__init__.py |  5 ++++-
 youtube_dl/extractor/gameone.py  | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index a03f9d3ad..17b695a56 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -106,7 +106,10 @@ from .freesound import FreesoundIE
 from .freespeech import FreespeechIE
 from .funnyordie import FunnyOrDieIE
 from .gamekings import GamekingsIE
-from .gameone import GameOneIE
+from .gameone import (
+    GameOneIE,
+    GameOnePlaylistIE,
+)
 from .gamespot import GameSpotIE
 from .gametrailers import GametrailersIE
 from .gdcvault import GDCVaultIE
diff --git a/youtube_dl/extractor/gameone.py b/youtube_dl/extractor/gameone.py
index b580f52fb..0a0fb19e6 100644
--- a/youtube_dl/extractor/gameone.py
+++ b/youtube_dl/extractor/gameone.py
@@ -1,6 +1,7 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
+import datetime
 import re
 
 from .common import InfoExtractor
@@ -88,3 +89,18 @@ class GameOneIE(InfoExtractor):
             'age_limit': age_limit,
             'timestamp': timestamp,
         }
+
+class GameOnePlaylistIE(InfoExtractor):
+    _VALID_URL = r'https?://(?:www\.)?gameone\.de(?:/tv)?/?$'
+
+    def _real_extract(self, url):
+        this_year = datetime.date.today().year
+        webpage = self._download_webpage('http://www.gameone.de/tv/year/%d' % this_year, this_year)
+        max_id = max(map(int, re.findall(r'<a href="/tv/(\d+)"', webpage)))
+        entries = [self.url_result('http://www.gameone.de/tv/%d' % video_id, 'GameOne') for video_id in range(max_id, 0, -1)]
+
+        return {
+            '_type': 'playlist',
+            'title': 'GameOne',
+            'entries': entries,
+        }

From 71b6065009d2bbc0e25b46368e73ebd807d3fca0 Mon Sep 17 00:00:00 2001
From: Ole Ernst <olebowle@gmx.com>
Date: Wed, 23 Jul 2014 09:32:01 +0200
Subject: [PATCH 2/3] [gameone] add playlist test

---
 test/test_playlists.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/test/test_playlists.py b/test/test_playlists.py
index 1a38a667b..3bc353604 100644
--- a/test/test_playlists.py
+++ b/test/test_playlists.py
@@ -50,6 +50,7 @@ from youtube_dl.extractor import (
     InstagramUserIE,
     CSpanIE,
     AolIE,
+    GameOnePlaylistIE,
 )
 
 
@@ -395,5 +396,13 @@ class TestPlaylists(unittest.TestCase):
         self.assertEqual(result['id'], 'rbhagwati2')
         self.assertTrue(len(result['entries']) >= 179)
 
+    def test_GameOne_playlist(self):
+        dl = FakeYDL()
+        ie = GameOnePlaylistIE(dl)
+        result = ie.extract('http://www.gameone.de/tv')
+        self.assertIsPlaylist(result)
+        self.assertEqual(result['title'], 'GameOne')
+        assertGreaterEqual(self, len(result['entries']), 294)
+
 if __name__ == '__main__':
     unittest.main()

From 8c778adc39fbaa79a6e885532b933364c9952817 Mon Sep 17 00:00:00 2001
From: Ole Ernst <olebowle@gmx.com>
Date: Wed, 23 Jul 2014 10:00:50 +0200
Subject: [PATCH 3/3] [gameone] simplify playlist extractor

---
 youtube_dl/extractor/gameone.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/youtube_dl/extractor/gameone.py b/youtube_dl/extractor/gameone.py
index 0a0fb19e6..12f757329 100644
--- a/youtube_dl/extractor/gameone.py
+++ b/youtube_dl/extractor/gameone.py
@@ -1,7 +1,6 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
-import datetime
 import re
 
 from .common import InfoExtractor
@@ -94,8 +93,7 @@ class GameOnePlaylistIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.)?gameone\.de(?:/tv)?/?$'
 
     def _real_extract(self, url):
-        this_year = datetime.date.today().year
-        webpage = self._download_webpage('http://www.gameone.de/tv/year/%d' % this_year, this_year)
+        webpage = self._download_webpage('http://www.gameone.de/tv', 'TV')
         max_id = max(map(int, re.findall(r'<a href="/tv/(\d+)"', webpage)))
         entries = [self.url_result('http://www.gameone.de/tv/%d' % video_id, 'GameOne') for video_id in range(max_id, 0, -1)]