Xfce Wiki

Sub domains
 

Webmedia now-playing - Tutorial

This document is licensed under the LGPL 2.1.

What is Webmedia now-playing

Webmedia now-playing is a midori extension developed for using Dbus, this extension allow users to get the video title that midori play in youtube/ Vimeo/ Dailymention/Coup.
In this Tuto We are going to show you how to use it :-).

Using Shell script

Big thanks to meebey the owner of this script.

eval $(dbus-send --session --print-reply --dest=org.midori.mediaHerald /org/midori/mediaHerald org.freedesktop.DBus.Properties.GetAll string:"org.midori.mediaHerald" | awk '
    /string  *"VideoTitle/{
        while (1) {
            getline line
            if (line ~ /string "/)
                sub(/.*string /, "TITLE=", line)
                print line
                break
            }
        }
        /string  *"VideoUri/{
        while (1) {
            getline line
            if (line ~ /string "/)
                sub(/.*string /, "URI=", line)
                print line
                break
            }
        }
    ')
echo "You are now playing: $VideoTitle - $VideoUri"

As you see mediaHerald is a Dbus service that our extension created to store video's title and uri.
Let's do an example you should first open https://www.youtube.com/watch?v=O2cebaY5Wlc and run our shell script, the result is:

You are now playing:  - ‪Midori 0.5.8 : A Fast and Lightweight Web Browser For Linux Mint - YouTube

Enjoy baby :-D

Some examples

VALA

[DBus (name = "org.midori.mediaHerald")]
interface Demo : Object {
    public abstract string video_title {owned get; owned set;}
    public abstract string video_uri {owned get; owned set;}
}

void main () {
  try {
    Demo demo = Bus.get_proxy_sync (BusType.SESSION, "org.midori.mediaHerald",
                                    "/org/midori/mediaHerald");

    string title = demo.video_title;
    string uri = demo.video_uri;
    stdout.printf ("you are playing %s, follow me on %s\n", title, uri);

  } catch (IOError e) {
    stderr.printf ("%s\n", e.message);
  }
}

Result:

you are playing ‪Midori 0.5.8 : A Fast and Lightweight Web Browser For Linux Mint - YouTube, follow me on https://www.youtube.com/watch?v=O2cebaY5Wlc

Python let's make it more short 8-)

import dbus
bus = dbus.SessionBus()
service = bus.get_object('org.midori.mediaHerald','/org/midori/mediaHerald')
props_iface = dbus.Interface(service, 'org.freedesktop.DBus.Properties')
properties = props_iface.GetAll('org.midori.mediaHerald')
print "You are playing %s, follow me %s" %(properties.get("VideoTitle")[1:], properties.get("VideoUri")[0:])

Result:

You are playing Midori 0.5.8 : A Fast and Lightweight Web Browser For Linux Mint - YouTube, follow me https://www.youtube.com/watch?v=O2cebaY5Wlc

C with Glib and Gio Headache Please LOL

#include <glib.h>
#include <gio/gio.h>

gchar* get_video_title(GDBusProxy *proxy) {
	GVariant *_inner_reply;
	_inner_reply = g_dbus_proxy_get_cached_property (proxy, "VideoTitle");
	gchar* _result;
	if (!_inner_reply) {
		GVariant *_arguments;
		GVariant *_reply;
		GVariantBuilder _arguments_builder;
		g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_arguments_builder, g_variant_new_string ("org.midori.mediaHerald"));
		g_variant_builder_add_value (&_arguments_builder, g_variant_new_string ("VideoTitle"));
		_arguments = g_variant_builder_end (&_arguments_builder);
		_reply = g_dbus_proxy_call_sync (proxy, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
		if (!_reply) {
			return NULL;
		}
		g_variant_get (_reply, "(v)", &_inner_reply);
		g_variant_unref (_reply);
	}
	_result = g_variant_dup_string (_inner_reply, NULL);
	g_variant_unref (_inner_reply);
	return _result;
	
}

gchar* get_video_uri(GDBusProxy *proxy) {
	GVariant *_inner_reply;
	_inner_reply = g_dbus_proxy_get_cached_property (proxy, "VideoUri");
	gchar* _result;
	if (!_inner_reply) {
		GVariant *_arguments;
		GVariant *_reply;
		GVariantBuilder _arguments_builder;
		g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_arguments_builder, g_variant_new_string ("org.midori.mediaHerald"));
		g_variant_builder_add_value (&_arguments_builder, g_variant_new_string ("VideoUri"));
		_arguments = g_variant_builder_end (&_arguments_builder);
		_reply = g_dbus_proxy_call_sync (proxy, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
		if (!_reply) {
			return NULL;
		}
		g_variant_get (_reply, "(v)", &_inner_reply);
		g_variant_unref (_reply);
	}
	_result = g_variant_dup_string (_inner_reply, NULL);
	g_variant_unref (_inner_reply);
	return _result;
}


int main(void) {
	GError *error = NULL;
	GDBusConnection *bus;
	GDBusProxy *proxy;
	bus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
	if (!bus) {
		g_warning("Failed to connect to session bus: %s", error->message);
		g_error_free(error);
		return 1;
	}
	proxy  = g_dbus_proxy_new_sync (bus,
                       G_DBUS_PROXY_FLAGS_NONE,
                       NULL,
                       "org.midori.mediaHerald",
                       "/org/midori/mediaHerald",
                       "org.freedesktop.DBus.Properties",
                       NULL,
                       &error);
    gchar* title = get_video_title(proxy);
    gchar* uri = get_video_uri(proxy);
	g_printf("you are now watching  %s - %s\n", title, uri);
	return 0;
}

MakeFile

pkg_packages := glib-2.0 gio-2.0
CC=gcc
PKG_CFLAGS  := $(shell pkg-config --cflags $(pkg_packages))
PKG_LDFLAGS := $(shell pkg-config --libs $(pkg_packages))

CFLAGS  := $(PKG_CFLAGS) $(ADD_CFLAGS) $(CFLAGS)
LDFLAGS := $(PKG_LDFLAGS) $(LDFLAGS)

targets = midori-example

.PHONY: all clean
all: $(targets)

dbus-example: midori-example.c
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

clean:
	$(RM) $(targets)

Result:

you are now watching  ‪Installing Linux on Tegra TK1 - http://coub.com/view/44obz

BIG THanks

kalikiana : The developer of MIDORI, code helper.
pfor: Code helper.
A.R(owner of the quote): Earth and all that is in it, with knowledge we protect it. And the best of mankind knowledge makes him and he makes it.