Giter Club home page Giter Club logo

reddownloader's Introduction



GitHub forks GitHub watchers GitHub Repo stars GitHub followers

GitHub closed pull requests GitHub closed issuesGitHub repo sizeGitHub release (latest by date)

PyPI - Downloads PyPI


Introduction

A very easy to use Reddit Media Downloader. The library can also be used to download pictures and even picture galleries all just with a reddit post link. You can access Reddit API methods without having your own bot with classes such as DownloadBySubreddit more on that below.

NOTE: As of RedDownloader 4 only Youtube and Imgur Single Image Posts are supported

Installation

To Install the package:
pip install RedDownloader

Usage

from RedDownloader import RedDownloader

RedDownloader is auth less you don't need to have a praw bot to use this package.

After importing, Downloading is just a single line of code

RedDownloader.Download(url)

so if you want to download a post from the post with url -> https://www.reddit.com/r/videos/comments/xi89wf/this_guy_made_a_1hz_cpu_in_minecraft_to_run/ you would do something like:

RedDownloader.Download("https://www.reddit.com/r/videos/comments/xi89wf/this_guy_made_a_1hz_cpu_in_minecraft_to_run/")

This will automatically download media from the passed url it would automatically detect if it's a picture/video/gallery with default options. to pass in an output filename just pass in the output parameter as:

RedDownloader.Download(url , output="MyAwesomeRedditMedia")

In case if a post is of type gallery it will make a folder in the destination path with the output parameter passed. That folder would contain all your pictures. In Case if a folder with that name already exists files would be downloaded in that folder.

To set a custom path for downloaded file use destination as an argument like

RedDownloader.Download(url , output="MyAwesomeRedditMedia" , destination="D:/Pictures/")

default file name is "downloaded". you don't have to pass in extensions to the output parameter.

default download location for file is current working directory.

Another argument is the quality argument which defines the resolution to download if the filetype is a video the avaliable options to choose from are 144, 240, 360, 480, 720, 1080 please note that higher resolution would result in bigger file size. If a video file in specified resolution is not found it will try for a lower resolution. Default: 1080p

An example:

RedDownloader.Download(url , output="MyAwesomeRedditMedia" , quality = 1080)

You at times might need to know the media type of the file being downloaded for that you can use the GetMediaType() method

file = RedDownloader.Download(url)
print(file.GetMediaType())

for images it returns a i for videos it returns a v and for a gallery post it returns a g and a gif for a gif.

The package has been tested for videos with no sound as well.

Galleries were first supported in RedDownloader 2.2.0 any older version used to download a gallery post would return a Post Not Recoganized error

Using Reddit API Methods

To download some number of media from a specific subreddit you can use the DownloadBySubreddit:

RedDownloader.DownloadBySubreddit(subreddit , NumberOfPosts , flair = None , SortBy = "hot" , quality = 720 , output = "downloaded" , destination=None)

subreddit: the subreddit you want to download the posts from. NumberOfPosts: the number of posts to download from the subreddit flair: to download posts from a specfic flair from the subreddit of your choice by defaut flair is set to None and downloads posts from any flair SortBy: it sorts the posts from the subreddit you can set it to either hot, new or top by default it is set to hot output: it is the folder name under which all the posts get downloaded destination: path where the download folder and all the posts are downloaded by default it downloads the posts in current working directory.

essentialy you can just do:

RedDownloader.DownloadBySubreddit("memes" , 15)

this would download the hottest 15 posts from r/memes in a folder called downloaded in your current working directory

alternativley you have:

RedDownloader.DownloadImagesBySubreddit("python" , 5)

This would only download Images from a subreddit it is derived from DownloadBySubreddit hence shares the same argumets as listed above

RedDownloader.DownloadVideosBySubreddit("python" , 5)

This would only download Videos from a subreddit it is derived from DownloadBySubreddit hence shares the same argumets as listed above

RedDownloader.DownloadGalleriesBySubreddit("python" , 5)

This would only download Gallery type posts from a subreddit it is derived from DownloadBySubreddit hence shares the same argumets as listed above

