Giter Site home page Giter Site logo

gpodder / mygpo Goto Github PK

View Code? Open in Web Editor NEW
267.0 16.0 80.0 15.05 MB

The gpodder.net webservice

Home Page: http://gpodder.net/

License: GNU Affero General Public License v3.0

Python 69.97% CSS 5.38% JavaScript 4.67% Makefile 0.15% HTML 19.57% Shell 0.24% Procfile 0.02%
podcast webservice rest-api gpodder python django hacktoberfest

mygpo's Introduction

mygpo - Source for gpodder.net

mygpo is the website and webservice powering gpodder.net.

License

mygpo is licensed under the GNU Affero General Public License Version 3. See file COPYING for details.

Installation

See the installation instructions for details.

Bugs

Please report bugs in the GitHub issue tracker.

Contributing

gpodder.net is an open source project and your contributions are wanted and appreciated. To get started please see the developer documentation.

Slack

Join our Slack channel: gpodder-net.slack.com

Invitation link

Mailing List

gpodder.org related issues are discussed on the gPodder Mailing List.

Documentation

Documentation, especially for the API, is stored in the doc folder and can be read on ReadTheDocs.

Name (Why mygpo?)

mygpo is a short version of "my.gpodder.org" which was the old [domain] name of gpodder.net and has been used as the project name since then.

mygpo's People

Contributors

alebx avatar aschlapsi avatar bencomp avatar bloodpet avatar bytehamster avatar clementsjosh avatar cptpcrd avatar cweiske avatar dellagustin avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar dineshkrishnareddy avatar fk-lx avatar hyde46 avatar matthewhughes934 avatar mrnicknoldus avatar muellnera avatar outdooracorn avatar ryochan7 avatar ryoung29 avatar siqingyu avatar smarquespt avatar stefankoegl avatar thp avatar tomaszdom avatar webpigeon avatar yarons avatar zb3 avatar zoenglinghou 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

mygpo's Issues

Download incomplete: 200/514 episodes

I'm new so forgive me if this is a stupid question. How can I get the gPodder app to download all the episodes of the podcast? In my case I've subscribed to a Podcast with 514 episodes but I don't know how to get the downloads to exceed 200.

Screenshot: https://imgur.com/a/Nz1ZKqX

Can I avoid empty downloaded files?

When I check for new episodes and download them, in my PC's Downloads folder I get a file for every podcast programme on my list, whether or not a new podcast episode has been downloaded. This makes it tedious to go through and find the new podcasts and delete the blank files (actually the 'blank files' contain a thumbnail link, which is irrelevant).
Can I avoid downloading the programme name as a folder when there is no new episode?

Account registration email not getting sent

I can't register an account on gpodder, I've tried with a Gmail and a mail.ru address, and for neither of them did I receive any activation email across any folders including spam and trash.

Commit or tag relating to Live gpodder.net site

I tried asking this on the mailing list, but I didn't get a reply.

I am trying to investigate some sync issues between antennaPod and gPodder, so I wanted a local version of gpodder.net so I could watch the sync messages between them.

I have checked out the code and created the database, and I can create a device and find podcasts. However, the latest version on the master branch of gpodder.net refuses to respond when I attempt to subscribe to a podcast, so I would like to know the checkout or tag that corresponds to the live version of gpodder.net

Thanks
Graham

Can not create account again after deletion

I deleted my account when I saw that it is possible to login via Google, but actually an account should be created first and then linked to a Google account, is it correct? The fact is that now I can not re-create my account using the first email address I gave in the registration form (I can see a notification message "account not validated", I receive a new validation link but the link is not correct "https://gpodder.net/activate/None").
What should I do to re-create my account?

Why does gpodder.net have several examples of same feed, none up to date?

I tried searching for Planet Money, which gave me a very long list of hits (most seemed to have nothing to do with the Planet Money show, which is weird in itself) with duplicate results.

Why are there duplicate results? I manually tried several of them, looking at their rss urls, only to be greeted with a 404. Are not rss urls automatically checked and weeded out after some time if they only give 404?

The top two hits seemed to be my best bet, they both had lots of subscribers. But when checking their info pages (1, 2 - yes, both had the same url) neither had updated for a full year. I manually checked the rss url, and sure enough it was up to date.

Is gpodder.net an abandoned project?

