pywgit

This is a python script to download repos from github It takes the login name (wcmckee in my case) and downloads the repos of github user (the system login name). It downloads it to the home dir. The program checks if you have local folders that are also on github. It will skip them from downloading from github.

This notebook also contains a project using new zealand transport data - cameras from around the country. It is a xml file that is opened and converted to a python dict. It is also converted to a json object, for giggles. I am always working with for loops and lists in python and rarely with dict. This project was perfect to getting me back to using dict. There is no python module for nz transport data so i had to work from xml (json doesn't seem to be an option). I had never converted xml over to python dict so it was a great chance to give it a go. During the process I felt I lost lots of work. Maybe it's because I'm working on a enourmous notebook. I have problems with getting the xml file and reading it. NZ Transport requires a login to access the data. I couldn't figure out how to get this to work with requests, but managed to run bash and curl then just save the output to file (linkz).


In [4]:
from github import Github
import os
import getpass
import git

In [5]:
theuser = getpass.getuser()

muliti support for user names - cycle through a list, user input, and get username from login.


In [6]:
usergen = ['ipython', 'wcmckee', 'drhealsgood', 'hamipy']

In [7]:
for us in usergen:
    print us


ipython
wcmckee
drhealsgood
hamipy

In [8]:
g = Github()

In [9]:
gitlist = []

In [10]:
searchpy = g.search_repositories(theuser)

In [11]:
typy = g.search_users(theuser)

In [12]:
blehgit = g.search_repositories('reddit')

oh man, what have i got happening here. This started with a way of downloading repos in bulk from a user and ive started to bring in more github module. Here I am searching repositories on github for reddit. What things could i get it to search for?

  • list
  • search your repos on global to find similar named ones.

In [13]:
repolis = []

In [14]:
print repolis


[]

In [15]:
for bleh in blehgit:
    repolis.append(bleh)
    #print bleh.full_name


---------------------------------------------------------------------------
GithubException                           Traceback (most recent call last)
<ipython-input-15-59f642db6a33> in <module>()
----> 1 for bleh in blehgit:
      2     repolis.append(bleh)
      3     #print bleh.full_name

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in __iter__(self)
     46             yield element
     47         while self._couldGrow():
---> 48             newElements = self._grow()
     49             for element in newElements:
     50                 yield element

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in _grow(self)
     58 
     59     def _grow(self):
---> 60         newElements = self._fetchNextPage()
     61         self.__elements += newElements
     62         return newElements

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in _fetchNextPage(self)
    156             "GET",
    157             self.__nextUrl,
--> 158             parameters=self.__nextParams
    159         )
    160 

/usr/local/lib/python2.7/dist-packages/github/Requester.pyc in requestJsonAndCheck(self, verb, url, parameters, headers, input, cnx)
    167 
    168     def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None, cnx=None):
--> 169         return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
    170 
    171     def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None):

/usr/local/lib/python2.7/dist-packages/github/Requester.pyc in __check(self, status, responseHeaders, output)
    175         output = self.__structuredFromJson(output)
    176         if status >= 400:
--> 177             raise self.__createException(status, responseHeaders, output)
    178         return responseHeaders, output
    179 

GithubException: 403 {u'documentation_url': u'https://developer.github.com/v3/#rate-limiting', u'message': u"API rate limit exceeded for 74.50.51.32. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"}

I'm having a problem with auth! Need to get myself loged in here. Needs better security for logging in. - SSH Key? - hash the password

What to do with all the output i am geting from searching. appending it into a list. maybe turn to dict? Make a rest feed?


In [ ]:
for blzgit in blehgit:
    print blzgit.name

In [16]:
print blehgit.totalCount


3902

In [17]:
print typy.totalCount


---------------------------------------------------------------------------
GithubException                           Traceback (most recent call last)
<ipython-input-17-a5ba91e4db60> in <module>()
----> 1 print typy.totalCount

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in totalCount(self)
    123     def totalCount(self):
    124         if not self.__totalCount:
--> 125             self._grow()
    126 
    127         return self.__totalCount

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in _grow(self)
     58 
     59     def _grow(self):
---> 60         newElements = self._fetchNextPage()
     61         self.__elements += newElements
     62         return newElements

/usr/local/lib/python2.7/dist-packages/github/PaginatedList.pyc in _fetchNextPage(self)
    156             "GET",
    157             self.__nextUrl,
--> 158             parameters=self.__nextParams
    159         )
    160 

/usr/local/lib/python2.7/dist-packages/github/Requester.pyc in requestJsonAndCheck(self, verb, url, parameters, headers, input, cnx)
    167 
    168     def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None, cnx=None):
--> 169         return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
    170 
    171     def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None):

/usr/local/lib/python2.7/dist-packages/github/Requester.pyc in __check(self, status, responseHeaders, output)
    175         output = self.__structuredFromJson(output)
    176         if status >= 400:
--> 177             raise self.__createException(status, responseHeaders, output)
    178         return responseHeaders, output
    179 

GithubException: 403 {u'documentation_url': u'https://developer.github.com/v3/#rate-limiting', u'message': u"API rate limit exceeded for 107.170.136.184. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)"}

In [18]:
print typy


<github.PaginatedList.PaginatedList instance at 0x383ba70>

In [19]:
gepy = g.get_organization('brobeur')

In [20]:
gepy.email


Out[20]:
u'github@brobeur.com'

In [297]:
gepy.blog


Out[297]:
u'http://brobeur.com'

In [298]:
gepy.url


Out[298]:
u'https://api.github.com/orgs/brobeur'

In [299]:
gepy.created_at


Out[299]:
datetime.datetime(2013, 12, 18, 10, 23, 20)

In [300]:
brorepo.totalCount()


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-300-c956f46f08b9> in <module>()
----> 1 brorepo.totalCount()

AttributeError: 'Repository' object has no attribute 'totalCount'

In [301]:
gepy.public_repos


Out[301]:
12

In [302]:
gepic = gepy.avatar_url

In [303]:
gepic


Out[303]:
u'https://avatars.githubusercontent.com/u/6213519?'

In [306]:
with open(gepic, 'wb') as handle:
    response = requests.get(jpgcam, stream=True)

    for block in response.iter_content(1024):
        if not block:
            break
        handle.write(block)


---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-306-9b00f2d53081> in <module>()
----> 1 with open(gepic, 'wb') as handle:
      2     response = requests.get(jpgcam, stream=True)
      3 
      4     for block in response.iter_content(1024):
      5         if not block:

IOError: [Errno 2] No such file or directory: u'https://avatars.githubusercontent.com/u/6213519?'

