From 52e305cbda6ee3a7250af2da3075675466e80694 Mon Sep 17 00:00:00 2001
From: Alexandre Morignot <erdnaxeli@cervoi.se>
Date: Thu, 29 Jan 2015 16:43:41 +0100
Subject: [PATCH] add support for Dailymotion

---
 lib/sites/dailymotion.pm | 34 ++++++++++++++++++++++++++++++++++
 lib/sites/parser.pm      |  8 ++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 lib/sites/dailymotion.pm

diff --git a/lib/sites/dailymotion.pm b/lib/sites/dailymotion.pm
new file mode 100644
index 0000000..095f282
--- /dev/null
+++ b/lib/sites/dailymotion.pm
@@ -0,0 +1,34 @@
+package dailymotion;
+
+use Inline Python => 'DATA';
+
+sub get {
+	my $id = shift;
+    my $content = weboob_get($id);
+
+    # weboob returns duration in h:mm:s format
+    my ($h, $m, $s) = ($content->{'duration'} =~ /(.):(..):(..)/);
+    $content->{'duration'} = $h * 3600 + $m * 60 + $s;
+
+    return %{$content};
+}
+
+1;
+
+
+__DATA__
+__Python__
+
+from weboob.core import Weboob
+from weboob.capabilities.video import CapVideo
+
+def weboob_get(id):
+    w = Weboob()
+    backends = w.load_backends(CapVideo)
+
+    video = backends['dailymotion'].get_video(id)
+
+    return {'title': video.title,
+            'author': video.author,
+            'url': video.url,
+            'duration': video.duration}
diff --git a/lib/sites/parser.pm b/lib/sites/parser.pm
index 59e6fb4..aea9733 100644
--- a/lib/sites/parser.pm
+++ b/lib/sites/parser.pm
@@ -5,6 +5,7 @@ use youtube;
 use soundcloud;
 use mixcloud;
 use zippy;
+use dailymotion;
 
 use lib "$FindBin::Bin/lib/";
 use utils::print;
@@ -42,6 +43,13 @@ sub parse {
 		eval { %content = zippy::get($url) };
 		$content{'site'} = 'zippyshare';
 	}
+    elsif ($msg =~ m#(?:^|[^!])https?://www.dailymotion.com/video/([a-z0-9]+)#) {
+        eval { %content = dailymotion::get($1) };
+        print $1."\n";
+
+        $content{'site'} = 'dailymotion';
+        $content{'url'} = 'https://www.dailymotion.com/video/' . $1;
+    }
 
     # something goes wrong ?
     if ($@) {
-- 
GitLab