Accountdeletion seems not to delete account

Hey there,

just found some strange behavior after deleting an account from gpodder.net.
When trying to login again, I receive an error message that I first need to activate my account by responding to the just sent e-mail. The mail contents an link to https://www.gpodder.net/activate/None - similar to #67 and #48, but actually I didn't want to recreate an account, just wanted to make sure my username/pw truly were deleted.
When trying to login with a wrong password, I just get a unknown user/password error message.

This doesn’t look right, as the e-mail and the password (hash) should also become deleted and unknown after deleting an account.

propose a way for every user to have the ability to cooperatively merge duplicate feeds

If I mark 2 feeds as duplicates and the majority of users subscribed to the feeds acknowledges the dup, then it gets accepted.

Have some sort of merit system where users with more correctness are given more authority.
In the end, if 2 feeds are the same but one is more valid, it should favor agressive consolidation versus accepting someone's minor opinion.

Someone with higher authority can split or merge.

I dunno. Just trying to think of some simple premises to avoid any one person or group of persons from being in charge of merges.

I can't recover my account

I forgot the password, so I clicked on "Forgot your password?" and after sending the username and the email, a message says "You should have received an mail with your new password.", but no mail comes.

Entity %23 is removed from feed URL

Gpodder appears to remove # characters from podcast feed URLs.

I have a podcast with the encoded entity %23 (which is a #) in the URL, which is required because it is a query parameter containing an access code (abc#):

http://example.com/feed.xml?c=abc%23

The feed is able to subscribe in gpodder. However, internally to gpodder, the %23 is stripped off. The feed never updates, and if I copy the URL from the feed RSS icon here:

screen shot 2018-04-16 at 17 21 57

It shows this is the URL in gpodder:

    http://example.com/feed.xml?c=abc

It seems gpodder is removing the # character for some reason (access codes containing other characters are retained fine).

Sorry, I can't share the podcast URL I'm using because it cannot be shared publicly. Email me if you'd like to test it.

Merge Duplicate Podcasts

From @go2null on March 4, 2017 22:34

Not sure where to post this, but based on the these, it seems that the bug tracker maybe used. Please let me know otherwise.

StarTalk Radio
official feed: https://feeds.soundcloud.com/users/soundcloud:users:38128127/sounds.rss

StarTalk Blog
official feed: https://www.startalkradio.net/feed/

Copied from original issue: gpodder/gpodder#239

using gpodder to replace list on self-hosted server with local subscriptions fails

Hi,

Been trying to setup a self-hosted mygpo server. Got it up and running, and setup a user account, however when I go to my gPodder client and try to upload my subscriptions, I get a timeout:
image

In the mygpo logs I am getting unauthorized despite me being sure my creds are correct

2018-12-03 16:54:24,625 django.request WARNING Unauthorized: /subscriptions/mike/lasvegas.json
2018-12-03 16:54:24,625 django.server WARNING "PUT /subscriptions/mike/lasvegas.json HTTP/1.1" 401 0
2018-12-03 16:54:56,572 django.request WARNING Not Found: /favicon.ico
2018-12-03 16:54:56,572 django.server WARNING "GET /favicon.ico HTTP/1.1" 404 25554
2018-12-03 16:56:37,803 django.request WARNING Unauthorized: /api/2/devices/mike/lasvegas.json
2018-12-03 16:56:37,803 django.server WARNING "POST /api/2/devices/mike/lasvegas.json HTTP/1.1" 401 0

I can log into my mygpo account, but I am not seeing any subscriptions despite the logs suggesting things are happening:

2018-12-03 16:56:37,991 mygpo.subscriptions INFO Subscription History for mike
2018-12-03 16:56:37,991 mygpo.subscriptions INFO ... client lasvegas
2018-12-03 16:56:37,992 mygpo.subscriptions INFO ... since 1970-01-01 00:00:00
2018-12-03 16:56:37,992 mygpo.subscriptions INFO ... until 2018-12-03 16:56:37.987425
2018-12-03 16:56:37,995 mygpo.api.subscriptions INFO Subscription History: 0
2018-12-03 16:56:37,995 mygpo.api.subscriptions INFO Subscription Diff: +0/-0
2018-12-03 16:56:38,027 mygpo.api.subscriptions INFO Subscription Upload @mike/lasvegas
2018-12-03 16:56:38,036 mygpo.api.subscriptions INFO Subscription Upload @mike/lasvegas: add 11, remove 0
2018-12-03 16:57:38,156 mygpo.api.advanced INFO start: user mike: 100 actions from mygpoclient/1.8 (+http://gpodder.org/mygpoclient/) gPodder/3.10.1 (+http://gpodder.org/) Linux/4.19.0-041900-generic
2018-12-03 16:58:38,220 mygpo.subscriptions INFO Subscription History for mike
2018-12-03 16:58:38,221 mygpo.subscriptions INFO ... client lasvegas
2018-12-03 16:58:38,221 mygpo.subscriptions INFO ... since 2018-12-03 16:56:37
2018-12-03 16:58:38,222 mygpo.subscriptions INFO ... until 2018-12-03 16:58:38.217730
2018-12-03 16:58:38,224 mygpo.api.subscriptions INFO Subscription History: 0
2018-12-03 16:58:38,224 mygpo.api.subscriptions INFO Subscription Diff: +0/-0
2018-12-03 16:58:38,261 mygpo.api.subscriptions INFO Subscription Upload @mike/lasvegas
2018-12-03 16:58:38,270 mygpo.api.subscriptions INFO Subscription Upload @mike/lasvegas: add 11, remove 0


Unable to delete some tags

If I add a tag with all lower case letters (for example "literature"), I can delete them afterwards without any problem. However, when I use tags with capital letters, for example "Literature", the tag can not be removed. Also, I added (accidentally) a comma (",") as a tag. This was accepted, but it is not removable, too.

Some podcasts have no no url

From @elelay on January 29, 2017 22:3

Yes, it's weird: a podcast in gpodder.net without url!
search for Linux Outlaws, you'll only see the first 3
gpodder.net search page shows way more.

Traceback (similar with gtk3 branch...)

1485726984.299862 [gpodder.log] ERROR: Uncaught exception: Traceback (most recent call last):
  File "src/gpodder/gtkui/desktop/podcastdirectory.py", line 267, in update_ui
    self.podcasts_model.load(podcasts or [])
  File "src/gpodder/gtkui/desktop/podcastdirectory.py", line 58, in load
    entry.subscribers, cgi.escape(entry.url)), entry.title, entry.url))
  File "/usr/lib/python2.7/cgi.py", line 1043, in escape
    s = s.replace("&", "&") # Must be done first!
