diff --git a/lib/sites/dailymotion.pm b/lib/sites/dailymotion.pm new file mode 100644 index 0000000000000000000000000000000000000000..095f282ee5f1de36c2e574ae31465b09eb02bb90 --- /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 59e6fb44a644475efde6c8a76f9fb97d87417958..aea9733e77cd4e368b332848dadf70da9c88dc34 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 ($@) {