====== 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 [[https://github.com/meebey|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 #include 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.