New Features in RedDownloader 3.1.1:

You can now use the GetPostAuthor class to get a post author/poster from a given url the syntax followed is

author = RedDownloader.GetPostAuthor(url).Get()
print(author)

Classes such as DownloadBySubreddit , DownloadImagesBySubreddit , DownloadVideosBySubreddit and DownloadGalleriesBySubreddit now have a method GetPostAuthors which returns a list of authors of the posts you just downloaded.

For regular Download class you can now use the GetPostAuthor class to get a post author.

Example:

posts = RedDownloader.DownloadBySubreddit("python" , 5)
authors = posts.GetPostAuthors()
print(authors)

New Features in RedDownloader 3.2.0:


The GetUser Class

You can now use the GetUser class to get information about a user with the following syntax

User = RedDownloader.GetUser("Jackhammer_YOUTUBE")
print(User.Get())

This returns a dictionary with a couple of information:

Key : ReturnType
    usage

'AccountName' : str
    the username of the user
'ID' : str
    the id of the user
'CreationDate' : float
    the date the user was created (in unix time)
'CommentKarma' : int
    the amount of comment karma the user has
'LinkKarma' : int
    the amount of link karma the user has
'PremiumUser' : bool
    whether the user has a premium account or not
'Moderator' : bool
    whether the user is a moderator or not
'Verified' : bool
    whether the user is verified or not

for suspended accounts only AccountName and Suspended as keys are avaliable


Cache FIles

A new argument called cachefile can now be used with following classes DownloadBySubreddit , DownloadImagesBySubreddit , DownloadVideosBySubreddit and DownloadGalleriesBySubreddit.

cachefile is useful when you don't want to download an already download file with RedDownloader. Everytime you download posts with cachefile all the urls of downloaded posts are stored in the file, RedDownloader checks the url of post to be downloaded next time making sure duplicates are avoided. By default it is set to None meaning it won't be checking for duplicate downloads

To use cachefile your virtual environment or work folder should already have a file, RedDownloader won't manually create cachefiles!!!

If you have an empty file called Downloaded.txt to use cachefile you can simply do

RedDownloader.DownloadBySubreddit('memes' , 5 , cachefile='Downloaded.txt')

This is especially beneficial if you would like to store different types of posts in different cache files.

New Features in RedDownloader 3.2.1:


The GetPostTitles && GetPostTitle Class

You can now use the GetPostTitle class to get a post title from a given url the syntax followed is

title = RedDownloader.GetPostTitle(url).Get()
print(title)

For classes like DownloadBySubreddit , DownloadImagesBySubreddit , DownloadVideosBySubreddit and DownloadGalleriesBySubreddit there is a method GetPostTitles which returns a list of titles of the posts you just downloaded.

And for regular Download class you can now use the GetPostTitle method to get a post title.

The GetPostAudio Class

You can now use the GetPostAudio class to get a post audio from a given url the syntax followed is

audio = RedDownloader.GetPostAudio(url)

To change the file download destination you can set the destination argument to the path you want to download the file to. By default it downloads the file in the current working directory. To change to output file name you can set the output argument to the name of the file you want to download the audio to. By default it downloads the file with the name Audio.mp3.

New Features in RedDownloader 4.0:


Youtube and Imgur Support

Starting RedDownloader 4 you can download reddit posts which link to a youtube video and imgur single files. NOTE: Imgur Album links are not yet supported

Any Version previous to RedDownloader 4 would yield a Post Not Recoganized Error

New Features in RedDownloader 4.2.0:


Verbose Enabling/Disabling [Silent Mode]

Starting RedDownloader 4.2.0 you can disable verbose i.e the ability to download posts without logging anything to the console for a cleaner experience. By default Verbose is set to True That is all the progress is logged to console

All Classes accept verbose as an argument so to disable verbose you can do:

DownloadBySubreddit("memes", 5, output="Funny Memes" , verbose=False)

Trying to use verbose with any version previous to RedDownloader 4.2.0 would yield a got an unexpected keyword argument error