In [304]:
gepy.type


Out[304]:
u'Organization'

In [307]:
gepy.raw_data


Out[307]:
{u'avatar_url': u'https://avatars.githubusercontent.com/u/6213519?',
 u'blog': u'http://brobeur.com',
 u'company': None,
 u'created_at': u'2013-12-18T10:23:20Z',
 u'email': u'github@brobeur.com',
 u'events_url': u'https://api.github.com/orgs/brobeur/events',
 u'followers': 0,
 u'following': 0,
 u'html_url': u'https://github.com/brobeur',
 u'id': 6213519,
 u'location': u'Hamilton, New Zealand',
 u'login': u'brobeur',
 u'members_url': u'https://api.github.com/orgs/brobeur/members{/member}',
 u'name': u'BroBeur Studios',
 u'public_gists': 0,
 u'public_members_url': u'https://api.github.com/orgs/brobeur/public_members{/member}',
 u'public_repos': 12,
 u'repos_url': u'https://api.github.com/orgs/brobeur/repos',
 u'type': u'Organization',
 u'updated_at': u'2014-04-21T23:34:26Z',
 u'url': u'https://api.github.com/orgs/brobeur'}

In [308]:
print alrepo


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-308-cb8eecb775bd> in <module>()
----> 1 print alrepo

NameError: name 'alrepo' is not defined

In [309]:
brorepo = gepy.get_repo('linux')

In [310]:
brorepo.size


Out[310]:
2520

In [311]:
gepy.get_public_members()


Out[311]:
<github.PaginatedList.PaginatedList instance at 0x3131ef0>

In [311]:


In [312]:
gepy.location


Out[312]:
u'Hamilton, New Zealand'

In [313]:
searchbleh = g.get_api_status()

In [314]:
print searchbleh.status
print searchbleh.last_modified


good
None

In [114]:
searchpy.totalCount


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-114-98c2fa4cd19e> in <module>()
----> 1 searchpy.totalCount

NameError: name 'searchpy' is not defined

In [116]:
import geopy

In [117]:
koapi = ('d2b321e45a2041f19551a3f3b223fce0')

In [118]:
geoloc = geopy.geocoders.GoogleV3()

In [119]:
address = geoloc.geocode('8 Margaret Street Levin')

In [120]:
print address


8 Margaret Street, Levin 5510, New Zealand

In [121]:
address.point


Out[121]:
Point(-40.6165368, 175.277496, 0.0)

In [150]:
for se in searchpy:
    print se.url


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-150-e5b46de80eed> in <module>()
----> 1 for se in searchpy:
      2     print se.url

NameError: name 'searchpy' is not defined

In [160]:
for repo in g.get_user('wcmckee').get_repos():
    gitlist.append(repo.name)

In [152]:
os.mkdir('/home/will/github')


---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-152-0ef0078378ae> in <module>()
----> 1 os.mkdir('/home/will/github')

OSError: [Errno 17] File exists: '/home/will/github'

In [161]:
os.chdir('/home/' + 'will' + '/github')

In [162]:
lisdir = os.listdir('/home/will/github')
curlist = []
for ls in lisdir:
    #print ls
    curlist.append(ls)

In [163]:
dlrepo = list(set(gitlist) - set(curlist))

In [164]:
print dlrepo


[u'RasPiWrite', u'wcmckee.github.io', u'ggj14', u'FinishYourGame-Jam', u'flask', u'game-of-life', u'BroBeurFishingDream', u'flamejam', u'SuburbNightmare', u'pywp-post', u'python-guide', u'TPB', u'autopaintpy123', u'broLove', u'wirepil', u'Bukkit', u'SortPictures', u'Delicious-Chrome-Extension', u'intro_programming', u'compohub', u'pyunderdog', u'python-wordpress-xmlrpc', u'skins', u'ouya-unity-plugin', u'soundcloud-dl', u'pybackupz', u'selfspy', u'gitignore', u'Projects', u'bgj05-hungry', u'BirdCage', u'pyroster', u'iamagamer', u'ipython', u'imgur-python', u'paintingautopy', u'brobeur-web', u'cocos2d-x', u'unityluainterface', u'requests', u'molyjam2013', u'prodo-game', u'reddit_bot', u'DeltaBot', u'marshmallow', u'linux', u'pyladies', u'python-patterns', u'hackage-server', u'pithos', u'bbc2wp', u'Triger', u'RedditPress', u'tweepy', u'pytm', u'Cinnamon', u'HTML5-Tiny', u'miniprojects', u'UniLua', u'raspi', u'UnityLuaIntegration', u'intercity', u'DailyProgBot', u'lolpy', u'UIToolkit', u'Rift-Notes', u'pymel', u'gimp', u'djtm', u'clint', u'bacongamejam05', u'lqt', u'wcmStringPY', u'testRepo', u'RPIO', u'html5lib-python', u'sshuttle', u'python-pandora', u'LD48-Skins', u'gjapi_python', u'battlenet', u'haskell-learn', u'BeOk', u'openfaux-server', u'summingbird', u'Koha', u'xboxdrv', u'massive-wright', u'django', u'python-twitter', u'WordPress', u'ruby-warrior', u'ihaskell-notebook', u'opencompetencies']

In [164]:


In [165]:
'''
for gi in gitlist:
    #print gi
    #git.Git().clone("https://github.com/" + theuser + "/" + dlrepo)
    print ("Downloading: " + theuser + "/" + dlrepo)



'''


Out[165]:
'\nfor gi in gitlist:\n    #print gi\n    #git.Git().clone("https://github.com/" + theuser + "/" + dlrepo)\n    print ("Downloading: " + theuser + "/" + dlrepo)\n\n\n\n'

In [166]:
from clint.textui import colored

In [167]:
for gitbl in dlrepo:
        #print ('Downloading - ' + theuser + " - "  + gitbl)
        print (colored.red('Downloading - ' + 'wcmckee' + " - "  + gitbl))
        git.Git().clone("https://github.com/" + 'wcmckee' + "/" + gitbl)


