GithubHelp home page GithubHelp logo

mutt-ics's Introduction

Mutt ICS

Ever received a meeting notification in an email? Ever wanted to have a quick glance at that .ics file and know what is that meeting about, where is it going to happen and who is participating?

I did. So I made this little script.

Usage

The package is on PyPI so it is pip-installable, but I recommend using PIP Script Installer (pipsi).

After installing with

pipsi install mutt_ics

and making sure the mutt-ics executable is in your path, you should configure mutt to use it to render ICS files. To do that, complete the following steps:

  1. Add the following lines to your .mailcap file:

     text/calendar; mutt-ics; copiousoutput
     application/ics; mutt-ics; copiousoutput 
    
  2. Add the following line to your .muttrc file:

     auto_view text/calendar application/ics
    

You're done. I guess. Maybe I forgot something. Please, file a ticket if I did.

mutt-ics's People

Contributors

dmedvinsky avatar mstone232 avatar pommi avatar thentenaar avatar therojam avatar yggi49 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mutt-ics's Issues

VTIMEZONE from Exchange Server 2010 gives TypeError: tzinfo.dst()

When attempting to view a ICS file with VTIMEZONE with 2 timezones set, mutt-ics gives me an error:
TypeError: tzinfo.dst() must return None or timedelta, not 'bool'

I suspect this might be related to the Python icalendar module, but I do not have enough understanding to be confident.

I have a workaround, listed below, so I am now able to view calendar information in mutt. Thank you very much!

Example problem exchange2010.ics:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:trimmed from Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY;LANGUAGE=en-US:Outlook invite problematic.
DTSTART;TZID=Eastern Standard Time:20150601T143000
END:VEVENT
END:VCALENDAR

Output of mutt-ics exchange2010.ics

