MS Stream Default Sort

Sets the default sort for Microsoft Stream when viewing a group's videos

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        MS Stream Default Sort
// @license     MIT
// @version     1
// @author      https://github.com/TwentyPorts
// @namespace   https://greasyfork.org/users/737264
// @include     https://web.microsoftstream.com/group/*?view=videos
// @description Sets the default sort for Microsoft Stream when viewing a group's videos
// ==/UserScript==

let callback = function (mutationList, observer) {
  const dropDown = document.querySelector(
    "[id^=drop-down-][id$=-display-name]"
  );
  const list = document.querySelector("div.drop-down-list-container");
  if (dropDown !== null) {
    //console.log("found dropdown");
    dropDown.click();
    setSelectedValue(list, "Publish date"); // Replace "Publish date" with any of the available sorting options:
                                            // Name, Relevance, Trending, Publish date, Views, Likes
    observer.disconnect();
  }

  function setSelectedValue(list, valueToSet) {
    for (var i = 0; i < list.children.length; i++) {
      const value = list.children[i].children[0];
      if (value.innerHTML === valueToSet) {
        value.click();
      }
    }
  }
};

// Setup a MutationObserver to watch the document for the nodes we need.
let targetNode = document.querySelector("body");
let observerConfig = {
  childList: true,
  subtree: true,
};
let observer = new MutationObserver(callback);
observer.observe(targetNode, observerConfig);