Downloading - wcmckee - RasPiWrite
Downloading - wcmckee - wcmckee.github.io
Downloading - wcmckee - ggj14
Downloading - wcmckee - FinishYourGame-Jam
Downloading - wcmckee - flask
Downloading - wcmckee - game-of-life
Downloading - wcmckee - BroBeurFishingDream
Downloading - wcmckee - flamejam
Downloading - wcmckee - SuburbNightmare
Downloading - wcmckee - pywp-post
Downloading - wcmckee - python-guide
Downloading - wcmckee - TPB
Downloading - wcmckee - autopaintpy123
Downloading - wcmckee - broLove
Downloading - wcmckee - wirepil
Downloading - wcmckee - Bukkit
Downloading - wcmckee - SortPictures
Downloading - wcmckee - Delicious-Chrome-Extension
Downloading - wcmckee - intro_programming
Downloading - wcmckee - compohub
Downloading - wcmckee - pyunderdog
Downloading - wcmckee - python-wordpress-xmlrpc
Downloading - wcmckee - skins
Downloading - wcmckee - ouya-unity-plugin
Downloading - wcmckee - soundcloud-dl
Downloading - wcmckee - pybackupz
Downloading - wcmckee - selfspy
Downloading - wcmckee - gitignore
Downloading - wcmckee - Projects
Downloading - wcmckee - bgj05-hungry
Downloading - wcmckee - BirdCage
Downloading - wcmckee - pyroster
Downloading - wcmckee - iamagamer
Downloading - wcmckee - ipython
Downloading - wcmckee - imgur-python
Downloading - wcmckee - paintingautopy
Downloading - wcmckee - brobeur-web
Downloading - wcmckee - cocos2d-x
Downloading - wcmckee - unityluainterface
Downloading - wcmckee - requests
Downloading - wcmckee - molyjam2013
Downloading - wcmckee - prodo-game
Downloading - wcmckee - reddit_bot
Downloading - wcmckee - DeltaBot
Downloading - wcmckee - marshmallow
Downloading - wcmckee - linux
Downloading - wcmckee - pyladies
Downloading - wcmckee - python-patterns
Downloading - wcmckee - hackage-server
Downloading - wcmckee - pithos
Downloading - wcmckee - bbc2wp
Downloading - wcmckee - Triger
Downloading - wcmckee - RedditPress
Downloading - wcmckee - tweepy
Downloading - wcmckee - pytm
Downloading - wcmckee - Cinnamon
Downloading - wcmckee - HTML5-Tiny
Downloading - wcmckee - miniprojects
Downloading - wcmckee - UniLua
Downloading - wcmckee - raspi
Downloading - wcmckee - UnityLuaIntegration
Downloading - wcmckee - intercity
Downloading - wcmckee - DailyProgBot
Downloading - wcmckee - lolpy
Downloading - wcmckee - UIToolkit
Downloading - wcmckee - Rift-Notes
Downloading - wcmckee - pymel
Downloading - wcmckee - gimp
Downloading - wcmckee - djtm
Downloading - wcmckee - clint
Downloading - wcmckee - bacongamejam05
Downloading - wcmckee - lqt
Downloading - wcmckee - wcmStringPY
Downloading - wcmckee - testRepo
Downloading - wcmckee - RPIO
Downloading - wcmckee - html5lib-python
Downloading - wcmckee - sshuttle
Downloading - wcmckee - python-pandora
Downloading - wcmckee - LD48-Skins
Downloading - wcmckee - gjapi_python
Downloading - wcmckee - battlenet
Downloading - wcmckee - haskell-learn
Downloading - wcmckee - BeOk
Downloading - wcmckee - openfaux-server
Downloading - wcmckee - summingbird
Downloading - wcmckee - Koha
Downloading - wcmckee - xboxdrv
Downloading - wcmckee - massive-wright
Downloading - wcmckee - django
Downloading - wcmckee - python-twitter
Downloading - wcmckee - WordPress
Downloading - wcmckee - ruby-warrior
Downloading - wcmckee - ihaskell-notebook
Downloading - wcmckee - opencompetencies

In [315]:
def printme( str ):
   "This prints a passed string into this function"
   print str;
   return;

# Now you can call printme function
printme("I'm first call to user defined function!");
printme("Again second call to the same function");


I'm first call to user defined function!
Again second call to the same function

In [607]:
import requests
import json

In [608]:
jamft = requests.get('https://raw.githubusercontent.com/leafo/compohub/master/jams/2014.json')

In [609]:
jamft.text


