$ ffmpeg -i <URL.m3u8>
$ ffmpeg -i URL.m3u8 -map <SOURCE_IDX>:p:<PROGRAM_NUMBER> -c copy output.ext
<!DOCTYPE html> | |
<html manifest=sketch.manifest> | |
<head> | |
<meta charset=utf-8> | |
<title>Sketch</title> | |
<meta name=apple-mobile-web-app-capable content=yes> | |
<meta name=apple-mobile-web-app-status-bar-style content=black> | |
<meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, minimal-ui"> | |
<link href="http://staticresource.com/formal.css" rel=stylesheet type=text/css> | |
<script>eval(unescape(escape('♶♡♲☠♩☽♤♯♣♵♭♥♮♴☮♣♲♥♡♴♥♅♬♥♭♥♮♴☨☧♣♡♮♶♡♳☧☩☬♣☽♩☮♧♥♴♃♯♮♴♥♸♴☨☧☲♤☧☩☬♦☽♤♯♣♵♭♥♮♴☮♣♲♥♡♴♥♅♬♥♭♥♮♴☨☧♬♩♮♫☧☩☬♭☽♤♯♣♵♭♥♮♴☮♣♲♥♡♴♥♅♬♥♭♥♮♴☨☧♬♩♮♫☧☩☻♩☮♷♩♤♴♨☽☲☰☰☻♩☮♨♥♩♧♨♴☽☲☰☰☻♣☮♦♩♬♬♓♴♹♬♥☽☧♬♩♧♨♴♧♯♬♤♥♮♲♯♤♹♥♬♬♯♷☧☻♣☮♢♥♧♩♮♐♡♴♨☨☩☻♣☮♭♯♶♥♔♯☨☱☰☬☰☩☻♣☮♬♩♮♥♔♯☨☱☹☰☬☰☩☻♣☮♱♵♡♤♲♡♴♩♣♃♵♲♶♥♔♯☨☲☰☰☬☰☬☲☰☰☬☱☰☩☻♣☮♬♩♮♥♔♯☨☲☰☰☬☱☹☰☩☻♣☮♱♵♡♤♲♡♴♩♣♃♵♲♶♥♔♯☨☲☰☰☬☲☰☰☬☱☹☰☬☲☰☰☩☻♣☮♬♩♮♥♔♯☨☱☰☬☲☰☰☩☻♣☮♱♵♡♤♲♡♴♩♣♃♵♲♶♥♔♯☨☰☬☲☰☰☬☰☬☱☹☰☩☻♣☮♬♩♮♥♔♯☨☰☬☱☰☩☻♣☮♱♵♡♤♲♡♴♩♣♃♵♲♶♥♔♯☨☰☬☰☬☱☰☬☰☩☻♣☮♣♬♯♳♥♐♡♴♨☨☩☻♣☮♦♩♬♬☨☩☻♣☮♳♴♲♯♫♥♓♴♹♬♥☽☧♲♥♤☧☻♣☮♬♩♮♥♗♩♤♴♨☽☳☰☻♣☮♬♩♮♥♃♡♰☽☧♲♯♵♮♤☧☻♣☮♢♥♧♩♮♐♡♴♨☨☩☻♣☮♭♯♶♥♔♯☨☴☵☬☱☳☰☩☻♣☮♢♥♺♩♥♲♃♵♲♶♥♔♯☨☴☵☬☱☳☰☬☷☰☬☲☰☰☬☱☰☵☬☱☳☰☩☻♣☮♢♥♺♩♥♲♃♵♲♶♥♔♯☨☱☰☵☬☱☳☰☬☱☴☰☬☵☰☬ |
<script src="https://code.highcharts.com/highcharts.js"></script> | |
<script src="https://code.highcharts.com/modules/series-label.js"></script> | |
<script src="https://code.highcharts.com/modules/exporting.js"></script> | |
<script src="https://code.highcharts.com/modules/export-data.js"></script> | |
<script src="https://code.highcharts.com/modules/accessibility.js"></script> | |
<figure class="highcharts-figure"> | |
<div id="container"></div> | |
<p class="highcharts-description"> | |
Basic line chart showing trends in a dataset. This chart includes the |
function walkObjectRecursive(source, mapper = (v, k) => ({ [k]: v })) { | |
if (typeof source !== 'object' || source === null || source === undefined) { | |
return source | |
} | |
if (Array.isArray(source)) { | |
return source.reduce((acc, val, index) => [...acc, mapper(walkObjectRecursive(val, mapper), index)], []) | |
} | |
return Object.keys(source).reduce( |
# https://nsikakimoh.com/blog/remove-docker-completely-from-mac | |
sudo rm -rf ~/.docker | |
sudo rm -rf ~/Library/Containers/com.docker.docker | |
sudo rm -rf ~/Library/Group\ Containers/group.com.docker | |
sudo rm -rf ~/Library/Caches/com.docker.docker | |
sudo rm -rf /Library/PrivilegedHelperTools/com.docker.vmnetd | |
sudo rm -rf /Library/LaunchDaemons/com.docker.vmnetd.plist | |
sudo rm -rf /usr/local/lib/docker | |
sudo rm -rf ~/Library/Application Support/Docker Desktop |
function template(source, scope = {}) { | |
return String(source).replace(/\{\{(.+?)\}\}/gm, function(match, p1) { | |
const param = p1.trim() | |
return scope[param] || '' | |
}).replace(/ +/mg, ' ') | |
} |
// Client side, you typically see the template style changed to {{ }} like so... | |
_.templateSettings = { | |
interpolate : /\{\{(.+?)\}\}/gim, | |
evaluate: /\{\#(.+?)\#\}/gim | |
}; | |
/* | |
However, in Node.js, this causes issues when trying to render a template. | |
Likely, you haven't paid too much attention to the fact that you are setting |
'use strict'; | |
function replacer() { | |
var objects = []; | |
return function(key, value) { | |
if (typeof value === 'object' && value !== null) { | |
var found = objects.some(function(existing) { | |
return (existing === value); | |
}); |