Giter Club home page Giter Club logo

niconico-video-downloader's Introduction

Niconico-Video-Downloader

The coolest project I wrote that use selenium, youtube-dl to fetch videos list from niconico account favourite list and download these videos.
alt text

About this project

The project is no longer maintained.
The project is not working any more in 2020 as NicoNico completely remade their user pages, which breaks Selenium code from fetching the favourite list contents.
A solution is possible, but I won't do it anymore

Alternates to this project

If you still want to batch download videos from niconico account favourite list, consider using any programs from the list of Awesome NicoNicoDouga Video Downloaders.

This list will be maintained in long term.

Appreciation

Special thanks for the 3rd party programable video downloader------Youtube-dl, without this excutable file, I can't fix the issue that happened after the niconico website updates. Youtube-dl: https://github.com/rg3/youtube-dl/

Thanks for Selenium, without this amazing library, I can't come up with this project. Selenium: https://www.seleniumhq.org/

And also thanks for the ChromeDriver that provided by Google ChromeDriver: https://sites.google.com/a/chromium.org/chromedriver/

Currently this project only supports Windows and only support GoogleChrome, since I only use them

How to use

Prerequisite:

  • Windows OS
  • Java 11
  • Chrome browser

Step to setup

  • download the artifact from release pages, unpack it
  • create your own profile: go to the data/ folder, create an copy of example_user.properties, and fill in that property file.
    • modify the data.downloadedList to something else to avoid using the prefilled download.txt in data/
  • modify system_config.property
    • modify user.config to use your own profile
    • modify idm property valye if you plan to use IDM to download PVs (which means you set downloadMethod to "idm")
  • (optional, recommended) update youtube-dl.exe in lib/ with command 'youtube-dl.exe --update'
  • run: open terminal in the project root folder, type java -jar .\<the jar filename>

Known Issue:

  • recent Chrome 80 webdriver would flash timeout warning and occasionally throw ConnectException, if that happens, simply clean out all Runtime Broker in Windows Task Manager, clean up chromedriver.exe, and restart the program.

niconico-video-downloader's People

Contributors

cxwudi avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

niconico-video-downloader's Issues

Niconico website update

Niconico has completely updated its favorite list websites, probably all elements are changed.
Code that related to reading favourite list need to be updated correspondingly.

Need to implement a new downloading method.

two possible reasons, either the try-on-resource statement is having problem, or the niconico's server is unstable. for now we have already roll back to VideoDownloader.java to original version, but the investigation is still needed

Write a wrapper class of NicoDriver

As indecate in title, we need a warpper class that can manage the driver, and move login(), setup() and reset() functionality into this class. Afterward, replace all driver attributes in each classes with this warpper.

Refactor Project: see OneNote

New feature:

  • use system_config.property and user.property to define constant variables in the niconico downloader
    • that means you can use your own account, set where to download, and use what method to download and etc.

Design diagram:

  • See Onenote

And also don't forget the update the README.md file

Refactor Project - use a config file to store all constant global variables

should use the common configuration library.
when maven generates resource runs, the following happens:

  • run a java class that writes selenium driver path into the system_config.property file

when the main project runs:

  • let a static block run to setup selenium system property
  • everytime project use getXXX() function to get a constant variable
  • getXXX():
    • First check if the constant variable has been created, if yes, return it
    • if not, use common configuration code to read variables from system_config.property file and save it into a constant variable

Change Vsong class field so that it can record the type of videos' ID. It's eithor sm-ID or nm-ID.

It has shown that a few videos got nm-ID instead of sm-ID. Our Vsong class assume that all ID are sm-ID, that's wrong. Change the field smId back to id. And the type declaration of new field id should be String instead of int. New field also should record the whole id like smXXXXXX, nmXXXXXX, instead of just numbers XXXXXX.

Also, since the field is changed, don't forget do others necessary code change in the whole project to make thing compiles.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.