AttributeError: 'NoneType' object has no attribute 'replace'

The fix: don't show results that don't have entry.url.

Copied from original issue: gpodder/gpodder#222

Downloading Souncloud Tracks ?

Salve from Brazil ! Just wondering, is it possible to use gPodder to follow and download regular tracks posted on Soundcloud Pages ? gPodder will recognize the Page as a Podcast but it lists nothing to the right. Just wanna be able to back up some of my favorite tracks on SoundCloud using a nice little app such as this one. Appreciate your patience.

Peace,

                         TilawEhNoix

API: Device Synchronization API - Start / Stop Sync returning HTTP status 500

During my work on PR #122 is was testing the Device Synchronization API - Start / Stop Sync (https://gpoddernet.readthedocs.io/en/latest/api/reference/sync.html#post--api-2-sync-devices-(username).json)

I sent the following request

{
  "synchronize": [
    [
      "my-desktop", "cellphone"
    ]
  ]
}

and it is returning HTTP 500

<html>
    <head>
        <title>500 Internal server error (gpodder.net)</title>
        <link rel="stylesheet" type="text/css" href="/static/css/fail.css" />
    </head>
    <body>
        <div id="c">
            <div id="fail">
                <h1>500 - Internal server error.</h1>
                <p>
                The service is currently overloaded.
                Please try again later or contact us.
                </p>
            </div>
        </div>
        <img id="icon" src="/static/failpodder.png">
    </body>
</html>

as a reference, a previous call to https://gpoddernet.readthedocs.io/en/latest/api/reference/sync.html#get--api-2-sync-devices-(username).json was returning:

{
  "synchronized": [],
  "not-synchronized": [
    "cellphone",
    "my-desktop"
  ]
}

I'm able ot sync this devices on the web ui though.

Stuck in activation loop

From @procyon12lotor on May 22, 2017 21:3

