SkillShare Obsidian Template

Script to copy SkillShare course info as YAML & lessons titles with duration

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         SkillShare Obsidian Template
// @namespace    http://tampermonkey.net/
// @version      2024-09-28
// @description  Script to copy SkillShare course info as YAML & lessons titles with duration
// @author       foysalBn
// @match        https://www.skillshare.com/*/classes/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=skillshare.com
// @grant        GM_setClipboard
// @grant        GM_registerMenuCommand
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    // Function to copy text to the clipboard
    function copyTitle(){
        const title = document.querySelector('.class-details-header h1').innerText
        GM_setClipboard(title);
    }
    function copyMarkDownlink(){
        const title = document.querySelector('.class-details-header h1').innerText
        const src = document.location.href
        GM_setClipboard(`[${title}](${src})`);
    }

    function copyObsidianTemplate() {
        const src = document.location.href
        const title = document.querySelector('.class-details-header h1').innerText
        const teacher = document.querySelector('.class-details-header-teacher a').innerText;
        const duration = document.querySelector('#total-video-container').innerText;
        let sections = document.querySelectorAll('.session-item-info')
        console.log(sections)
        let lessons=''
        sections.forEach((sec,i)=>{
            lessons +='## '+(i+1)+'. ' + sec.querySelector('.session-item-title h3').innerText
                + " ("+sec.querySelector('.duration h3').innerText+")\n\n\n"
        })

        const textToCopy = `---
src: "${src}"
title: "${title}"
teacher: "${teacher}"
duration: "${duration}"
current lesson: "1"
completed: false
---

${lessons}
`
        GM_setClipboard(textToCopy);
    }

    // Register menu command
    GM_registerMenuCommand('Copy Course Title', copyTitle);
    GM_registerMenuCommand('Copy MarkDown Link [Title](link)', copyMarkDownlink);
    GM_registerMenuCommand('Copy Obsidian Note Template', copyObsidianTemplate);


})();