Giter VIP home page Giter VIP logo

Comments (15)

manthanabc avatar manthanabc commented on May 20, 2024 3

i tryed with windows it gives ffmpeg error

from ytmdl.

JaxSoder avatar JaxSoder commented on May 20, 2024 3

Would be super cool if this tutorial above was featured on the main page somewhere to help out windows users!

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024 2

Added in 2021.1.14.

from ytmdl.

glaukon-ariston avatar glaukon-ariston commented on May 20, 2024 1

Here's a snippet of my Scripts directory. You can see youtube-dl.exe and the renamed ytmdl.
image

from ytmdl.

glaukon-ariston avatar glaukon-ariston commented on May 20, 2024

On Windows your ytmdl script gets into Scripts directory (C:\app\dev\python\Python37\Scripts on my machine). Because it hasn't got the .py extension I cannot run it from the command line.

>ytmdl
'ytmdl' is not recognized as an internal or external command,
operable program or batch file.

If I change the name to ytmdl.py (my PATHEXT env var has the .py in) then I get the following error:

>ytmdl
Traceback (most recent call last):
  File "C:\app\dev\python\Python37\Scripts\ytmdl.py", line 19, in <module>
    from ytmdl import (
  File "C:\app\dev\python\Python37\Scripts\ytmdl.py", line 19, in <module>
    from ytmdl import (
ImportError: cannot import name 'dir' from 'ytmdl' (C:\app\dev\python\Python37\Scripts\ytmdl.py)

If I change the name to ytmusic-dl.py then I get the following message no matter what I pass as the argument:

>ytmusic-dl Macarena
 ==> Song Name is required. Check 'ytmdl --help' for help.

I guess one of the problems is your use of ytmdl name for both the script name and the package name. Other issue might be how you get the command line arguments. You don't seem to get them by referencing sys.argv, why?

from ytmdl.

glaukon-ariston avatar glaukon-ariston commented on May 20, 2024

It is something to do with the argparse not working as expected. I added print(args) in the main() and am getting this

>ytmusic-dl --url https://www.youtube.com/watch?v=Uv5zKd1rqcM
Namespace(SONG_NAME=[], album=None, artist=None, choice=None, disable_file=False, disable_metaadd=False, format='mp3', ignore_errors=False, level='INFO', list=None, list_level=False, manual_meta=False, nolocal=False, pl_end=None, pl_items=None, pl_start=None, proxy=None, quiet=False, skip_meta=False, song=None, trim=False, url=None)
 ==> Song Name is required. Check 'ytmdl --help' for help.

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

@glaukon-ariston The name of the script should not be an issue. The package is supposed to be installed in the /lib/site-packages/ directory and since the script is in a different directory, it will import the package and not itself. Can you check if the package is installed properly??

Regarding argparse it does seem like the args are not being parsed properly, perhaps that's a windows related issue by argparse?

from ytmdl.

glaukon-ariston avatar glaukon-ariston commented on May 20, 2024

Installed it on a different computer. It seems to work after renaming the script.

>pip install ytmdl
Collecting ytmdl
  Downloading https://files.pythonhosted.org/packages/6a/60/4c377d3d2c29347fccbd21036cd8058f6d90e9fc34feb7fd97bc67e3a9df/ytmdl-2020.7.26-py3-none-any.whl
Requirement already satisfied: colorama in c:\app\dev\python37\lib\site-packages (from ytmdl) (0.4.1)
Collecting ffmpeg-python (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/d7/0c/56be52741f75bad4dc6555991fabd2e07b432d333da82c11ad701123888a/ffmpeg_python-0.2.0-py3-none-any.whl
Collecting unidecode (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/d0/42/d9edfed04228bacea2d824904cae367ee9efd05e6cce7ceaaedd0b0ad964/Unidecode-1.1.1-py2.py3-none-any.whl (238kB)
    100% |████████████████████████████████| 245kB 322kB/s
Collecting downloader-cli (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/86/0c/3fd34b2e4c7a4c4b354ff9f6a81737c15ead8ff51e1226fc575a9271021b/downloader_cli-0.2.0-py3-none-any.whl
Collecting mutagen (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/16/b3/f7aa8edf2ff4495116f95fd442b2a346aa55d1d46313143c8814886dbcdb/mutagen-1.45.1-py3-none-any.whl (218kB)
    100% |████████████████████████████████| 225kB 1.0MB/s
Requirement already satisfied: lxml in c:\app\dev\python37\lib\site-packages (from ytmdl) (4.3.0)
Collecting pysocks (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl
Collecting youtube-search (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/be/fb/5191d778060169440975e20f60eb454f9cd616a077ecec86c9b5c20553f5/youtube_search-1.1.1-py3-none-any.whl
Collecting pyxdg (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/ea/13/de39ddf4f9f9cea0c7684cd54a50d79c97ea99c9f6aed798fd13d0bd4609/pyxdg-0.27-py2.py3-none-any.whl (49kB)
    100% |████████████████████████████████| 51kB 795kB/s
Requirement already satisfied: requests in c:\app\dev\python37\lib\site-packages (from ytmdl) (2.21.0)
Collecting bs4 (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/10/ed/7e8b97591f6f456174139ec089c769f89a94a1a4025fe967691de971f314/bs4-0.0.1.tar.gz
Collecting itunespy==1.5.5 (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/44/c9/88c9b60699ef8e6fad710fcb09352f842298bdf97c110e8279f1d22f292b/itunespy-1.5.5.tar.gz
Collecting youtube-dl (from ytmdl)
  Downloading https://files.pythonhosted.org/packages/9d/5e/6a2fda6c6189a5a084dd839876d92bc6c94cd82445f405bd235a7115389e/youtube_dl-2020.11.12-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 367kB/s
Requirement already satisfied: future in c:\app\dev\python37\lib\site-packages (from ffmpeg-python->ytmdl) (0.18.2)
Collecting urllib3>=1.25.6 (from downloader-cli->ytmdl)
  Downloading https://files.pythonhosted.org/packages/cc/f0/e6ff89dddc1cb9f57b3e0f9dc06f444c884f1ad0c2ad17e2f1d5e7d0d1f7/urllib3-1.26.1-py2.py3-none-any.whl (136kB)
    100% |████████████████████████████████| 143kB 564kB/s
Requirement already satisfied: idna<2.9,>=2.5 in c:\app\dev\python37\lib\site-packages (from requests->ytmdl) (2.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\app\dev\python37\lib\site-packages (from requests->ytmdl) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in c:\app\dev\python37\lib\site-packages (from requests->ytmdl) (2018.11.29)
Collecting beautifulsoup4 (from bs4->ytmdl)
  Downloading https://files.pythonhosted.org/packages/d1/41/e6495bd7d3781cee623ce23ea6ac73282a373088fcd0ddc809a047b18eae/beautifulsoup4-4.9.3-py3-none-any.whl (115kB)
    100% |████████████████████████████████| 122kB 520kB/s
Collecting soupsieve>1.2; python_version >= "3.0" (from beautifulsoup4->bs4->ytmdl)
  Downloading https://files.pythonhosted.org/packages/6f/8f/457f4a5390eeae1cc3aeab89deb7724c965be841ffca6cfca9197482e470/soupsieve-2.0.1-py3-none-any.whl
Building wheels for collected packages: bs4, itunespy
  Running setup.py bdist_wheel for bs4 ... done
  Stored in directory: C:\app\dev\hp\user\AppData\Local\pip\Cache\wheels\a0\b0\b2\4f80b9456b87abedbc0bf2d52235414c3467d8889be38dd472
  Running setup.py bdist_wheel for itunespy ... done
  Stored in directory: C:\app\dev\hp\user\AppData\Local\pip\Cache\wheels\37\63\6c\2d5776c8f0ca36bd6a86410888eedf49e67925b77375da0690
Successfully built bs4 itunespy
requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.26.1 which is incompatible.
Installing collected packages: ffmpeg-python, unidecode, urllib3, downloader-cli, mutagen, pysocks, youtube-search, pyxdg, soupsieve, beautifulsoup4, bs4, itunespy, youtube-dl, ytmdl
  Found existing installation: urllib3 1.24.1
    Uninstalling urllib3-1.24.1:
      Successfully uninstalled urllib3-1.24.1
Successfully installed beautifulsoup4-4.9.3 bs4-0.0.1 downloader-cli-0.2.0 ffmpeg-python-0.2.0 itunespy-1.5.5 mutagen-1.45.1 pysocks-1.7.1 pyxdg-0.27 soupsieve-2.0.1 unidecode-1.1.1 urllib3-1.26.1 youtube-dl-2020.11.12 youtube-search-1.1.1 ytmdl-2020.7.26
You are using pip version 18.1, however version 20.3b1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.


>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ytmdl
>>>


>ytmdl
'ytmdl' is not recognized as an internal or external command,
operable program or batch file.

>rename C:\app\dev\Python37\Scripts\ytmdl C:\app\dev\Python37\Scripts\ytmdl.py

>ytmdl
'ytmdl' is not recognized as an internal or external command,
operable program or batch file.

>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

>set PATHEXT=%PATHEXT%;.PY

>ytmdl
Traceback (most recent call last):
  File "C:\app\dev\Python37\Scripts\ytmdl.py", line 19, in <module>
    from ytmdl import (
  File "C:\app\dev\Python37\Scripts\ytmdl.py", line 19, in <module>
    from ytmdl import (
ImportError: cannot import name 'dir' from 'ytmdl' (C:\app\dev\Python37\Scripts\ytmdl.py)

>rename C:\app\dev\Python37\Scripts\ytmdl.py C:\app\dev\Python37\Scripts\ytmusic-dl.py

>ytmusic-dl
c:\app\dev\python37\lib\site-packages\requests\__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.1) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
 ==> Created new config since none was present
 ==> Song Name is required. Check 'ytmdl --help' for help.

>ytmusic-dl --help
c:\app\dev\python37\lib\site-packages\requests\__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.1) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
usage: ytmusic-dl.py [-h] [-q] [--song SONG-METADATA] [--choice CHOICE]
                     [--artist ARTIST] [--album ALBUM] [--disable-metaadd]
                     [--skip-meta] [-m] [--proxy URL] [--url URL]
                     [--list PATH TO LIST] [--nolocal] [--format FORMAT]
                     [--trim] [--version] [--pl-start NUMBER]
                     [--pl-end NUMBER] [--pl-items ITEM_SPEC]
                     [--ignore-errors] [--level LEVEL] [--disable-file]
                     [--list-level]
                     [SONG_NAME [SONG_NAME ...]]

positional arguments:
  SONG_NAME             Name of the song to download. Can be an URL to a
                        playlist as well. It will be automatically recognized.

optional arguments:
  -h, --help            show this help message and exit
  -q, --quiet           Don't ask the user to select songs if more than one
                        search result. The first result in each case will be
                        considered.
  --proxy URL           Use the specified HTTP/HTTPS/SOCKS proxy. To enable
                        SOCKS proxy, specify a proper scheme. For example
                        socks5://127.0.0.1:1080/. Pass in an empty string
                        (--proxy "") for direct connection
  --url URL             Youtube song link.
  --list PATH TO LIST   Download list of songs. The list should have one song
                        name in every line.
  --nolocal             Don't search locally for the song before downloading.
  --format FORMAT       The format in which the song should be downloaded.
                        Default is [MP3]. Available options are [m4a]
  --trim, -t            Trim out the audio from the song. Use underlying
                        speech and music segmentation engine to determine and
                        keep only the music in the file. Useful in songs where
                        there are speeches, noise etc before/after the start
                        of the song. Default is false.
  --version             show the program version number and exit

Metadata:
  --song SONG-METADATA  The song to search in Metadata. Particularly useful
                        for songs that have the names in a different language
                        in YouTube. For Example, greek songs.
  --choice CHOICE       The choice that the user wants to go for. Usefull to
                        pass along with --quiet. Choices start at 1
  --artist ARTIST       The name of the song's artist. Pass it with a song
                        name.
  --album ALBUM         The name of the song's album. Pass it with a song
                        name.
  --disable-metaadd     Disable addition of passed artist and album keyword to
                        the youtube search in order to get a more accurate
                        result. (Default: false)
  --skip-meta           Skip setting the metadata and just copy the converted
                        song to the destination directory. '--manual-meta'
                        will override this option, pass only one of them.
  -m, --manual-meta     Manually enter song details.

Playlist:
  --pl-start NUMBER     Playlist video to start at (default is 1)
  --pl-end NUMBER       Playlist video to end at (default is last)
  --pl-items ITEM_SPEC  Playlist video items to download. Specify indices of
                        the videos present in the playlist seperated by commas
                        like: '--playlist-items 1, 2, 4, 6' if you want to
                        download videos indexed 1, 2, 4 and 6. Range can also
                        be passed like: '--playlist-items 1-3, 5-7' to
                        download the videos indexed at 1, 2, 3, 5, 6, 7.
  --ignore-errors       Ignore if downloading any video fails in a playlist.
                        If passed, the execution will move to the next video
                        in the passed playlist.

Logger:
  --level LEVEL         The level of the logger that will be used while
                        verbosing. Use `--list-level` to check available
                        options.
  --disable-file        Disable logging to files
  --list-level          List all the available logger levels.


>ytmusic-dl --url https://www.youtube.com/watch?v=Uv5zKd1rqcM
c:\app\dev\python37\lib\site-packages\requests\__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.1) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
 ==> Searching to see if already present in C:\app\dev\hp\projects
 ==> Downloading Los Del Rio - La Macarena ( Full Spanish Version with Lyrics in 320kbps
 ==> Saving the files to: C:\app\dev\hp\user\.cache\ytmdl
1024 bytes| 33 Kb/s || ETA: 5 s                |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 0%  3 KB   | 20 Kb/s || ETA: 5 s                   |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 0%  7 KB   | 33 Kb/s || ETA: 5 s                   |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 0%  15 KB  | 55 Kb/s || ETA: 5 s                   |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 0%  31 KB  | 102 Kb/s || ETA: 5 s                  |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 1%  63 KB  | 172 Kb/s || ETA: 5 s                  |░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 1%  127 KB | 297 Kb/s || ETA: 5 s                  |▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 3%  255 KB | 452 Kb/s || ETA: 4 s                  |▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 6%  511 KB | 404 Kb/s || ETA: 4 s                  |▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 12% 868 KB | 418 Kb/s || ETA: 3 s                  |▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 20% 1 MB   | 422 Kb/s || ETA: 2 s                  |▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░| 29% 2 MB   | 402 Kb/s || ETA: 1 s                  |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░| 39% 2 MB   | 421 Kb/s || ETA: 0 s                  |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░| 47% 3 MB   | 447 Kb/s || ETA: -1 s                 |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░| 59% 3 MB   | 453 Kb/s || ETA: -2 s                 |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░| 72% 4 MB   | 467 Kb/s || ETA: -3 s                 |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░| 83% 4 MB   | 462 Kb/s || ETA: -4 s                 |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░| 96% 4 MB   | 470 Kb/s || ETA: -5 s                 |▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓| 100% ==> Downloaded!
 ==> Converting to mp3...
 ==> Getting song data for los del rio la macarena  spanish version with ...
 ==> Something went wrong with iTunes. The program will continue withthe other providers. Please check 'C:\app\dev\hp\user\.cache\ytmdl\logs\log.cat' for more details.
 ==> "itunes" isn't implemented. Skipping!
 ==> Something went wrong with Gaana. The program will continue withthe other providers. Please check 'C:\app\dev\hp\user\.cache\ytmdl\logs\log.cat' for more details.
 ==> "gaana" isn't implemented. Skipping!
 ==> No metadata provider in the configuration is implemented. Please change it to something                             available or use the --skip-meta flag

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

@glaukon-ariston Wow, that's pretty awesome. Seems like the only issue is to rename the file and it will start working all right. You did not have any issue downloading the songs??

Also you had to add the .py to $PATHEXT in order for it to recognize the py file as a script.

Can you please tell me where the ytmdl package is located? You can get it by running the following command

pip show ytmdl

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

@glaukon-ariston Can you also give me the installed location of youtube-dl? Also does youtube-dl work out of the box?

What does running youtube-dl on the command line do? Does it throw a similar error?

from ytmdl.

glaukon-ariston avatar glaukon-ariston commented on May 20, 2024

On my system youtube-dl is youtube-dl.exe, a Windows executable.

The song has been downloaded and converted into MP3, but not in the current directory. I had to chase it down, it was in C:\app\dev\hp\user\.cache\ytmdl\ (named Los#Del#Rio#-#La#Macarena#(#Full#Spanish#Version#with#Lyrics.mp3_new.mp3) so it seems the last part of the processing didn't go well (itunes, gaana, etc.).

>pip show ytmdl
Name: ytmdl
Version: 2020.7.26
Summary: Youtube Music Downloader
Home-page: https://github.com/deepjyoti30/ytmdl
Author: Deepjyoti Barman
Author-email: deep.barma30@gmail.com
License: UNKNOWN
Location: c:\app\dev\python37\lib\site-packages
Requires: requests, colorama, pyxdg, mutagen, pysocks, lxml, bs4, youtube-search, unidecode, itunespy, downloader-cli, youtube-dl, ffmpeg-python
Required-by:

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

@glaukon-ariston Thanks for giving all the info. So it seems like the package is being installed correctly but the script has a conflict of name while executing. I asked you for the location of youtube-dl because its package structure is similar to ytmdl. I think if I ship ytmdl as an executable, like youtube-dl does, the issues would be fixed.

Regarding the metadata issue, I think it might be related to the config file being created. I would need to dig deeper in order to know why exactly it's failing. As of the latest releases, we have added a functionality to select metadata providers from the config and thus it is important to have a config file.

Let me first fix the issue related to installation and after that perhaps I can open up a new issue regarding the metadata part.

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

Thanks to everyone that have been commenting here with solutions. I was finally able to make ytmdl work on Windows. As of now, I tested it and it worked all right. There is a possibility of some bugs since I did not get a chance for an indepth usage.

However, I would like to request you guys to try it out for yourself and tell me if you do find any issues.

Since ytmdl depends on simber and downloader-cli, I had to make some changes to those packages as well in order to fix some bugs.

Install latest git version of simber:

  1. Get the latest commits from the simber repo.
  2. Install using python setup.py install.

Cross check if the version is 0.1.3 or above.

Install latest git version of downloader-cli:

  1. Get the latest commits from the repo
  2. Install using python setup.py install

Cross check the version is 0.2.1 or above.

Install latest changes of ytmdl

  1. Get the latest commits from the windows branch.
  2. Install using python setup.py install.

Cross check the version is 2020.11.20-dev or above.

Once above is done, you should have a working installation of ytmdl for windows.

Add ffmpeg to path. (Optional)

ffmpeg might not be added to the path by default. This will raise an error from ytmdl stating ytmdl was not found. In order to fix this:

  1. Download the latest ffmpeg zip from here
  2. Unzip the file.
  3. Copy the path of the bin directory inside the extracted directory and add it to the PATH:
set PATH=%PATH%;<path you copied>

You can report back the issues, (if you face any), here.

Thanks @manthanabc @glaukon-ariston

from ytmdl.

vrnvorona avatar vrnvorona commented on May 20, 2024

I also had problems with popen('stty size', 'r') parts, had to replace them for shutil.get_terminal_size().columns

Also using .format in 2020 is kinda upsetting. f strings are much cleaner way to interpolate strings.

from ytmdl.

deepjyoti30 avatar deepjyoti30 commented on May 20, 2024

@vrnvorona That is already fixed. I was aware of that issue and it was happening in the downloader-cli package. I have already made changes in that package. This is why I asked to install the latest version of that package as well.

from ytmdl.

Related Issues (20)

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.