Deleted my account to quickly reset settings, and now:

-Cannot re-register account because username and email address are already taken.
-Cannot log into account on any synced devices.
-Cannot log into website, because my account needs activation which results in the following email.

Click on the link below to activate your account on gpodder.net

https://gpodder.net/activate/None

-Cannot activate account because the link in the email "https://gpodder.net/activate/None" doesn't work.

Would be nice to have some way of releasing my account. I don't really want to have an entire email address only for this account.

Is there a way to free the email address associated with a deleted account?

Copied from original issue: gpodder/gpodder#303

Feedback link on left hand side is broken

There are a few issues with the Feedback "tab" on the left hand side:

  • The styling is not rendering properly in FF 54 (Linux). I see no background for to the text that comes up, instead it dims the page and I see the text overlayed over the page text.
  • The text indicates I am being redirected, but the redirect does not seem to execute.
  • The redirect link goes to getsatisfaction.com which is not active. It should probably go to this issue tracker.

Avatar image on profile page broken

Instead of my avatar image, I only see the HTML code on my profile page:

<img src="https://secure.gravatar.com/avatar/34c61d4218b42ef02cc8be5aaab87f5f?s=128&d=mm" alt="cweiske" />

Feed names don't appear on sync

I set up gpodder and synced my antennapod podcasts to my account. Initially, all my podcasts showed up in subscriptions as "Unknown podcast from whatever.url". This is related to #89

If search for the subscription URL in gpodder, the name gets corrected in my list of feeds, but it should get that from the start.

Unknown Podcast from XXXX

From @shooftie on July 22, 2017 9:40

I was having big problems when using GPodder alongside AntennaPod where feeds were becoming duplicated. I tracked this down to the BBC changing their URLs and thus GPodder assuming that these were new podcasts:

http://www.bbc.co.uk/programmes/p002vsnk/episodes/downloads.rss

became

http://podcasts.files.bbci.co.uk/p002vsnk.rss

The former simply redirects to the latter now.

I have been through most of my podcasts which used the old format and resubscribed using the new URL. However, all of the new URLs result in an 'Unknown Podcast from XXXX' on GPodder.net whilst AntennaPod can interpret the feeds perfectly, titles and images etc.

image

I've seen this bug mentioned in AntennaPod here and it was stated that:

We take the title from the (RSS/Atom) feed, not from Gpodder.net itself. We do not sync any feed information apart from the feed's/episode's URL which are used as identifiers

With this being the case, what is AntennaPod doing that GPodder.net is not which enables it to recognise the title and image? I'm happy to send you anything that might help identify the issue, as a donator I am just keen to see this awesome project succeed.

Copied from original issue: gpodder/gpodder#331

investigate gpodder.net performance

From @elelay on April 1, 2017 13:56

I've tested gpodder.net sync with a friend and we noticed really poor performance.

  1. the web ui took tens of seconds to load
  2. sync from antenna pod failed multiple times
  3. sync from gpodder at exit took also tens of seconds.
  4. search from the gpodder.net showed 502 overloaded, then when I tried a minute later it worked

Yes, gpodder.net is feature-rich and I appreciate the service to the community, but can we do something to make it perform better?

Copied from original issue: gpodder/gpodder#259

activation email not being sent

I still not have not received my activation email (nor a password reset email) to get my account going. yes, I checked my spam folder and yes, have waited several days.

Trying again

After several tries and a break I try to install mygpo on my cubietruck running armbian.
I followed all your instructions on http://gpoddernet.readthedocs.io/en/latest/dev/installation.html and got up to cd mygpo python manage.py migrate .

That command ends with

(venv) root@cubietruck:~/mygpo# python manage.py migrate Traceback (most recent call last): File "manage.py", line 8, in <module> execute_from_command_line(sys.argv) File "/root/mygpo/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/root/mygpo/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 356, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/root/mygpo/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 206, in fetch_command klass = load_command_class(app_name, subcommand) File "/root/mygpo/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 40, in load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) File "/root/mygpo/venv/lib/python3.5/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 986, in _gcd_import File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 665, in exec_module File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed File "/root/mygpo/venv/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 15, in <module> from django.db.migrations.autodetector import MigrationAutodetector File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 13, in <module> from django.db.migrations.questioner import MigrationQuestioner File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/questioner.py", line 12, in <module> from .loader import MigrationLoader File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/loader.py", line 10, in <module> from django.db.migrations.recorder import MigrationRecorder File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 12, in <module> class MigrationRecorder(object): File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 26, in MigrationRecorder class Migration(models.Model): File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 27, in Migration app = models.CharField(max_length=255) File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1061, in __init__ super(CharField, self).__init__(*args, **kwargs) File "/root/mygpo/venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 172, in __init__ self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE File "/root/mygpo/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 56, in __getattr__ self._setup(name) File "/root/mygpo/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup self._wrapped = Settings(settings_module) File "/root/mygpo/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 129, in __init__ raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty. .