New Features in RedDownloader 4.3.0:


i.redd.it and v.redd.it URLs Support

Starting version 4.3.0 RedDownloader can now directly download images and videos from the media url directly. However one limitation that remains would be that classes such as

GetPostAuthor(), GetPostAudio(), GetPostTitle() will not work for such urls.

For Example:

from RedDownloader import RedDownloader
RedDownloader.Download("https://i.redd.it/pjejgqxwnmyb1.jpg")

Star History


Star History Chart

reddownloader's People

Contributors

farukucgun avatar jackhammer9 avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

reddownloader's Issues

hello after the program runs around 7-10 times it provides me with this error from the api

Traceback (most recent call last):
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 124, in
Upload(counter,AmountCounter,posted_authors)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 99, in Upload
author = GetMeme(subreddits)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 50, in GetMeme
author = post.GetPostAuthors()[0]
File "C:\Users\fares\AppData\Local\Programs\Python\Python38\lib\site-packages\RedDownloader\RedDownloader.py", line 701, in GetPostAuthors
for author in self.ProcessedLinks:
AttributeError: 'DownloadImagesBySubreddit' object has no attribute 'ProcessedLinks'
Traceback (most recent call last):
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 129, in
Upload(counter,AmountCounter,posted_authors)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 99, in Upload
author = GetMeme(subreddits)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 50, in GetMeme
author = post.GetPostAuthors()[0]
File "C:\Users\fares\AppData\Local\Programs\Python\Python38\lib\site-packages\RedDownloader\RedDownloader.py", line 701, in GetPostAuthors
for author in self.ProcessedLinks:
AttributeError: 'DownloadImagesBySubreddit' object has no attribute 'ProcessedLinks'
Traceback (most recent call last):
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 129, in
Upload(counter,AmountCounter,posted_authors)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 99, in Upload
author = GetMeme(subreddits)
File "C:\Users\fares\Desktop\Instagram WeakerLimes\Main(Working).py", line 50, in GetMeme
author = post.GetPostAuthors()[0]
File "C:\Users\fares\AppData\Local\Programs\Python\Python38\lib\site-packages\RedDownloader\RedDownloader.py", line 701, in GetPostAuthors
for author in self.ProcessedLinks:
AttributeError: 'DownloadImagesBySubreddit' object has no attribute 'ProcessedLinks'

It just stops working

worked fine for about 8 times then would not work at all.
Plus the more I used it the slower it ran ?
Checked task manager and it wasn't killin the cpu or memory.

Video has no sound

I have tried downloading several posts from Reddit, but every video downloaded does not have sound.
image

Unable to fetch posts

When I run this:

from RedDownloader import RedDownloader
RedDownloader.DownloadVideosBySubreddit("videos", 10)

I get the following error:

Fetching Posts...
Unable to fetch posts
Expecting value: line 1 column 1 (char 0)

And when I navigate to https://jackhammer.pythonanywhere.com/, it tries the load the page forever, and very rarely will it actually get to the page, though sometimes it does. So I assume this is an issue with the server? Not quite sure.

Error: Could Not Recognize Post Type

I have a little automation that has been working for a few months now. But now it is throwing

"RedDownloader.Download(url=download_url, output=download_name, quality=1080)
Error: Could Not Recoganize Post Type"

Is it just me? Any idea for a fix? download_Url is the correct post url/perma link.

it doesn't work

a simple code like this RedDownloader.DownloadBySubreddit("memes" , 15) gives you this eror "Unable to fetch posts
Expecting value: line 2 column 1 (char 1)"

Stalls on "Fetching Posts..."

Hello,

Occasionally, when I go to run my test code utilizing RedDownloader, it would stall on "Fetching Posts...". If I let it sit long enough, it will eventually produce an error.

Here is my example code:
"""
from RedDownloader import RedDownloader as rd

rd.DownloadVideosBySubreddit("TikTokCringe", 5, SortBy="top", quality=1080, output='TikTokCringeVideos', destination=r'[insert path here]')
"""