Traceback (most recent call last):
  File "/home/hrabbey/.local/bin/mutt-ics", line 135, in <module>
    main(sys.argv)
  File "/home/hrabbey/.local/bin/mutt-ics", line 129, in main
    output = get_interesting_stuff(cal)
  File "/home/hrabbey/.local/bin/mutt-ics", line 52, in get_interesting_stuff
    c = get_component(component)
  File "/home/hrabbey/.local/bin/mutt-ics", line 65, in get_component
    return get_event(component)
  File "/home/hrabbey/.local/bin/mutt-ics", line 114, in get_event
    result = filter(bool, [get_header(e),
  File "/home/hrabbey/.local/bin/mutt-ics", line 80, in get_header
    vals.append(('DTSTART', e['DTSTART'].dt.strftime(datefmt)))
TypeError: tzinfo.dst() must return None or timedelta, not 'bool'

If the VTIMEZONE section is removed, the issue is not seen.
If DAYLIGHT part of VTIMEZONE is removed, the issue also goes away.
If DAYLIGHT is wrapped with its own VTIMEZONE, the issue also goes away.

Work around:
mutt-ics works on my system by changing my .mailcap to:

text/calendar; sed -e "/^BEGIN:VTIMEZONE/,/^END:VTIMEZONE/d" - | mutt-ics; copiousoutput
application/ics; sed -e "/^BEGIN:VTIMEZONE/,/^END:VTIMEZONE/d" - | mutt-ics; copiousoutput

Environment:
Debian 7.8
mutt-ics installed by:

sudo apt-get install python-pip python-virtualenv
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
pipsi install mutt_ics

ValueError: astimezone() cannot be applied to a naive datetime

I get the following error with Python 2 as well as Python 3:

Traceback (most recent call last):
  File "mutt_ics.py", line 158, in <module>
    entry_point()
  File "mutt_ics.py", line 154, in entry_point
    return main(sys.argv)
  File "mutt_ics.py", line 148, in main
    output = get_interesting_stuff(cal)
  File "mutt_ics.py", line 56, in get_interesting_stuff
    c = get_component(component)
  File "mutt_ics.py", line 69, in get_component
    return get_event(component)
  File "mutt_ics.py", line 132, in get_event
    result = filter(bool, [get_header(e),
  File "mutt_ics.py", line 103, in get_header
    get_val('DTSTART', format_date)
  File "mutt_ics.py", line 99, in get_val
    vals.append((name_map[name], f(e[name])))
  File "mutt_ics.py", line 80, in format_date
    date_or_time = x.dt.astimezone(tz.tzlocal())
ValueError: astimezone() cannot be applied to a naive datetime

ICS file:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:W. Europe Standard Time
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DESCRIPTION;LANGUAGE=de-DE:\n
DTSTART;TZID=W. Europe Standard Time:20170317T113000
DTEND;TZID=W. Europe Standard Time:20170317T120000
UID:040000008200E00074C5B7101A82E0080000000070D49594829ED201000000000000000
 0100000004E818B43FD05E041B4860AB201D19D00
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20170316T172442Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=de-DE:Telko
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:370161633
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DISALLOW-COUNTER:FALSE
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR

Any way to view both html and ics?

This is very helpful - thanks!

I most commonly get emails with a multipart-alternative combination of html and plain and ics. Now when I select the ics attachment, I see the calendar information, nicely formatted, which is very nice.

But by default, mutt only shows me the html content (via w3m), since I have this in my .muttrc:

alternative_order text/html text/enriched text/plain text

Is there any way to configure mutt so that I view both the html content and the ics content, one before the other, by default?

NoneType exception when DTSTART is invalid

In calendar.ics:

DTSTART:T00Z
DTEND:T00Z

Result:

Traceback (most recent call last):
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 80, in format_date
    date_or_time = x.dt.astimezone(tz.tzlocal())
AttributeError: 'NoneType' object has no attribute 'dt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/pipx/venvs/mutt_ics/bin/mutt-ics", line 8, in <module>
    sys.exit(entry_point())
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 154, in entry_point
    return main(sys.argv)
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 148, in main
    output = get_interesting_stuff(cal)
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 56, in get_interesting_stuff
    c = get_component(component)
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 69, in get_component
    return get_event(component)
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 132, in get_event
    result = filter(bool, [get_header(e),
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 103, in get_header
    get_val('DTSTART', format_date)
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 99, in get_val
    vals.append((name_map[name], f(e[name])))
  File "/home/user/.local/pipx/venvs/mutt_ics/lib/python3.7/site-packages/mutt_ics/mutt_ics.py", line 82, in format_date
    date_or_time = x.dt
AttributeError: 'NoneType' object has no attribute 'dt'

ValueError: astimezone() cannot be applied to a naive datetime

framstag@diaspora:~/Downloads: /usr/local/bin/mutt-ics weekly_english_refresher_for_staff__online_.ics
Traceback (most recent call last):
File "/usr/local/bin/mutt-ics", line 11, in
sys.exit(entry_point())
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 154, in entry_point
return main(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 148, in main
output = get_interesting_stuff(cal)
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 56, in get_interesting_stuff
c = get_component(component)
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 69, in get_component
return get_event(component)
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 132, in get_event
result = filter(bool, [get_header(e),
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 103, in get_header
get_val('DTSTART', format_date)
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 99, in get_val
vals.append((name_map[name], f(e[name])))
File "/usr/local/lib/python2.7/dist-packages/mutt_ics/mutt_ics.py", line 80, in format_date
date_or_time = x.dt.astimezone(tz.tzlocal())
ValueError: astimezone() cannot be applied to a naive datetime

Add LICENSE file

I should have noted it in previous issue, apologize. Could you please also add LICENSE/COPYING file into both github repo and pypi tarball?

utf-8?

I have a calendar entry with Norwegian characters in the DESCRIPTION part (ø,æ,å) and this causes the script to abort.

Stack trace on Ubuntu 16.10.

[-- Autoview using mutt-ics --]
[-- Autoview stderr of mutt-ics --]
Traceback (most recent call last):
  File "/home/hniemine/.local/bin//mutt-ics", line 11, in <module>
    sys.exit(entry_point())
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 150, in entry_point
    return main(sys.argv)
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 144, in main
    output = get_interesting_stuff(cal)
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 56, in get_interesting_stuff
    c = get_component(component)
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 69, in get_component
    return get_event(component)
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 128, in get_event
    result = filter(bool, [get_header(e),
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 99, in get_header
    get_val('DTSTART', format_date)
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 95, in get_val
    vals.append((name_map[name], f(e[name])))
  File "/home/hniemine/.local/lib/python3.5/site-packages/mutt_ics/mutt_ics.py", line 79, in format_date
    return x.dt.astimezone(tz.tzlocal()).strftime(datefmt)
AttributeError: 'datetime.date' object has no attribute 'astimezone'

Has possibly something to do with repeating events or events lasting for several days since happens with only some ics files.

$ pip3 show mutt-ics
---
Metadata-Version: 2.0
Name: mutt-ics
Version: 0.7
Summary: A tool to show calendar event details in Mutt.
Home-page: https://github.com/dmedvinsky/mutt-ics
Author: Dmitry Medvinsky
Author-email: [email protected]
Installer: pip
License: MIT
Location: /home/hniemine/.local/lib/python3.5/site-packages
Requires: icalendar
Classifiers:
  Development Status :: 3 - Alpha
  License :: OSI Approved :: MIT License
Entry-points:
  [console_scripts]
  mutt-ics = mutt_ics.mutt_ics:entry_point
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Working event:

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(UTC+02:00) Helsinki\, Kyiv\, Riga\, Sofia\, Tallinn\, Vilnius
BEGIN:STANDARD
DTSTART:16010101T040000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=trhd:MAILTO:[email protected]
DESCRIPTION;LANGUAGE=en-US:foobar\n
SUMMARY;LANGUAGE=en-US:test event
DTSTART;TZID="(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius":2016
 1224T080000
DTEND;TZID="(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius":201612
 25T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20161222T131417Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
END:VEVENT
END:VCALENDAR

Broken event:

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(UTC+02:00) Helsinki\, Kyiv\, Riga\, Sofia\, Tallinn\, Vilnius
BEGIN:STANDARD
DTSTART:16010101T040000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=trhd:MAILTO:[email protected]
DESCRIPTION;LANGUAGE=en-US:foobar\n
SUMMARY;LANGUAGE=en-US:test event
DTSTART;VALUE=DATE:20161224
DTEND;VALUE=DATE:20161226
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20161222T131538Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
END:VEVENT
END:VCALENDAR

Reply to calendar invitations

Thanks for the script, it is really helpful. I was wondering, how can I reply 'accept' or 'decline' to outlook invitations, do you know how that works?

mutt-ics script isn't installed with execute permission

I recently installed mutt_ics from pypi and noticed that the mutt-ics script was installed without execute permission.

Here's a snippet of console output:

campbr9:~/ $ pip install --user mutt_ics
Collecting mutt-ics
Requirement already satisfied (use --upgrade to upgrade): icalendar>=3.9.0 in /localhome/campbr9/.local/lib/python3.4/site-packages (from mutt-ics)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /localhome/campbr9/.local/lib/python3.4/site-packages (from icalendar>=3.9.0->mutt-ics)
Requirement already satisfied (use --upgrade to upgrade): python-dateutil in /localhome/campbr9/.local/lib/python3.4/site-packages (from icalendar>=3.9.0->mutt-ics)
Requirement already satisfied (use --upgrade to upgrade): pytz in /localhome/campbr9/.local/lib/python3.4/site-packages (from icalendar>=3.9.0->mutt-ics)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5 in /localhome/campbr9/.local/lib/python3.4/site-packages (from python-dateutil->icalendar>=3.9.0->mutt-ics)
Installing collected packages: mutt-ics
Successfully installed mutt-ics-0.5
campbr9:~/ $ ls -l ~/.local/bin/mutt-ics 
-rw-rw-r-- 1 campbr9 campbr9 4277 May  4 13:15 /localhome/campbr9/.local/bin/mutt-ics

This is odd because it seems to have the correct permissions in the git repo.

Enhancement: Display Comment in calendar entries

Thanks much for mutt-ics. I find it very useful.

A feature enhancement that would be helpful is if it could also display the first 10 lines of "COMMENT:", and append "..." if more than 10 lines.

This would also help / be an alternate implementation of #5.

Comment is used as sort of the e-mail body in calendar replies / entries, and are hidden in the current version. For the calendar entries from Outlook I have examined, it is a copy of of the plain text and HTML versions.

For viewing a long, large comment, it is easy enough for me, (and better in mutt in my opinion) to switch to the text or HTML version of the attachment via mutt's view-attachments menu. However, with no indication of a comment existing, I have missed that there was more content available.

Example of current behavior and an example file is below.

hrabbey@localhost:~ $ pipsi upgrade mutt-ics                                                                                          
Requirement already up-to-date: mutt-ics in ./.local/venvs/mutt-ics/lib/python2.7/site-packages
Requirement already up-to-date: icalendar>=3.9.0 in ./.local/venvs/mutt-ics/lib/python2.7/site-packages (from mutt-ics)
Requirement already up-to-date: python-dateutil in ./.local/venvs/mutt-ics/lib/python2.7/site-packages (from icalendar>=3.9.0->mutt-ics)
Requirement already up-to-date: pytz in ./.local/venvs/mutt-ics/lib/python2.7/site-packages (from icalendar>=3.9.0->mutt-ics)
Requirement already up-to-date: setuptools in ./.local/venvs/mutt-ics/lib/python2.7/site-packages (from icalendar>=3.9.0->mutt-ics)
Cleaning up...
hrabbey@localhost:~ $ mutt-ics declined_with_comment.ics 
Subject:   Declined: Meeting Request
Organizer: [email protected]
Start:     Thursday, 06 October 2016, 14:00 EDT
End:       Thursday, 06 October 2016, 15:00 EDT
Location:  Conference Room
Participants:
    [email protected]

declined_with_comment.ics is

BEGIN:VCALENDAR
METHOD:REPLY
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Howard Abbey:MAILTO:[email protected]
ATTENDEE;PARTSTAT=DECLINED;CN=Coworker on Outlook:MAILTO:pitiable.coworker
 @example.com
COMMENT;LANGUAGE=en-US:Hello Howard\,\n\nThank you to make schedule at this
  time. Unfortunately\, I haven’t come to Michigan yet. Please tell other
  person\, or if possible\, please change the date.\n\nBest regards...
SUMMARY;LANGUAGE=en-US:Declined: Meeting Request
DTSTART;TZID=Eastern Standard Time:20161006T140000
DTEND;TZID=Eastern Standard Time:20161006T150000
UID:040000008200E00074C5B7101A82E0080000000050C13B98E61ED201000000000000000
 010000000CC45D2BE3422D34D9B21CBFABA861D35
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20161006T053443Z
TRANSP:OPAQUE  
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:Conference Room
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:-400185376
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR

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.