I won't touch it until I get any news since the Install went smoothly up to that point.

Account cannot be recovered or created: User does not exist + username in use?

I had a gpodder account some time ago, using the same username and email address I'm using here on github. Today I attempted to recover the password, but received the following error message:

Your password could not be reset
User does not exist.

So I attempted to create a new account using that username and email address, and got this message:

Create Account
The username shampyon is already in use.

I also attempted login via Google, but received the error message;

No account connected with your Google account

It's like my account both exists and doesn't exist at the same time, making it impossible to recover or re-register without using a completely different email address and username.

service to get media url

I'm working on a ios app to use web services and I couldn't figure out a way to retrieve media .mp3 url for any podcast. Is episode.josn service used for this or else any other way?

Error initialising mygpo

From @TalmarGrosskotz on March 2, 2017 14:4

Step by step I progress on running mygpo on my Raspberry Pi, but now I have run into a new error I can' t make sense of. It happens after running python manage.py migrate:

Traceback (most recent call last):
File "manage.py", line 26, in
execute_from_command_line(sys.argv)
File "/usr/lib/python2.7/dist-packages/django/core/management/init.py", line 354, in
execute_from_command_line utility.execute()
File "/usr/lib/python2.7/dist-packages/django/core/management/init.py", line 328, in execute
django.setup()
File "/usr/lib/python2.7/dist-packages/django/init.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/usr/lib/python2.7/dist-packages/django/apps/config.py", line 86, in create
module = import_module(entry)
File "/usr/lib/python2.7/importlib/init.py", line 37, in import_module
import(name)
File "/root/mygpo/mygpo/api/init.py", line 27, in
from mygpo.utils import parse_request_body
File "/root/mygpo/mygpo/utils.py", line 236
print('\r', end=' ', file=stream)
^
SyntaxError: invalid syntax

Can anybody help me?

Copied from original issue: gpodder/gpodder#236

Metadata and the desktop app

Is there a way and I'm just oblivious to it for the app to edit the metadata of the podcast file?
Some casts are cool and already have their data sorted, but others don't and you just get a raw filename which makes it difficult to identify.

Can't add podcast

Hi,

Does anybody know why I can't add this podcast? It worked a couple of months ago, but not on my newly reinstalled computer.

image

Syncing between devices doesn't work

I am not sure if this is a bug or if I missunderstood something. I created a new device using the web ui and synced it with an exisiting device. I expected that all subscriptions of the existing device would be added to the new device automatically, but that didn't happen. Using the "Trigger sync" button also changed nothing.

Error when trying to run manage.py update-toplist

Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    execute_from_command_line(sys.argv)
  File "/home/mike/mygpo/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/mike/mygpo/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/mike/mygpo/venv/lib/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/mike/mygpo/venv/lib/python3.6/site-packages/django/core/management/base.py", line 353, in execute
    output = self.handle(*args, **options)
  File "/home/mike/mygpo/mygpo/directory/management/commands/update-toplist.py", line 27, in handle
    total = podcasts.count_fast()
AttributeError: 'PodcastQuerySet' object has no attribute 'count_fast'

[Request] Sample Apache Configuration

Hi,

Could someone please provide a sample Apache + mod_wsgi configuration file for deploying mygpo?

I'm not familiar with Django and I'm really struggling to get it running correctly. I was able to get the web interface working but I can't get the Basic Auth required for the API working.

Any help would be greatly appreciated.

No suggested podcasts on the webpage

I am using gpodder a longer time now and still have no suggested podcasts on the webpage.
Am I doing something wrong?
I am using antennapod to sync my subscriptions with the database.

(Edit: posted wrong questions first)

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.