Error:
Fetching Posts... Unable to fetch posts Expecting value: line 1 column 1 (char 0)

I can access the internet on my PC, my other code works just fine, etc.

Please advise.

Thank you!

Error: Could Not Recoganize Post Type

Can you provide post url example? :)
because this: https://www.reddit.com/r/IdiotsInCars/comments/tp4zto/road_rage_after_getting_his_ego_bruised/ gives me
Error: Could Not Recoganize Post Type

requests.get

In the line

self.PostLinks = requests.get("https://jackhammer.pythonanywhere.com//reddit/subreddit/all", params={'subreddit':Subreddit , 'number':NumberOfPosts , 'flair':flair , 'sort':SortBy})

why have you put this URL link? @JackhammerYT

Error: Could Not Recoganize Post Type

Hi. I'm having an issue. Everytime I try to download media from a post, all I get is an error.

My code:

url = www.Reddit.com/r/AnimalsBeingDerps/comments/en0ho3/excited_new_parent_playing_with_new_kittens/
RedDownloader.Download(url, output=submission.title, destination="media\\")

The error:

Error: Could Not Recoganize Post Type

Any help is appreciated. Thanks!

Side note: "Recoganize" is misspelled. It should be "Recognize".

Pictures from galleries are not named in order

Hello! I was testing this and tried downloading a couple submissions with galleries and found that they're not named/downloaded in order:

I've tested it multiple times and the order repeats itself. Doesn't seem to be random.
It would be nice to have the files named in order, so it's easier to manage.

I hope this is helpful. Thank you!

Sorry there was an error while fetching video/audio files

Hi. I'm having an issue with downloading videos. It seems like i'm having a similar issue as this post: #21
I'm seemingly able to download images, but not videos.

The video i'm trying to download is this:
https://www.reddit.com/r/AnimalsBeingDerps/comments/en0ho3/excited_new_parent_playing_with_new_kittens/
Its available in 240p.

It runs though each resolution and fails, then says:

Sorry there was an error while fetching video/audio files

Traceback:
 Can't fetch the video file

my code:
RedDownloader.Download(url, output=submission.title, destination="media\\")

For the pictures that I can download, some of them are corrupt. I use a third party image viewer app (ImageGlass) and when I open the corrupt images, it says:

ImageGlass cannot open this picture because the file appears to be damaged, corrupted or not supported. 
Magick.Net-Q16-OpenMP-x64:  Not a JPEG file: starts with 0x3c 0x21 '<corrupt image path>' @ error/jpeg.c/JPEGErrorHandler/348

When open the corrupt image in windows default image viewer, it just says "It appears that we don't support this file format."

UPDATE:
I'm letting my script crawl over my saved posts and it's downloading some videos.
https://www.reddit.com/r/AnimalsBeingBros/comments/hv8qdh/puppy_what_are_you_doing_there_puppy/
https://www.reddit.com/r/aww/comments/hkim89/these_two_foster_puppies_rescued_from_a_hoarder/
Not sure why its failing for some but not others.

Also, i noticed that its downloading some images but not putting a file extension and their file size is 0 bits, and when I try to delete them, it says the file doesn't exist.

Is your service limited capped ?

First of all this is a very good project you should be very proud, you even used moviepy to assist in stitching audio and video together (better to use what works )! 10 Stars from me. It seems your project is only limited buy your server plan that is a pity but its understandable.

--ignore the below as I understand your limitations---

It all worked at first now it just doesn't , first it was fast then it was super slow now its just showing errors.
I personally get this error (as I tried to go back to my original working code):

Error: Could Not Recoganize Post Type

also got these errors as I progressed (before I realized it was broken):

#22

there is an issue with your service as it doesn't allow one user to use it continuously (i assume you capped how much a user can use your service).

This would mean that this is more a showcase not an actual full service ? I could be wrong.

quality

why is there no 144p, 240p, 480p quality option?

A problem with YouTube downloads

Type Detected: Youtube Video
Downloading Youtube Video

