小编wva*_*aal的帖子

用于从播放列表下载youtube文件的Shell脚本

我正在尝试编写一个bash脚本,它将从播放列表中下载所有YouTube视频,并根据youtube视频本身的标题将它们保存为特定的文件名.到目前为止,我有两个独立的代码片段,可以完成我想要的但我不知道如何将它们组合在一起作为一个单元.

这段代码可以找到给定页面上所有YouTube视频的标题:

curl -s "$1" | grep '<span class="title video-title "' | cut -d\> -f2 | cut -d\< -f1
Run Code Online (Sandbox Code Playgroud)

这段代码将文件下载到youtube视频ID给出的文件名(例如,youtube.com/watch?v = CsBVaJelurE&feature = relmfu 提供的文件名为CsBVaJelurE.flv)

curl -s "$1" | grep "watch?" | cut -d\" -f4| while read video; 
do youtube-dl "http://www.youtube.com$video";
done
Run Code Online (Sandbox Code Playgroud)

我想要一个脚本,将youtube .flv文件输出到由视频标题(在本例中为BASH课程2.flv)给出的文件名,而不仅仅是视频ID名称.在此先感谢所有的帮助.

bash shell cut download youtube-dl

19
推荐指数
1
解决办法
3万
查看次数

为什么Array.apply(null,[args])在处理稀疏数组时行为不一致?

我最近在SO上发现了以下代码片段,以帮助快速填充具有默认值的数组:

Array.apply(null, new Array(3)).map(function() {return 0;});
Run Code Online (Sandbox Code Playgroud)

鉴于Array构造函数和apply方法的行为,上面的代码片段也可以这样重写:

Array.apply(null, [undefined, undefined, undefined]).map(function() {return 0;});
Run Code Online (Sandbox Code Playgroud)

在处理您希望使用默认值填充的稀疏数组时,此技术也很有用:

var sparseArr = [3,,,4,1,,],
    denseArr = Array.apply(null, sparseArr).map(function(e) {
      return e === undefined ? 0 : e;
    });

// denseArr = [3,0,0,4,1,0]
Run Code Online (Sandbox Code Playgroud)

然而,其中出现了两个奇怪之处:

  1. 如果sparseArr未定义最后一个术语,则不映射该术语denseArr
  2. 如果sparseArr仅包含单个术语(例如sparseArr = [1])或单个术语后跟单个尾随未定义术语(例如sparseArr = [1,]),则得到的denseArr等于[undefined x 1]

谁能解释这种行为?

javascript arrays

17
推荐指数
1
解决办法
6838
查看次数

动态绑定事件处理程序的最有效方法

问题:我需要的任何数量的事件处理程序(,DOM节点绑定到任意数量的元素window,document),在动态运行时,我需要能够更新事件我的网页的生命周期中动态创建(或损坏)节点结合.我可以看到有三个选项来解决这个问题:

I)事件委托window
II)每个节点上的直接事件绑定
III)共同祖先的事件委托(直到运行时才会知道,并且可能需要在更改DOM时重新计算)

这样做最有效的方法是什么?

一点背景

我正在开发一组需要对用户事件进行分析跟踪(点击,滚动等)的页面,我希望能够在一堆页面上轻松配置这些事件处理程序,而无需编写脚本来处理事件每个实例的绑定.此外,因为我可能需要在将来跟踪新事件,或者跟踪动态添加到页面/从页面中删除的元素上的事件,我需要能够考虑在生命周期中发生的DOM中的更改的页面.

作为我正在考虑的例子,我想创建一个接受配置对象的函数,该对象允许程序员为每个事件指定默认处理程序,并允许它们为特定元素覆盖它们:

Analytics.init({
    // default handlers for each event type
    defaultHandlers: {
        "click": function(e) { ... },
        "focus": function(e) { ... }
    },

    // elements to listen to 
    targetElements: {

        // it should work with non-DOM nodes like 'window' and 'document'
        window: {
            // events for which the default handlers should be called
            useDefaultHandlers: ['click'],

            // custom handler
            "scroll": function(e) { ... }
        },

        // it should work …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-analytics javascript-events event-delegation

8
推荐指数
1
解决办法
1077
查看次数

给定一组 GraphQL 变量类型,是否可以使用客户端模式为集合中的每个类型创建所有有效值的映射

标题主要说明了一切:我正在构建一个反应/中继应用程序,它将允许用户在运行时动态创建图表,显示指定时间范围内的各种收入流。此图表的一个特征是所述用户的指定每个收入流(例如采样间隔的能力YEARQUARTERMONTHWEEK,等)每个流的参数。

这些值在架构中定义为一个GraphQLInputObjectType实例,如下所示:

enum timeSeriesIntervalEnum {
  YEAR
  QUARTER
  MONTH
  WEEK
}
Run Code Online (Sandbox Code Playgroud)

在客户端,我react-relay定义了以下形式的片段:

fragment on BalanceSheet {
  income {
    # some income stream
    afterTax {  
      values(interval: $samplingInterval)
      dates(interval: $samplingInterval)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

此变量值将作为单独组件中下拉菜单的一部分填充,其中下拉菜单中的每个值都应对应一个有效值timeSeriesIntervalEnum

虽然肯定可以简单地对这些值进行硬编码,但底层 API 仍然经常更改,我想减少耦合,而是通过为给定下拉列表(例如timeSeriesIntervalEnum)指定变量类型来动态填充这些字段,然后使用用于解析值并填充配置 json 文件(运行前)或在运行时动态分配值的 graphql 客户端架构。

注意:我已经在开始前进行了一些查询字符串和片段转换,因此如果需要,我不反对在此过程中创建 json 配置文件。

javascript relay graphql

6
推荐指数
1
解决办法
753
查看次数

哪个jQuery事件不泡?

非常简单,我一直在寻找所有jQuery事件的完整列表,这些事件没有泡沫,但我一直无法找到.

比如我要找样事件image.load,XMLHttpRequest.error等等.

javascript jquery javascript-events

2
推荐指数
1
解决办法
367
查看次数