Out[609]:
u'{\n    "jams": [\n        {\n            "name": "Global Game Jam 2014",\n            "start_date": "2014-01-24 05:00:00 +0000",\n            "end_date": "2014-01-26 05:00:00 +0000",\n            "description": "The Global Game Jam (GGJ) is the world\'s largest game jam event taking place around the world at physical locations. Think of it as a hackathon focused on game development.",\n            "local": true,\n            "url": "http:\\/\\/globalgamejam.org\\/",\n            "tags": [\n                "global-game-jam"\n            ],\n            "image": "jams\\/images\\/21092272484ec673cc161ac7.89017946.png"\n        },\n        {\n            "name": "Nordic Game Jam",\n            "start_date": "2014-02-14 08:00:00 +0000",\n            "end_date": "2014-02-16 03:00:00 +0000",\n            "description": "Nordic Game Jam is the biggest video game industry event in Denmark and one of the largest game jams in the whole world.",\n            "local": false,\n            "url": "http:\\/\\/nordicgamejam.org\\/",\n            "tags": [\n                "nordic-game-jam"\n            ]\n        },\n        {\n            "name": "Mini Ludum Dare #48",\n            "start_date": "2014-01-10",\n            "end_date": "2014-01-12",\n            "description": "Mini Ludum Dares are here to fill the boring months without ordinary Ludum Dares. The host changes every time and so do the rules. It all depends on the host but MiniLDs are often relaxed compared to LDs.",\n            "local": false,\n            "url": "http:\\/\\/www.ludumdare.com\\/compo\\/2013\\/12\\/29\\/minild-48\\/",\n            "tags": [\n                "minild",\n                "ludum-dare"\n            ],\n            "image": "jams\\/images\\/2576340814e81fd09b7e248.82235325.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-02-01",\n            "end_date": "2014-02-28",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-03-01",\n            "end_date": "2014-03-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-04-01",\n            "end_date": "2014-04-30",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-05-01",\n            "end_date": "2014-05-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-06-01",\n            "end_date": "2014-06-30",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-07-01",\n            "end_date": "2014-07-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-08-01",\n            "end_date": "2014-08-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-09-01",\n            "end_date": "2014-09-30",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-10-01",\n            "end_date": "2014-10-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-11-01",\n            "end_date": "2014-11-30",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "One Game a Month",\n            "start_date": "2014-12-01",\n            "end_date": "2014-12-31",\n            "description": "Gamification added to game development. Try to release a new game every month and earn experience points.",\n            "local": true,\n            "url": "http:\\/\\/www.onegameamonth.com",\n            "tags": [\n                "one-game-a-month"\n            ],\n            "image": "jams\\/images\\/screenshot_1362265626.98_0.15127399745.png"\n        },\n        {\n            "name": "GMC JAM #13",\n            "start_date": "2014-01-25 12:00:00 +0000",\n            "end_date": "2014-01-28 12:00:00 +0000",\n            "description": "A 72-hour game jam for <a href=\\"http:\\/\\/www.yoyogames.com\\/gamemaker\\">Game Maker<\\/a> users. Includes prizes.",\n            "local": false,\n            "url": "http:\\/\\/gmc.yoyogames.com\\/index.php?showtopic=606847",\n            "tags": [\n                "gmc-jam"\n            ],\n            "image": "jams\\/images\\/278394084f91d85bd2d4e0.09374261.png"\n        },\n        {\n            "name": "gm(48) #9",\n            "start_date": "2014-01-18 12:00:00 +0000",\n            "end_date": "2014-01-20 12:00:00 +0000",\n            "description": "Born in the Reddit community, the gm(48) occurs once every season. There will be a two-week voting period for the theme, which will be revealed at the start of the competition.",\n            "local": false,\n            "url": "http:\\/\\/www.reddit.com\\/r\\/gamemaker\\/comments\\/1hamju\\/announcement_gm48_rules_and_theme_suggestion\\/",\n            "tags": [\n                "gm-48"\n            ]\n        },\n        {\n            "name": "Candy Jam",\n            "start_date": "2014-01-21",\n            "end_date": "2014-02-03",\n            "description": "A game jam in reaction of a company trademarking a very common noun.",\n            "local": false,\n            "url": "http:\\/\\/candycandycandycandyjam.tumblr.com\\/",\n            "tags": [\n                "candy-jam"\n            ]\n        },\n        {\n            "name": "7 Day Finish Yer Game Jam",\n            "start_date": "2014-02-10 11:59:00 +0000",\n            "end_date": "2014-02-17 11:59:00 +0000",\n            "description": "Use this jam as a deadline for your current game. Start whenever, but finish within these 7 days!",\n            "local": false,\n            "url": "http:\\/\\/gallefray.github.io\\/FinishYourGame-Jam\\/",\n            "tags": [\n                "7-day-finish-yer-game-jam"\n            ]\n        },\n        {\n            "name": "RR Mini Comp: One Screen Cassette 50",\n            "start_date": "2014-01-17",\n            "end_date": "2014-02-17",\n            "description": "Make a crappy one screen remake of another game.",\n            "local": false,\n            "url": "http:\\/\\/retroremakes.com\\/nostalgia\\/2014\\/01\\/17\\/rr-mini-comp-one-screen-cassette-50\\/",\n            "tags": [\n                "retro-remakes"\n            ]\n        },\n        {\n            "name": "GDSE Winter Game Jam",\n            "start_date": "2014-01-31 05:00:00 +0000",\n            "end_date": "2014-02-02 05:00:00 +0000",\n            "description": "A jam hosted by Game Development Stack Exchange.",\n            "local": false,\n            "url": "http:\\/\\/meta.gamedev.stackexchange.com\\/questions\\/1449\\/the-2014-gdse-winter-game-jam",\n            "tags": [\n                "gdse-jam"\n            ]\n        },\n        {\n            "name": "Seven Day Roguelike Challenge",\n            "start_date": "2014-03-08",\n            "end_date": "2014-03-16",\n            "description": "In Seven Day Roguelike Challenge you have a week to build a roguelike. Using pre-existing resources is allowed.",\n            "local": false,\n            "url": "http:\\/\\/7drl.org",\n            "tags": [\n                "seven-day-roguelike-challenge"\n            ],\n            "image": "jams\\/images\\/screenshot_1359836493.39_0.601642125852.png"\n        },\n        {\n            "name": "The Arbitrary Gamejam",\n            "start_date": "2014-02-07 02:00:00 +0000",\n            "end_date": "2014-02-09 02:00:00 +0000",\n            "description": "What is TAG - The Arbitrary Gamejam?\\r\\nI created TAG to try and add something exciting and good natured to the community. \\r\\nThe Arbitrary Gamejam is a weekend game jam with 3 themes designed to promote small and unknown indie developers.\\r\\nAt the end of each TAG, the submissions are rated by the host.\\r\\nThe person who submitted the best game will be \\"tagged\\" and is responsible for hosting the next TAG.\\r\\nThe idea is, as the Gamejam grows more popular, passing the Gamejam around will help small unknown indie developers pull traffic to their websites.\\r\\nBy using a random word generator to generate 2\\/3 themes, TAG is intentionally arbitrary to encourage outside-the-box thinking and wild combinations.\\r\\n\\r\\n\\r\\nWhen is TAG?\\r\\nTAG usually occurs on the first weekend of every month, Friday to Sunday.\\r\\nThe themes for each TAG will be posted on the Thursday before it starts, to give people some time to think about how the themes can fit together.\\r\\nThe Jam Begins at Midnight on Thursday and Ends at Midnight on Sunday.\\r\\n\\r\\n[Go to the Current Hosts site for a Countdown to the next TAG]\\r\\n\\r\\n\\r\\nHow Do I Host?\\r\\nFirst and foremost, you cannot host TAG twice in a row or more than two times in a single year (Unless yours is the only submission). If you end up hosting TAG, you can handle it in any way you want under two conditions.\\r\\nYou must keep the 4 core rules outlined below by linking to this page. This maintains the legitimacy of the jam by identifying you officially as current host and prevents non-tagged people from hosting.\\r\\nThere must be 2 randomly generated themes, the last theme is chosen by you.\\r\\nOther than that you are free to decide how people join and how submissions are rated\\/handled, and any further rules\\/restrictions you want to place on participants.\\r\\n\\r\\n\\r\\nThe 4 Core Rules\\r\\nSubmissions must come in within 12 hours of the Gamejam ending.\\r\\nSubmissions must be original works, no plagiarism.\\r\\nSubmissions can be based on any number of themes, but must incorporate at least 1 of the randomly generated themes.\\r\\nNo Pressure. Just have fun with it. Submissions will still be accepted even if they\'re not complete.\\r\\n- - -\\r\\n\\r\\nTAG History\\r\\n\\r\\nA List of all previous TAGs, their hosts and their entries.\\r\\n\\r\\n#01 - August 2013 - Hosted by TickTakashi\\r\\n[Games]\\r\\n\\r\\n#02 - September 2013 - Hosted by Udell Games\\r\\n[Games]\\r\\n\\r\\n#03 - October 2013 - Hosted by Brendan LoBuglio\\r\\n[Not Yet Started]\\r\\n\\r\\n[TAG #03 Begins on October 11th]",\n            "local": false,\n            "url": "http:\\/\\/www.ticktakashi.com\\/p\\/tag-arbitrary-gamejam.html",\n            "tags": [\n                "the-arbitrary-gamejam"\n            ],\n            "image": "jams\\/images\\/screenshot_1380914266.52_0.935968657593.png"\n        },\n        {\n            "name": "Flappy Jam",\n            "start_date": "2014-02-09",\n            "end_date": "2014-02-24",\n            "description": null,\n            "local": true,\n            "url": "http:\\/\\/itch.io\\/jam\\/flappyjam",\n            "tags": [\n                "itch-io"\n            ],\n            "themes": [\n                "make-a-game-like-flappy-bird"\n            ]\n        },\n        {\n            "name": "games++",\n            "start_date": "2014-03-01 03:00:00 +0000",\n            "end_date": "2014-03-02 01:00:00 +0000",\n            "description": "Organized by Alex Myers + Jeff Thompson, games++ is a local game jam in\\r\\n\\r\\nStevens Institute of Technology\\r\\nVisual Art & Technology Program\\r\\nMorton Building, 2nd Floor\\r\\nHoboken, New Jersey \\r\\n\\r\\nand\\r\\n\\r\\nBellevue University\\r\\nGame Studies Program\\r\\nASB, Basement\\r\\nOmaha, Nebraska\\r\\n",\n            "local": false,\n            "url": "http:\\/\\/gamesplusplus.org\\/",\n            "tags": [\n                "games"\n            ]\n        },\n        {\n            "name": "MiniLD #49",\n            "start_date": "2014-02-21",\n            "end_date": "2014-02-24",\n            "description": "Mini Ludum Dares are here to fill the boring months without ordinary Ludum Dares. The host changes every time and so do the rules. It all depends on the host but MiniLDs are often relaxed compared to LDs.",\n            "local": true,\n            "url": "http:\\/\\/www.ludumdare.com\\/compo\\/2014\\/02\\/15\\/minild-49\\/",\n            "tags": [\n                "minild",\n                "ludum-dare"\n            ],\n            "themes": [\n                "non-human-player"\n            ],\n            "image": "jams\\/images\\/2576340814e81fd09b7e248.82235325.png"\n        },\n        {\n            "name": "Cyberpunk Game Jam 2014",\n            "start_date": "2014-03-01 08:00:00 +0000",\n            "end_date": "2014-03-11 08:00:00 +0000",\n            "description": null,\n            "local": false,\n            "url": "http:\\/\\/www.punkcyb.org\\/",\n            "tags": [\n                "itch-io"\n            ],\n            "themes": [\n                "must-be-cyberpunk-related",\n                "will-be-80-s-based"\n            ]\n        },\n        {\n            "name": "Ludum Dare 29",\n            "start_date": "2014-04-26 01:00:00 +0000",\n            "end_date": "2014-04-29 01:00:00 +0000",\n            "description": "Dual event with 48h competition and 72h jam. The competition has stricter rules than the jam and it\'s only for solo developers but otherwise they are the same.",\n            "local": false,\n            "url": "http:\\/\\/www.ludumdare.com\\/compo\\/",\n            "tags": [\n                "ludum-dare"\n            ],\n            "image": "jams\\/images\\/2576340814e81fd09b7e248.82235325.png"\n        },\n        {\n            "name": "Toronto Independent Game Jam",\n            "start_date": "2014-04-25 10:00:00 -0400",\n            "end_date": "2014-04-27 23:00:00 -0400",\n            "description": "The Toronto Independent Game Jam (TOJam) is a free, annual, open-to-the-public event that attracts a mix of hobbyists, students, and professionals. For some, it\'s an opportunity to try new ideas, for others it\'s a chance to focus. For everyone, it\'s a grand old time!",\n            "local": true,\n            "url": "http:\\/\\/www.tojam.ca\\/",\n            "tags": [\n                "tojam",\n                "toronto"\n            ]\n        },\n        {\n            "name": "FGL Game Jam",\n            "start_date": "2014-03-01 12:00:00 +0000",\n            "end_date": "2014-03-03 12:00:00 +0000",\n            "description": "A forum based 48h jam with prizes. Mobile and web games only.",\n            "local": false,\n            "url": "https:\\/\\/www.fgl.com\\/view_thread.php?thread_id=48101&offset=0#post333237",\n            "tags": [\n                "fgl-game-jam"\n            ]\n        },\n        {\n            "name": "BaconGameJam 07",\n            "start_date": "2014-03-21 10:00:00 +0000",\n            "end_date": "2014-03-23 10:00:00 +0000",\n            "description": "Game jam for everyone. No strict restrictions.",\n            "local": false,\n            "url": "http:\\/\\/bacongamejam.org\\/jams\\/bacongamejam-07\\/",\n            "tags": [\n                "bacongamejam"\n            ],\n            "image": "jams\\/images\\/screenshot_1343586023.16_0.540877325193.png"\n        },\n        {\n            "name": "NaNoRenO 2014",\n            "start_date": "2014-02-28 11:00:00 +0000",\n            "end_date": "2014-03-31 11:00:00 +0000",\n            "description": "NaNoRenO is an event where creators make a game (mostly visual novels) from scratch during the month of March.",\n            "local": false,\n            "url": "http:\\/\\/lemmasoft.renai.us\\/forums\\/viewtopic.php?f=13&t=25262",\n            "tags": [\n                "nanoreno"\n            ]\n        },\n        {\n            "name": "The Arbitrary Game Jam 8",\n            "start_date": "2014-03-08 12:00:00 +0000",\n            "end_date": "2014-03-10 12:00:00 +0000",\n            "description": "What is TAG - The Arbitrary Gamejam?\\r\\nI created TAG to try and add something exciting and good natured to the community. \\r\\nThe Arbitrary Gamejam is a weekend game jam with 3 themes designed to promote small and unknown indie developers.\\r\\nAt the end of each TAG, the submissions are rated by the host.\\r\\nThe person who submitted the best game will be \\"tagged\\" and is responsible for hosting the next TAG.\\r\\nThe idea is, as the Gamejam grows more popular, passing the Gamejam around will help small unknown indie developers pull traffic to their websites.\\r\\nBy using a random word generator to generate 2\\/3 themes, TAG is intentionally arbitrary to encourage outside-the-box thinking and wild combinations.\\r\\n\\r\\n\\r\\nWhen is TAG?\\r\\nTAG usually occurs on the first weekend of every month, Friday to Sunday.\\r\\nThe themes for each TAG will be posted on the Thursday before it starts, to give people some time to think about how the themes can fit together.\\r\\nThe Jam Begins at Midnight on Thursday and Ends at Midnight on Sunday.\\r\\n\\r\\n[Go to the Current Hosts site for a Countdown to the next TAG]\\r\\n\\r\\n\\r\\nHow Do I Host?\\r\\nFirst and foremost, you cannot host TAG twice in a row or more than two times in a single year (Unless yours is the only submission). If you end up hosting TAG, you can handle it in any way you want under two conditions.\\r\\nYou must keep the 4 core rules outlined below by linking to this page. This maintains the legitimacy of the jam by identifying you officially as current host and prevents non-tagged people from hosting.\\r\\nThere must be 2 randomly generated themes, the last theme is chosen by you.\\r\\nOther than that you are free to decide how people join and how submissions are rated\\/handled, and any further rules\\/restrictions you want to place on participants.\\r\\n\\r\\n\\r\\nThe 4 Core Rules\\r\\nSubmissions must come in within 12 hours of the Gamejam ending.\\r\\nSubmissions must be original works, no plagiarism.\\r\\nSubmissions can be based on any number of themes, but must incorporate at least 1 of the randomly generated themes.\\r\\nNo Pressure. Just have fun with it. Submissions will still be accepted even if they\'re not complete.\\r\\n- - -\\r\\n\\r\\nTAG History\\r\\n\\r\\nA List of all previous TAGs, their hosts and their entries.\\r\\n\\r\\n#01 - August 2013 - Hosted by TickTakashi\\r\\n[Games]\\r\\n\\r\\n#02 - September 2013 - Hosted by Udell Games\\r\\n[Games]\\r\\n\\r\\n#03 - October 2013 - Hosted by Brendan LoBuglio\\r\\n[Not Yet Started]\\r\\n\\r\\n[TAG #03 Begins on October 11th]",\n            "local": false,\n            "url": "http:\\/\\/www.ticktakashi.com\\/p\\/tag-arbitrary-gamejam.html",\n            "tags": [\n                "the-arbitrary-gamejam"\n            ],\n            "image": "jams\\/images\\/screenshot_1380914266.52_0.935968657593.png"\n        },\n        {\n            "name": "64Digits Spring Competition",\n            "start_date": "2014-04-01 07:00:00 +0000",\n            "end_date": "2014-04-30 06:59:00 +0000",\n            "description": "64digits is a small, close-knit community focused on game development and artistic endeavours. A few times a year, they host competitions to hone their skills, express ideas, and just to have fun! The contest is held entirely online and everyone is encouraged to participate.",\n            "local": false,\n            "url": "http:\\/\\/competition.64digits.com\\/",\n            "tags": [\n                "64digits"\n            ],\n            "image": "jams\\/images\\/14398886984e81fd1418e4f9.82238073.png"\n        },\n        {\n            "name": "Procedural Death Jam",\n            "start_date": "2014-03-08 12:00:00 +0000",\n            "end_date": "2014-03-15 11:59:00 +0000",\n            "description": "Procedural Death Jam is a 7-day game jam. The theme is \\"Procedural Death Labyrinth,\\" a new way of describing games like FTL, Spelunky, Coin Crypt, The Binding of Isaac, etc, that\'s less awkward than \\"Rogue-Like-LIKE\\" or \\"Rogue-LITE.\\"",\n            "local": false,\n            "url": "http:\\/\\/proceduraldeathjam.com\\/",\n            "tags": [\n                "procedural-death-jam"\n            ]\n        },\n        {\n            "name": "MiniLD #50",\n            "start_date": "2014-03-22",\n            "end_date": "2014-03-24",\n            "description": "Mini Ludum Dares are here to fill the boring months without ordinary Ludum Dares. The host changes every time and so do the rules. It all depends on the host but MiniLDs are often relaxed compared to LDs.",\n            "local": false,\n            "url": "http:\\/\\/bit.ly\\/MiniLD50",\n            "tags": [\n                "minild",\n                "ludum-dare"\n            ],\n            "themes": [\n                "demakes"\n            ],\n            "image": "jams\\/images\\/2576340814e81fd09b7e248.82235325.png"\n        },\n        {\n            "name": "Pi Jam 2014",\n            "start_date": "2014-03-14",\n            "end_date": "2014-03-16",\n            "description": "Pi Jam is a 48-hour game jam themed around \\u00cf\\u20ac, that beautiful mathematical constant. VFS Hat Jam and Microsoft have joined for hosting this jam.",\n            "local": false,\n            "url": "http:\\/\\/pi-jam.com\\/",\n            "tags": [\n                "pi-jam"\n            ]\n        },\n        {\n            "name": "Insanity Jam 2014",\n            "start_date": "2014-04-01 12:00:00 +0000",\n            "end_date": "2014-04-04 11:59:00 +0000",\n            "description": "The Insanity Jam is a relaxed, experimental, game jam that utilizes orteil42\'s random game idea generator. This Jam aims to be inclusive, welcoming game creators anywhere in the world of all skill levels, from newbies to professionals.\\r\\n\\r\\nThe Jam is split into 2 parts: the Main Jam, and the Post Jam, during which developers may clean up their project or make late submissions. ",\n            "local": true,\n            "url": "http:\\/\\/jam.alamantus.com\\/insanity2014\\/viewtopic.php?id=12",\n            "tags": [\n                "insanity-jam"\n            ]\n        },\n        {\n            "name": "PyWeek May 2014",\n            "start_date": "2014-05-11 12:00:00 +0000",\n            "end_date": "2014-05-18 12:00:00 +0000",\n            "description": "A week-long Python game programming challenge that is arranged roughly three times a year. The theme and the winners are chosen by fellow game makers.",\n            "local": false,\n            "url": "http:\\/\\/pyweek.org\\/18\\/",\n            "tags": [\n                "pyweek"\n            ],\n            "image": "jams\\/images\\/2849173764e81fcee271a33.24238708.png"\n        },\n        {\n            "name": "#1Up Norwich Game Jam",\n            "start_date": "2014-04-07 12:00:00 +0000",\n            "end_date": "2014-04-11 12:00:00 +0000",\n            "description": "Make a game within 4 days and win prizes with a total value of over \xa333,000, in a number of categories. The winning games also have the chance to be exhibited in The Forum at a special event later in the year.",\n            "local": false,\n            "url": "http:\\/\\/norwichgamingfestival.wordpress.com\\/create\\/game-jam\\/",\n            "tags": [\n                "1up-norwich-game-jam"\n            ]\n        },\n        {\n            "name": "2014 Spring GDSE GameJam",\n            "start_date": "2014-04-05 12:00:00 +0000",\n            "end_date": "2014-04-07 11:59:00 +0000",\n            "description": "A jam hosted by Game Development Stack Exchange.",\n            "local": false,\n            "url": "http:\\/\\/meta.gamedev.stackexchange.com\\/questions\\/1565\\/the-2014-spring-gdse-gamejam",\n            "tags": [\n                "gdse-jam"\n            ]\n        },\n        {\n            "name": "Level up 2014",\n            "start_date": "2014-03-17 06:01:00 +0000",\n            "end_date": "2014-06-03 07:59:00 +0000",\n            "description": null,\n            "local": false,\n            "url": "http:\\/\\/software.intel.com\\/sites\\/campaigns\\/levelup2014\\/",\n            "tags": [\n                "level-up"\n            ],\n            "image": "jams\\/images\\/553949174f2bd02caa84e1.40172513.png"\n        },\n        {\n            "name": "The Arbitrary Gamejam 9",\n            "start_date": "2014-04-04 07:00:00 +0000",\n            "end_date": "2014-04-06 06:59:00 +0000",\n            "description": "What is TAG - The Arbitrary Gamejam?\\r\\nI created TAG to try and add something exciting and good natured to the community. \\r\\nThe Arbitrary Gamejam is a weekend game jam with 3 themes designed to promote small and unknown indie developers.\\r\\nAt the end of each TAG, the submissions are rated by the host.\\r\\nThe person who submitted the best game will be \\"tagged\\" and is responsible for hosting the next TAG.\\r\\nThe idea is, as the Gamejam grows more popular, passing the Gamejam around will help small unknown indie developers pull traffic to their websites.\\r\\nBy using a random word generator to generate 2\\/3 themes, TAG is intentionally arbitrary to encourage outside-the-box thinking and wild combinations.\\r\\n\\r\\n\\r\\nWhen is TAG?\\r\\nTAG usually occurs on the first weekend of every month, Friday to Sunday.\\r\\nThe themes for each TAG will be posted on the Thursday before it starts, to give people some time to think about how the themes can fit together.\\r\\nThe Jam Begins at Midnight on Thursday and Ends at Midnight on Sunday.\\r\\n\\r\\n[Go to the Current Hosts site for a Countdown to the next TAG]\\r\\n\\r\\n\\r\\nHow Do I Host?\\r\\nFirst and foremost, you cannot host TAG twice in a row or more than two times in a single year (Unless yours is the only submission). If you end up hosting TAG, you can handle it in any way you want under two conditions.\\r\\nYou must keep the 4 core rules outlined below by linking to this page. This maintains the legitimacy of the jam by identifying you officially as current host and prevents non-tagged people from hosting.\\r\\nThere must be 2 randomly generated themes, the last theme is chosen by you.\\r\\nOther than that you are free to decide how people join and how submissions are rated\\/handled, and any further rules\\/restrictions you want to place on participants.\\r\\n\\r\\n\\r\\nThe 4 Core Rules\\r\\nSubmissions must come in within 12 hours of the Gamejam ending.\\r\\nSubmissions must be original works, no plagiarism.\\r\\nSubmissions can be based on any number of themes, but must incorporate at least 1 of the randomly generated themes.\\r\\nNo Pressure. Just have fun with it. Submissions will still be accepted even if they\'re not complete.\\r\\n- - -\\r\\n\\r\\nTAG History\\r\\n\\r\\nA List of all previous TAGs, their hosts and their entries.\\r\\n\\r\\n#01 - August 2013 - Hosted by TickTakashi\\r\\n[Games]\\r\\n\\r\\n#02 - September 2013 - Hosted by Udell Games\\r\\n[Games]\\r\\n\\r\\n#03 - October 2013 - Hosted by Brendan LoBuglio\\r\\n[Not Yet Started]\\r\\n\\r\\n[TAG #03 Begins on October 11th]",\n            "local": false,\n            "url": "http:\\/\\/www.dopplex.net\\/TAG9\\/",\n            "tags": [\n                "the-arbitrary-gamejam"\n            ],\n            "image": "jams\\/images\\/screenshot_1380914266.52_0.935968657593.png"\n        },\n        {\n            "name": "Public Domain Jam",\n            "start_date": "2014-05-17",\n            "end_date": "2014-05-24",\n            "description": "TIRED OF THE CONSTANT FLOOD OF CTHULU AND ZOMBIE GAMES? Part of the reason they\'re everywhere is that they\'re both well known and free to use, and a lot of people who make games aren\'t aware of just how many good stories they\'re carrying around with them. There are SO MANY other stories and characters out there that are also free to use. The list goes on forever, and these are all stories that are free to be remixed and remade by anyone. Whatever the reason, a lot of these stories aren\'t out there in games yet. SO LET\'S MAKE SOME!",\n            "local": false,\n            "url": "http:\\/\\/itch.io\\/jam\\/the-public-domain-jam",\n            "tags": [\n                "public-domain-jam"\n            ],\n            "themes": [\n                "public-domain"\n            ]\n        },\n        {\n            "name": "Gender Jam",\n            "start_date": "2014-04-01",\n            "end_date": "2014-04-30",\n            "description": "Since this jam is not being hosted in a central location there will be no voting and you will need to find a place to post your game. Consider this a more relaxed game jam.  More of a personal challenge for everyone than a competition.",\n            "local": false,\n            "url": "http:\\/\\/www.deviever.com\\/?p=76",\n            "tags": [\n                "gender-jam"\n            ],\n            "themes": [\n                "gender"\n            ]\n        },\n        {\n            "name": "HTML5 Game Jam Paris",\n            "start_date": "2014-05-09 10:00:00 +0000",\n            "end_date": "2014-05-11 07:00:00 +0000",\n            "description": "HTML5 Game Jam Paris is an international event open to professionals, students and other web enthusiasts.\\r\\nDuring this event, teams of graphic artists and developers will battle to make the best game from scratch using the latest open web technologies.\\r\\n\\r\\nThe event will last the whole weekend (9 10 11 may 2014), and tech talks are planned",\n            "local": false,\n            "url": "http:\\/\\/html5gamejam.org\\/",\n            "tags": [\n                "html5-game-jam"\n            ]\n        },\n        {\n            "name": "gm(48) #10",\n            "start_date": "2014-04-18",\n            "end_date": "2014-04-19",\n            "description": "Born in the Reddit community, the gm(48) occurs once every season. There will be a two-week voting period for the theme, which will be revealed at the start of the competition.",\n            "local": false,\n            "url": "http:\\/\\/www.reddit.com\\/r\\/gamemaker",\n            "tags": [\n                "gm-48"\n            ]\n        },\n        {\n            "name": "The Arbitrary Gamejam 10",\n            "start_date": "2014-05-02 07:00:00 -0400",\n            "end_date": "2014-05-12 07:00:00 -0400",\n            "description": "The Arbitrary Gamejam 10 (#TAGJam10) is the tenth game jam in a series of monthly game jams for indie game devs. Each month is hosted by winner of previous month. The Arbitrary Gamejam 10 will run will for 10 days rather than the usual 48/72 hours. Optional Bonus Rule 1: Post about your progress/lessons-learned after each day. Optional Bonus Rule 2: record and post a video of a mother playing the game or giving feedback on it (Mother\'s Day - May 11)",\n            "local": false,\n            "url": "http://tagjam10.idumpling.com",\n            "tags": ["the-arbitrary-gamejam"],\n            "image": "http://tagjam10.idumpling.com/img/card_rotated_gray_320x200.png"\n        },\n        {\n            "name": "Hack3city",\n            "url": "http://hack3city.pl/",\n            "start_date": "2014-05-05",\n            "end_date": "2014-05-11",\n            "description": "Hackaton in Poland. During one of the biggest conference about IT and new media in Poland, there will be possibility to take part in interesting hackhaton. If you want to participate, you have to choose one of the three ways of competition. Every one of this ways are hosted by other companies, such as Intel, Playsoft and Estimote. Spend a nice weekend in Gda\u0144sk and learn something new."\n        },\n        {\n            "name": "Game Changer Game Jam",\n            "url": "http://www.gcgj.org/",\n            "start_date": "2014-05-02 11:40:00 -0700",\n            "end_date": "2014-05-04 05:00:00 -0700",\n            "description": "(Aarhus Denmark) We believe that Game Designers, Gamers and Games together hold an important role in society. That Game designers will be the future engagement hackers, change agents and architects of massive collaborative systems. That Games dealing with political, social and environmental challenges can be an platform for massive change, inspiring Gamers to connect and engage with important issues more effectively."\n        }\n    ]\n}'