Connection Error
[WinError 2] The filename, directory name, or volume label syntax is incorrect: 'Youtube title | Youtube title | Youtube title.mp4' -> '72ac10ad93a340d5ac09ea45f7bde5b3.mp4'

I believe using the YouTube title as the file name is causing an error due to the naming convention.

Could this perhaps be updated?

stream.download('.') & stream.download(self.destination) can take a filename= argument.

Pytube also has a helper function safe_filename().

Enhancements Based Upon Discussion Thread

Requested Features According To RedDownloader Discussion thread:

  1. Default Audio track in case of unsuccessful video-audio overlay
  2. Option to have default name based on the title of the post

Unable to fetch posts Expecting value: line 1 column 1 (char 0)

My program is printing the following:

Unable to fetch posts
Expecting value: line 1 column 1 (char 0)

when I run my code:

from RedDownloader.RedDownloader import DownloadVideosBySubreddit
from os import chdir

OUTPUT_PATH = r'C:\Users\samlb\Downloads\TESTING REDDIT'

chdir(OUTPUT_PATH)
DownloadVideosBySubreddit("python", 10)

What am I doing wrong?

Merging the audio file and video file are not merging. here is the Fix

import urllib.request
import moviepy.editor as mpe
import requests
from PIL import Image
import json
import os
import shutil
class Download:

def __init__(self , url , quality = 720 , output = "downloaded" , destination=None):
    self.output = output
    self.destination = destination
    qualityTypes = [360,720,1080]
    if quality not in qualityTypes:
        print("Error: Unkown Quality Type" + f" {quality} choose either 360 , 720 , 1080")
    else:
        self.postLink = requests.get("https://jackhammer.pythonanywhere.com/reddit/media/downloader" , params={'url':url}).text
        if 'v.redd.it' in self.postLink:
            print("Detected Post Type: Video")
            self.mediaType = "v"
            self.InitiateVideo(quality , self.postLink)
        elif 'i.redd.it' in self.postLink:
            print("Detected Post Type: Image")
            self.mediaType = "i"
            imageData = requests.get(self.postLink).content
            with open(f'{self.output}'+'.jpeg' , 'wb') as file:
                file.write(imageData)
            print("Sucessfully Downloaded Image " + f"{self.output}")
            if self.destination != None:
                shutil.move(f"{self.output}.jpeg" , self.destination)
        elif '/gallery/' in self.postLink:
            print("Detected Post Type: Gallery")
            self.mediaType= 'g'
            self.directory = os.path.join(self.destination , self.output)
            try:
                os.mkdir(self.directory)
            except:
                pass
            print("Fetching images from gallery")
            self.GalleryPosts = requests.get("https://jackhammer.pythonanywhere.com/reddit/media/gallery", params={'url':self.postLink})
            posts = json.loads(self.GalleryPosts.content)
            self.GetGallery(posts)
        else:
            print("Error: Could Not Recoganize Post Type")

def GetGallery(self , posts):
    TotalPosts = len(posts)
    print("Total images to be downloaded: " , TotalPosts)
    for i in range(TotalPosts):
        print(f"Downloading image {i+1} / {TotalPosts}")
        ImageData = requests.get(posts[i]).content
        with open(os.path.join(self.directory , self.output+f'{i+1}.jpeg') , 'wb') as image:
            image.write(ImageData)
            image.close()
    print("Image Gallery Successfully Downloaded!")

def InitiateVideo(self , quality , url):
    try:
        print('Fetching Video...')
        self.fetchVideo(quality , url)
        print('Fetching Audio...')
        self.fetchAudio(url)
    except:
        print("Sorry there was an error while fetching video/audio files")
    else:
        self.MergeVideo()

def fetchVideo(self , quality , url):
    try:
        print(f'Error Downloading Video File May be an issue with avaliable quality at {quality}')
        print('trying resolution:720 ')
        urllib.request.urlretrieve(url + '/DASH_720.mp4', self.destination+"Video.mp4")
    except:
        try:
            print(
                'Error Downloading Video File May be an issue with avaliable quality at 720&1080'
            )

            print('trying resolution:360 ')
            urllib.request.urlretrieve(url + '/DASH_360.mp4', self.destination+"Video.mp4")
        except:
            print("Can't fetch the video file :(")

