# Youtube离线下载

```yaml
   Author: Gentleman.Hu
   Create Time: 2020-09-19 20:20:08
   Modified by: Gentleman.Hu
   Modified time: 2020-09-25 19:15:30
   Email: justfeelingme@gmail.com
   Home: https://crushing.xyz
   Description:
```

## Youtube离线下载

### 1.安装MediaDownloader

[MediaDownloader](https://github.com/Kallys/MediaDownloader)

### 2.配置rclone

### 3.配置inotify

* 监测mp3文件生成

  ```
    #!/bin/bash
    TARGET='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'
    downloadpath='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'

    inotifywait -m --exclude "[^m][^p][^3]$" $TARGET -e create -e moved_to | \
        while read path action file; do
                echo "The file '$file' appeared in directory '$TARGET' via '$action'"
            if [[ "$file" =~ .*temp.*$ ]]; then
                echo "这是临时文件不上传"
            elif [[ "$file" =~ .*mp3$ ]]; then
                /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$TARGET/$file" /Youtube-dl/musics/
            fi
        done
  ```
* 监测mp4

  ```
  #!/bin/bash
  TARGET='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'
  downloadpath='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'

  inotifywait -m --exclude "[^m][^p][^4]$" $TARGET -e create -e moved_to | \
      while read path action file; do
             echo "The file '$file' appeared in directory '$TARGET' via '$action'"
          if [[ "$file" =~ .*temp.*$ ]]; then
             echo "这是临时文件不上传"
          elif [[ "$file" =~ .*mp4$ ]]; then
              /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$TARGET/$file" /Youtube-dl/videos/
          fi
      done
  ```
* 监测webm

  ```
  #!/bin/bash
  TARGET='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'
  downloadpath='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'

  inotifywait -m --exclude "[^w][^e][^b][^m]$" $TARGET -e create -e moved_to | \
      while read path action file; do
              echo "The file '$file' appeared in directory '$TARGET' via '$action'"
          if [[ "$file" =~ .*temp.*$ ]]; then
              echo "这是临时文件不上传"
  #        if [[ "$file" =~ .f*.webm$ ]]; then
  #            echo "这是初始文件不上传"
          elif [[ "$file" =~ .*webm$ ]]; then
              /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$TARGET/$file" /Youtube-dl/videos/
              rm -rf "$TARGET/$file"
          fi
      done
  ```
* 监测mkv

  ```
  #!/bin/bash
  TARGET='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'
  downloadpath='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'

  inotifywait -m --exclude "[^m][^k][^v]$" $TARGET -e create -e moved_to | \
      while read path action file; do
             echo "The file '$file' appeared in directory '$TARGET' via '$action'"
          if [[ "$file" =~ .*temp.*mkv$ ]]; then
             echo "这是临时文件不上传"
          elif [[ "$file" =~ .f*.*mp4$ ]]; then
              echo "这是初始文件不上传"
          elif [[ "$file" =~ .*mkv$ ]]; then
              /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$TARGET/$file" /Youtube-dl/videos/
              rm -rf "$TARGET/$file"
          fi
      done
  #inotifywait -m -e create -e moved_to --format "%f" $TARGET
  #    while read FILENAME; do
  #        #if [[ "$FILENAME" =~ .*mkv$ || "$FILENAME" =~ .*webm$ ]]; then
  #                #echo "mkv file"
  #            #filepath=$FILENAME
  #                #/usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$filepath" /Youtube-dl/videos/
  #                #rm -rf "$filepath"
  #                #exit 0
  #        #fi
  #   done

  # if [ $2 -eq 0 ]; then
  #     exit 0
  # fi
  # while true; do
  #     filepath=$path
  #     path=${path%/*}
  #     if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ]; then
  #         /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:file "$filepath" /upload/
  #         rm -rf "$filepath"
  #         exit 0
  #     elif [ "$path" = "$downloadpath" ]; then
  #         /usr/bin/php /www/wwwroot/pan.i-love-you.ml/one.php upload:folder "$filepath"/ /upload/"${filepath##*/}"/
  #         rm -rf "$filepath"/
  #         exit 0
  #     fi
  # done
  ```

  > 可能某些还未监测
* 较完美监测

  ```
  #!/bin/bash
  TARGET='/root/tmp'
  downloadpath='/www/wwwroot/be.feelingyou.ml/MediaDownloader/public/downloads'

  inotifywait -m $TARGET -e create -e moved_to |
      while read path action file; do
          echo "The file '$file' appeared in directory '$TARGET' via '$action'"
          filename="${file##*/}"
          extension="${filename##*.}"
          case $extension in
          mp3)
              echo "$file"
              echo "$extension"
              ;;
          *)
              echo "$file"
              echo "$extension"
              ;;
          esac
      done
  ```

### 4.安装任意一款OneDrive的index

* cuteone
* oneindex
* Olxdex?
* pyone
* ...

### 其他待完善


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.crushing.xyz/play/youtube-li-xian-xia-zai.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