In [619]:
compdict = json.loads(jamft.text)

In [625]:
compjam = compdict[u'jams']

In [629]:
lencomp = len(compjam)

In [667]:
import random

In [668]:
genlin = random.randint(0, lencomp)

In [669]:
ggj = compjam[genlin]

In [689]:
jamlis = []

In [690]:
#for gj in ggj.keys():
    #print gj
    #print ggj[gj]

for jec in range(lencomp):
    print compjam[jec][u'name']
    jamlis.append(compjam[jec][u'name'])


Global Game Jam 2014
Nordic Game Jam
Mini Ludum Dare #48
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
One Game a Month
GMC JAM #13
gm(48) #9
Candy Jam
7 Day Finish Yer Game Jam
RR Mini Comp: One Screen Cassette 50
GDSE Winter Game Jam
Seven Day Roguelike Challenge
The Arbitrary Gamejam
Flappy Jam
games++
MiniLD #49
Cyberpunk Game Jam 2014
Ludum Dare 29
Toronto Independent Game Jam
FGL Game Jam
BaconGameJam 07
NaNoRenO 2014
The Arbitrary Game Jam 8
64Digits Spring Competition
Procedural Death Jam
MiniLD #50
Pi Jam 2014
Insanity Jam 2014
PyWeek May 2014
#1Up Norwich Game Jam
2014 Spring GDSE GameJam
Level up 2014
The Arbitrary Gamejam 9
Public Domain Jam
Gender Jam
HTML5 Game Jam Paris
gm(48) #10
The Arbitrary Gamejam 10
Hack3city
Game Changer Game Jam