def fetchAudio(self , url):
    doc = requests.get(url+'/DASH_audio.mp4')
    with open(self.destination+'Audio.mp3', 'wb') as f:
        f.write(doc.content)
        f.close()

def MergeVideo(self,fps=30):
    try:
        print('merging files')
        print(self.destination)
        my_clip = mpe.VideoFileClip(self.destination+"Video.mp4")
        audio_background = mpe.AudioFileClip(self.destination+"Audio.mp3")
        final_clip = my_clip.set_audio(audio_background)
        final_clip.write_videofile(f"{self.output}.mp4",fps=fps)
        self.CleanUp()
    except:
        print('video has no sound')
        self.CleanUp(True)
    return f"{self.output}.mp4"
def CleanUp(self):
    try:
        os.remove(self.destination+"Audio.mp3")
        os.remove(self.destination+"Video.mp4")
    except:
        pass

def GetMediaType(self):
    return self.mediaType if self.mediaType != None else None

I cannot download videos. Only JPGs / GIFs

import os
os.environ["IMAGEIO_FFMPEG_EXE"] = "/Users/jj/audio-orchestrator-ffmpeg/bin/ffmpeg"

from RedDownloader import RedDownloader

file = RedDownloader.Download(url = "https://www.reddit.com/r/shitposting/comments/ws8bb1/high_quality_lobster_with_dracula_music/?utm_source=share&utm_medium=web2x&context=3" , output="lobster")


Error:

It tries downloading all the resolutions until popping up this error:

"Sorry there was an error while fetching video/audio files"

(I also had to download FFMPEG manually on Mac, since I couldn't run the code in another way)

Already tried with different videos/subreddits and nothing, only allows me to download Images and GIFs

Any recommendation?

Unable to get the video format

Hello, mate. I recently discovered a bug in which I will download the video but only in audio format.
from RedDownloader import RedDownloader
url="https://www.reddit.com/r/projectzomboid/comments/wfaybk/sunday_driver_is_a_meme/utm_source=share&utm_medium=web2x&context=3"
RedDownloader.Download(url, quality=1080)
it will going to download and then after fetching the audio and video it will merge into an mp3 file why there is no Video file?
Merge into mp4 and What I've got

Download files in silent mode

Hello,

As this project is largely completed for many features, I think it is time to add a silent mode during downloads.
Actually, the program is by default in verbose mode and details all the actions performed.

Detected Post Type: Video
Fetching Video...
Trying resolution: 360p
Video File Downloaded Successfully
Fetching Audio...
Merging Files
Moviepy - Building video ./reddit/video.mp4.
MoviePy - Writing audio in videoTEMP_MPY_wvf_snd.mp3
MoviePy - Done.                                                                                                                         
Moviepy - Writing video ./reddit/video.mp4

Moviepy - Done !                                                                                                                        
Moviepy - video ready ./reddit/video.mp4
cleaning
./reddit/video Successfully Downloaded!

This mode is not very practical when you want to integrate the functionalities of this project into a larger project, which would run continuously and whose logs would be smoother.

Downloaded video name not correct

With some posts, when I download the video, the name of the file comes out as "Video.mp4" and not "downloaed.mp4". Even when I set the output parameter as something else, it still results in "Video.mp4".

The code im running:
RedDownloader.Download(url = link, quality = 360)
where link = https://www.reddit.com/r/Damnthatsinteresting/comments/woo9hf/a_nanobot_helping_a_sperm_with_motility_issues/?utm_source=share&utm_medium=web2x&context=3

The output:
Screenshot 2022-08-15 120604

edit: this seems to be the case for videos w/o sound. i tried to work around this issue by setting the output parameter to "Video", so no matter if the video has audio or not, it will be called "Video.mp4", however, this doesnt work eitheir. if the video has sound and the output is set to "Video", the file will simply not save, even though the command line says otherwise

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.