<?php | |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
*/ | |
include ('include/common.inc.php'); | |
function accept_header($header = false) { | |
// http://jrgns.net/parse_http_accept_header | |
$toret = null; | |
$header = $header ? $header : (array_key_exists('HTTP_ACCEPT', $_SERVER) ? $_SERVER['HTTP_ACCEPT']: false); | |
if ($header) { | |
$types = explode(',', $header); | |
$types = array_map('trim', $types); | |
foreach ($types as $one_type) { | |
$one_type = explode(';', $one_type); | |
$type = array_shift($one_type); | |
if ($type) { | |
list($precedence, $tokens) = self::accept_header_options($one_type); | |
list($main_type, $sub_type) = array_map('trim', explode('/', $type)); | |
$toret[] = array('main_type' => $main_type, 'sub_type' => $sub_type, 'precedence' => (float)$precedence, 'tokens' => $tokens); | |
} | |
} | |
usort($toret, array('Parser', 'compare_media_ranges')); | |
} | |
return $toret; | |
} | |
$json_types = Array("application/json","application/x-javascript","text/javascript","text/x-javascript","text/x-json"); | |
if ($_REQUEST['json']) { | |
$return = getServiceAlertsAsJSON($_REQUEST['filter_class'], $_REQUEST['filter_id']); | |
header('Content-Type: application/json; charset=utf8'); | |
// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/'); | |
header('Access-Control-Max-Age: 3628800'); | |
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); | |
if (isset($_GET['callback'])) { | |
$json = '(' . $return . ');'; //must wrap in parens and end with semicolon | |
//print_r($_GET['callback'] . $json); //callback is prepended for json-p | |
} | |
else | |
echo $return; | |
} | |
?> |
# info | |
# http://stackoverflow.com/questions/4206882/named-entity-recognition-with-preset-list-of-names-for-python-php/4207128#4207128 | |
# http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html approximate dist | |
# http://streamhacker.com/2008/12/29/how-to-train-a-nltk-chunker/ more training | |
# http://www.postgresql.org/docs/9.1/static/pgtrgm.html | |
# data sources | |
# http://twitter.com/#!/ACTEmergencyInf instant site wide | |
# http://twitter.com/#!/ACTPol_Traffic | |
# http://esa.act.gov.au/feeds/currentincidents.xml | |
# source: https://gist.github.com/322906/90dea659c04570757cccf0ce1e6d26c9d06f9283 | |
# to install python -m nltk.downloader punkt | |
import nltk | |
import tweepy | |
import psycopg2 | |
import pickle | |
from iniparse import INIConfig | |
def insert_service_alert_sitewide(heading, message, url): | |
print "NaN" | |
def insert_service_alert_for_street(streets, heading, message, url): | |
conn_string = "host='localhost' dbname='energymapper' user='postgres' password='snmc'" | |
# print the connection string we will use to connect | |
print "Connecting to database\n ->%s" % (conn_string) | |
try: | |
# get a connection, if a connect cannot be made an exception will be raised here | |
conn = psycopg2.connect(conn_string) | |
# conn.cursor will return a cursor object, you can use this cursor to perform queries | |
cursor = conn.cursor() | |
# execute our Query | |
cursor.execute("") | |
# retrieve the records from the database | |
records = cursor.fetchall() | |
for record in records: | |
ys.append(record[0]) | |
# >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) | |
#>>> cur.statusmessage | |
#'INSERT 0 1' | |
except: | |
# Get the most recent exception | |
exceptionType, exceptionValue, exceptionTraceback = sys.exc_info() | |
# Exit the script and print an error telling what happened. | |
sys.exit("Database connection failed!\n ->%s" % (exceptionValue)) | |
def extract_entity_names(t): | |
entity_names = [] | |
if hasattr(t, 'node') and t.node: | |
if t.node == 'NE': | |
entity_names.append(' '.join([child[0] for child in t])) | |
else: | |
for child in t: | |
entity_names.extend(extract_entity_names(child)) | |
return entity_names | |
def extract_names(sample): | |
sentences = nltk.sent_tokenize(sample) | |
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences] | |
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences] | |
chunked_sentences = nltk.batch_ne_chunk(tagged_sentences, binary=True) | |
# chunked/tagged may be enough to just find and match the nouns | |
entity_names = [] | |
for tree in chunked_sentences: | |
# Print results per sentence | |
# print extract_entity_names(tree) | |
entity_names.extend(extract_entity_names(tree)) | |
# Print all entity names | |
#print entity_names | |
# Print unique entity names | |
print set(entity_names) | |
cfg = INIConfig(open('/tmp/aws.ini')) | |
auth = tweepy.OAuthHandler(cfg.api_keys.twitter_consumer_key, cfg.api_keys.twitter_consumer_secret) | |
auth.set_access_token(cfg.api_keys.twitter_access_token, cfg.api_keys.twitter_access_token_secret) | |
#api = tweepy.API(auth) | |
api = tweepy.API() | |
# If the authentication was successful, you should | |
# see the name of the account print out | |
#print api.me().name | |
# https://github.com/tweepy/tweepy/blob/master/tweepy/api.py | |
for status in api.user_timeline(screen_name="ACTPol_Traffic",exclude_replies='true'): | |
print status.text | |
print status.created_at | |
print extract_names(status.text) | |
# print api.update_status(status="test") | |
last_tweet_ids = { "lion": "111", "kitty": "2222" } | |
pickle.dump( last_tweet_ids, open( "save.p", "wb" ) ) | |
last_tweet_ids = pickle.load( open( "save.p", "rb" ) ) |
<?php | |
include ('../include/common.inc.php'); | |
include_header("Service Alerts", "index"); | |
echo '<ul data-role="listview" data-theme="e" data-groupingtheme="e">'; | |
if ($_SESSION['authed'] == true) { | |
echo' <li><a href="servicealert_editor.php"><h3>servicealert_editor</h3> | |
<p>servicealert_editor</p></a></li>'; | |
} | |
echo' <li><a href="servicealert_viewer.php"><h3>Service Alert Viewer</h3> | |
<p>Browse current network alerts</p></a></li>'; | |
echo' </ul>'; | |
?> </div> | |
<?php | |
include_footer() | |
?> | |
<?php | |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
*/ | |
include ('../include/common.inc.php'); | |
auth(); | |
include_header("Service Alert Editor", "serviceAlertEditor"); | |
/** | |
* Currently support: | |
* network inform | |
* stop remove: route patch, stop remove | |
* - stop search | |
* street inform: route inform, stop inform | |
* - street search | |
*/ | |
if (isset($_REQUEST['saveedit'])) { | |
if ($_REQUEST['saveedit'] != "") { | |
updateServiceAlert($_REQUEST['saveedit'], $_REQUEST); | |
} else { | |
addServiceAlert($_REQUEST); | |
} | |
echo "Saved " . $_REQUEST['saveedit']; | |
die(); | |
} | |
if ($_REQUEST['delete']) { | |
$deleteParts = explode(";", $_REQUEST['delete']); | |
deleteInformedAlert($deleteParts[0], $deleteParts[1], $deleteParts[2]); | |
echo "Deleted network inform for {$deleteParts[0]} ({$deleteParts[1]},{$deleteParts[2]})<br>\n"; | |
die(); | |
} | |
if ($_REQUEST['networkinform']) { | |
addInformedAlert($_REQUEST['networkinform'], "agency", "0", "inform"); | |
echo "Added network inform for" . $_REQUEST['networkinform']; | |
die(); | |
} | |
if ($_REQUEST['stopsearch']) { | |
addInformedAlert($_REQUEST['stopsearch'], "stop", $_REQUEST['stopid'], "remove"); | |
echo "Added stop remove for" . $_REQUEST['stopsearch'] . ", stop" . $_REQUEST['stopid'] . "<br>\n"; | |
foreach ($service_periods as $sp) { | |
echo "Remove from $sp routes<br>\n"; | |
foreach (getStopRoutes($_REQUEST['stopid'], $sp) as $route) { | |
addInformedAlert($_REQUEST['stopsearch'], "route", $route['route_id'], "patch"); | |
echo "Added route patch for" . $_REQUEST['stopsearch'] . ", route" . $route['route_id'] . "<br>\n"; | |
} | |
} | |
die(); | |
} | |
if ($_REQUEST['streetsearch']) { | |
echo "Informing stops of street<br>\n"; | |
foreach (getStopsByName($_REQUEST['street']) as $stop) { | |
addInformedAlert($_REQUEST['streetsearch'], "stop", $stop['stop_id'], "inform"); | |
echo "Added stop inform for" . $_REQUEST['streetsearch'] . ", stop" . $stop['stop_id'] . " ". $stop['stop_name']."<br>\n"; | |
foreach ($service_periods as $sp) { | |
echo "Informing $sp routes<br>\n"; | |
foreach (getStopRoutes($stop['stop_id'], $sp) as $route) { | |
addInformedAlert($_REQUEST['streetsearch'], "route", $route['route_id'], "inform"); | |
echo "Added route inform for stop" . $_REQUEST['streetsearch'] . ", route" . $route['route_id'] . "<br>\n"; | |
} | |
} | |
} | |
die(); | |
} | |
?> | |
Active and Future Alerts: | |
<table> | |
<?php | |
foreach (getFutureAlerts() as $alert) { | |
echo "<tr><td>" . date("c", $alert['start']) . "</td><td>" . date("c", $alert['end']) . "</td><td>" . substr($alert['description'], 0, 999) . '</td><td><a href="?edit=' . $alert['id'] . '">edit</a></td></tr>'; | |
} | |
?> | |
</table> | |
<?php | |
$alert = getServiceAlert($_REQUEST['edit']); | |
?> | |
<form action="<?php echo basename(__FILE__); | |
?>" method="get"> | |
<div data-role="fieldcontain"> | |
<label for="startdate"> Start Date</label> | |
<input type="text" name="startdate" id="startdate" value="<?php | |
if ($alert['start']) | |
echo date("c", $alert['start']); | |
else | |
echo date("c", strtotime("0:00")); | |
?>" /> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="enddate"> End Date </label> | |
<input type="text" name="enddate" id="enddate" value="<?php | |
if ($alert['end']) | |
echo date("c", $alert['end']); | |
else | |
echo date("c", strtotime("23:59")); | |
?>" /> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="header">Header</label> | |
<input type="text" name="header" id="header" value="<?php echo $alert['header']; ?>" /> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="description">Description</label> | |
<textarea name="description"> | |
<?php echo $alert['description']; ?></textarea> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="url">URL</label> | |
<input type="text" name="url" id="url" value="<?php echo $alert['url']; ?>" /> | |
</div> | |
<div data-role="fieldcontain"> | |
<label for="cause"> Cause: </label> | |
<select name="cause" id="cause"> | |
<?php | |
foreach ($serviceAlertCause as $key => $value) { | |
echo "<option value=\"$key\"" . ($key === $alert['cause'] ? " SELECTED" : "") . '>' . $value . '</option>'; | |
} | |
?> | |
</select></div> | |
<div data-role="fieldcontain"> | |
<label for="effect"> Effect: </label> | |
<select name="effect" id="effect"> | |
<?php | |
foreach ($serviceAlertEffect as $key => $value) { | |
echo "<option value=\"$key\"" . ($key === $alert['effect'] ? " SELECTED" : "") . '>' . $value . '</option>'; | |
} | |
?> | |
</select></div> | |
<input type="hidden" name="saveedit" value="<?php echo $_REQUEST['edit']; ?>"/> | |
<input type="submit" value="Save"/> | |
</div></form> | |
<?php | |
if ($_REQUEST['edit']) { | |
echo "Informed Entities for ID {$_REQUEST['edit']}:"; | |
echo '<table>'; | |
foreach (getInformedAlerts($_REQUEST['edit'], "", "") as $informed) { | |
echo "<tr><td>{$informed['informed_class']}</td><td>{$informed['informed_id']}</td><td>{$informed['informed_action']}" . '</td><td><a href="?delete=' . $_REQUEST['edit'] . ';' . $informed['informed_class'] . ';' . $informed['informed_id'] . '">delete</a></td></tr>'; | |
} | |
echo '</table>'; | |
?> | |
<form action="<?php echo basename(__FILE__); | |
?>" method="get"> | |
<input type="hidden" name="networkinform" value="<?php echo $_REQUEST['edit']; | |
?>"/> | |
<input type="submit" value="Add Network Inform"/> | |
</form> | |
<form action="<?php echo basename(__FILE__); | |
?>" method="get"> | |
<div data-role="fieldcontain"> | |
<label for="stopid">StopID to remove</label> | |
<input type="text" name="stopid" /> | |
</div> | |
<input type="hidden" name="stopsearch" value="<?php echo $_REQUEST['edit']; | |
?>"/> | |
<input type="submit" value="Stop Search"/> | |
</form> | |
<form action="<?php echo basename(__FILE__); | |
?>" method="get"> | |
<div data-role="fieldcontain"> | |
<label for="street">Street to inform</label> | |
<input type="text" name="street" /> | |
</div> | |
<input type="hidden" name="streetsearch" value="<?php echo $_REQUEST['edit']; | |
?>"/> | |
<input type="submit" value="Street Search"/> | |
</form> | |
<?php | |
} | |
include_footer(); | |
?> |
<?php | |
/* | |
* Copyright 2010,2011 Alexander Sadleir | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this f |