In [692]:
len(jamlis)


Out[692]:
49

In [695]:
fujamft = list(set(jamlis))

In [700]:
lencv = len(fujamft)

In [704]:
chran = random.randint(0, lencv)

In [705]:
lencv


Out[705]:
39

In [706]:
import re

a = 'a b .c???d;;'
chars = [' ']

print re.sub('[%s]' % ''.join(chars), '-', a)


a-b-.c???d;;

In [707]:
for fuj in fujamft:
    a = 'a b .c???d;;'
    chars = [' ']

    print re.sub('[%s]' % ''.join(chars), '-', a)


a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;
a-b-.c???d;;

In [708]:
fujamft[chran]


Out[708]:
u'Seven Day Roguelike Challenge'

In [709]:
jamlis


Out[709]:
[u'Global Game Jam 2014',
 u'Nordic Game Jam',
 u'Mini Ludum Dare #48',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'One Game a Month',
 u'GMC JAM #13',
 u'gm(48) #9',
 u'Candy Jam',
 u'7 Day Finish Yer Game Jam',
 u'RR Mini Comp: One Screen Cassette 50',
 u'GDSE Winter Game Jam',
 u'Seven Day Roguelike Challenge',
 u'The Arbitrary Gamejam',
 u'Flappy Jam',
 u'games++',
 u'MiniLD #49',
 u'Cyberpunk Game Jam 2014',
 u'Ludum Dare 29',
 u'Toronto Independent Game Jam',
 u'FGL Game Jam',
 u'BaconGameJam 07',
 u'NaNoRenO 2014',
 u'The Arbitrary Game Jam 8',
 u'64Digits Spring Competition',
 u'Procedural Death Jam',
 u'MiniLD #50',
 u'Pi Jam 2014',
 u'Insanity Jam 2014',
 u'PyWeek May 2014',
 u'#1Up Norwich Game Jam',
 u'2014 Spring GDSE GameJam',
 u'Level up 2014',
 u'The Arbitrary Gamejam 9',
 u'Public Domain Jam',
 u'Gender Jam',
 u'HTML5 Game Jam Paris',
 u'gm(48) #10',
 u'The Arbitrary Gamejam 10',
 u'Hack3city',
 u'Game Changer Game Jam']

In [710]:
for mehc in ggj.keys():
    print mehc


description
end_date
tags
url
local
start_date
name

In [631]:
compft = compjam[0:lencomp]

In [633]:
compft.sort


Out[633]:
<function sort>

In [642]:
dictv = compdict.values()

In [645]:
dictv.count('id')


Out[645]:
0

In [ ]: