The Wayback Machine - https://web.archive.org/web/20201116104012/https://github.com/thcolin/nipper
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
doc
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Nipper

๐ŸŒถ ๐Ÿ’ฝย  YouTube playlist (& video) ripper

Parse YouTube video or playlist link, fix inaccurate metadata (cover, artist & song), choose export codec (mp4, webm, aac, mp3 or ogg), and download on-by-one or zipped (best stream chosen by default) ! Every process are made directly in the browser, like stream downloading or converting, with the help of Kagami/ffmpeg.js ๏ฟฝ?๏ฟฝ๏ฟฝ?

Currently, covert art support is limited to mp3 codec.

Screenshot

Scripts

  • dev start a development server at :8000
  • proxy start proxy at :7000 (required)
  • doc start a documentation server at :3000
  • test run linter, unit tests and e2e tests
  • build build a production bundle into dist folder

Configuration

Copy .env.example to .env and configure it as you wish

# YOUTUBE SERVICE:
# Go to [Google Cloud Platform](https://console.cloud.google.com/apis/credentials),
# Enable "Youtube Data API v3" service
# Create "API key" credentials
# Restrict API key by domain name to secure access
YOUTUBE_API_KEY=''

Roadmap

  • Write e2e tests with Cypress
  • Add badges (like travis and standard with Shields)
  • Configure https
  • Record performances, memory, cpu, time for big playlist dig action
  • Create redux + rxjs workflow diagram
  • Use Side Sheet over Modal for configuration

Database

{
  tracks: {
    'youtube#track#_IS208pkFxs': {
      uri: 'youtube#track#_IS208pkFxs',
      service: 'youtube',
      kind: 'track',
      id: '_IS208pkFxs',
      title: 'Midival Punditz - Raanjhan',
      author: 'inMindbodysoul',
      link: 'https://youtu.be/_IS208pkFxs',
      channel: 'UCgEmK9phN-_Ty7d_Jv6BQTg',
      description: 'Two musicians, Gaurav Raina and Tapan Raj, contributing to the evolution of music.. featuring Abida Parveen',
      thumbnail: 'https://i.ytimg.com/vi/_IS208pkFxs/sddefault.jpg',
      duration: '06:05',
      artist: 'Midival Punditz',
      song: 'Raanjhan',
      attachments: {
        'cover.jpg': [Blob],
        'track.mp3': [Blob],
        'track.aac': [Blob],
        'track.ogg': [Blob],
        'track.mp4': [Blob],
        'track.webm': [Blob],
      }
    },
  }
}

State

{
  api: {
    ready: true,
    broken: false
  },
  digger: {
    'youtube#playlist#PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF': {
      uri: 'youtube#playlist#PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF',
      service: 'youtube',
      kind: 'playlist',
      id: 'PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF',
      done: true,
      error: null
    }
  },
  downloader: {
    default: {},
    zip: {
      'youtube#track#Qjp4uxGH9jI': 27,
      'youtube#track#sZUp9rXAK50': 81
    }
  },
  library: {
    'youtube#playlist#PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF': {
      uri: 'youtube#playlist#PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF',
      service: 'youtube',
      kind: 'playlist',
      id: 'PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF',
      title: 'INDIA',
      author: 'Vincent Anthony',
      link: 'https://www.youtube.com/playlist?list=PLcyIgDOXdSITaK7lgF_Cc_k2RqV3OlLeF',
      channel: 'https://www.youtube.com/channel/UC4T79MEKtNfa-PKpgwF0y9g',
      description: '',
      total: 8,
      thumbnail: 'https://i.ytimg.com/vi/a4F1Dm9Fat8/hqdefault.jpg',
      synced: 8,
      tracks: [
        'youtube#track#_IS208pkFxs',
        'youtube#track#a4F1Dm9Fat8',
        'youtube#track#Qjp4uxGH9jI',
        'youtube#track#sZUp9rXAK50',
        'youtube#track#x9BUOcEUCAk',
        'youtube#track#428Orzv3grA',
        'youtube#track#M7gDEwUb4_Q',
        'youtube#track#qhWlptdnLBs'
      ],
      latest: 1540085743390
    }
  },
  preferences: {
    format: 'mp3'
  },
  selection: [
    'youtube#track#Qjp4uxGH9jI',
    'youtube#track#sZUp9rXAK50',
  ],
  toaster: {}
}

Research

  • How to improve metadata writing ?
    • Codecs
      • Audio : mp3/mp3, m4a/aac, ogg/vorbis, opus/opus
      • Video : mp4/mp4, webm/webm
    • FFMPEG
      • mp3 : ffmpeg -i infile.mp3 -i cover.jpg -map 0 -map 1:0 -c:a copy -metadata artist="$ARTIST" -metadata title="$SONG" outfile.mp3
        • title
        • author
        • cover
      • aac : ffmpeg -i infile.m4a -c:a copy -metadata artist="$ARTIST" -metadata title="$SONG" -f mp4 outfile.m4a
      • vorbis : ffmpeg -i infile.ogg -c:a copy -metadata artist="$ARTIST" -metadata title="$SONG" outfile.ogg
      • opus : ffmpeg -i infile.opus -c:a copy -metadata artist="$ARTIST" -metadata title="$SONG" outfile.opus
        • title
        • author
        • cover
          • opus metadata is like ogg (cf. vorbis)
    • Unable to build ffmpeg.js with cover art support, need to compile zlib with emscripten (for mp3)
    • ffmpeg doesn't support cover art for ogg (vorbis, opus) and aac ffmpeg metadata

Helpful

Alternatives

Thanks

About

๐ŸŒถ ๐Ÿ’ฝ Nipper - Youtube playlist (& video) ripper

Topics

Resources

Packages

No packages published

Languages

You canโ€™t perform that action at this time.