fixed a few bugs, removed webkit and moz selectors, revised the docs

This commit is contained in:
2023-04-17 10:44:30 +02:00
parent 51272a1856
commit 59e6b04e6e
22 changed files with 1367 additions and 736 deletions

View File

View File

@@ -1,4 +1,6 @@
[Demo](https://modulearn.vercel.app) [Demo](https://modulearn.helpers.fun)
This is a proof of concept for presenting "modules"/sections from multiple YouTube videos as a method of learning a topic. Easy navigability is a focus here: You can use arrow keys as well as vim bindings (`hjkl`) to navigate within and across modules. `shift` + arrow keys/`hl` do larger jumps within the content. Additionally, `m` to toggle mute and `;` to wind back five seconds and continue playing.
# Purpose # Purpose
Learning something new is exciting and daunting. It can also be annoying and time-consuming when you already know a significant part of what's being taught. Learning something new is exciting and daunting. It can also be annoying and time-consuming when you already know a significant part of what's being taught.
@@ -14,7 +16,7 @@ Sometimes there's transcripts provided along with recorded learning material. Wh
### Learning by Doing ### Learning by Doing
A lot of the time the best way to learn is to work on a project that uses the skill you want to learn. When you get stuck, just Google your way out of it or go to the relevant part of the documentation. A lot of the time the best way to learn is to work on a project that uses the skill you want to learn. When you get stuck, just Google your way out of it or go to the relevant part of the documentation.
## Proposed Solution ## Proposed Solution (Roadmap)
Simple navigation across and within learning "modules", enabled by Simple navigation across and within learning "modules", enabled by
1) a plugin linking the content with the navigation 1) a plugin linking the content with the navigation
@@ -27,10 +29,10 @@ For someone familiar with a unit of learning -- say, a 45-minute tech talk -- th
For large bodies of media, it might be better to try to automate this using transcripts + NLP, perhaps by including existing metadata about the media such as tables of contents, descriptions, etc. For large bodies of media, it might be better to try to automate this using transcripts + NLP, perhaps by including existing metadata about the media such as tables of contents, descriptions, etc.
# Business Model ### Business Model
... (see "Things That Could be Built..." below) ... (see "Things That Could be Built..." below)
## Preexisting Assets #### Preexisting Assets
There is a massive and growing body of media which is fodder for annotation and modularization: There is a massive and growing body of media which is fodder for annotation and modularization:
1) podcasts 1) podcasts
@@ -41,9 +43,9 @@ There is a massive and growing body of media which is fodder for annotation and
6) docuseries 6) docuseries
7) ... 7) ...
# API ### API
## Recorded Media #### Recorded Media
Provide JSON file like this: Provide JSON file like this:
``` ```
@@ -75,28 +77,28 @@ Provide JSON file like this:
} }
``` ```
### Notes ##### Notes
- "start" is in seconds - "start" is in seconds
- "prereqs" and "outcomes" should eventually support module names which are standardized and map to fuller definitions - "prereqs" and "outcomes" should eventually support module names which are standardized and map to fuller definitions
# UI ### UI
A plugin/iframe that lets you mark an outcome as "done", indicating that you already know the topic, so it skips you to the relevant parts. Start with YouTube. A plugin/iframe that lets you mark an outcome as "done", indicating that you already know the topic, so it skips you to the relevant parts. Start with YouTube.
Prereqs: TBD Prereqs: TBD
## Static Media ### Static Media
TBD TBD
# Applications ### Applications
## Podcasts #### Podcasts
Some podcasts provide helpful metadata for navigating to the parts you're interested in. Then there's always the handy fast-forward button. Wouldn't it be nicer if you could Some podcasts provide helpful metadata for navigating to the parts you're interested in. Then there's always the handy fast-forward button. Wouldn't it be nicer if you could
1) check the boxes of the topics you're interested in and have those queued up? 1) check the boxes of the topics you're interested in and have those queued up?
2) store the "want to listen" items that you don't yet have the requisite knowledge to understand? 2) store the "want to listen" items that you don't yet have the requisite knowledge to understand?
3) have a standardized, centralized list of topics you a) are interested in and b) understand? 3) have a standardized, centralized list of topics you a) are interested in and b) understand?
# Things That Could be Built On Top of It ### Things That Could be Built On Top of It
Searchable video collections to retrieve the submodules you're interested in, and maybe even create a learning roadmap for a given topic. Searchable video collections to retrieve the submodules you're interested in, and maybe even create a learning roadmap for a given topic.
# Resources # Resources

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -53,26 +53,14 @@
color: #ddd; color: #ddd;
} }
progress { progress {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; appearance: none;
border: none; border: none;
width: 240px; width: 240px;
height: 15; height: 15;
box-shadow: 4px 4px black;
}
progress::-webkit-progress-bar {
background-color: #ddd; background-color: #ddd;
box-shadow: 4px 4px black; box-shadow: 4px 4px black;
} }
progress::-webkit-progress-value { progress[value] {
background-color: yellow;
}
progress::-moz-progress-bar {
background-color: #ddd;
box-shadow: 4px 4px black;
}
progress::-moz-progress-bar-value {
background-color: yellow; background-color: yellow;
} }
div { padding: .4em; div { padding: .4em;

View File

@@ -64,7 +64,7 @@
return false; return false;
} }
export function position() { if (player.getCurrentTime) return player.getCurrentTime() } export function position() { if (player && player.getCurrentTime) return player.getCurrentTime() }
export function play() { player.playVideo() } export function play() { player.playVideo() }
export function jumpTo(seconds) { if (player.seekTo) player.seekTo(seconds) } export function jumpTo(seconds) { if (player.seekTo) player.seekTo(seconds) }
export function pause() { player.pauseVideo() } export function pause() { player.pauseVideo() }
@@ -72,7 +72,7 @@
export function buffering() { return player.getPlayerState() === 3 } export function buffering() { return player.getPlayerState() === 3 }
export function state() { return player.getPlayerState() } export function state() { return player.getPlayerState() }
export function unMute() { return player.unMute() } export function unMute() { return player.unMute() }
export function muted() { if (player.isMuted) return player.isMuted() } export function muted() { if (player && player.isMuted) return player.isMuted() }
export function mute() { return player.mute() } export function mute() { return player.mute() }
</script> </script>

View File

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 730 B

View File

Before

Width:  |  Height:  |  Size: 487 B

After

Width:  |  Height:  |  Size: 487 B