From 846c6d062da92ed4a3f04d634a4942b73752e8de Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 12:35:59 +0100 Subject: [PATCH 1/8] Added some candidates --- db/candidate.csv | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/db/candidate.csv b/db/candidate.csv index 2a97cfb09b..d084040cbe 100644 --- a/db/candidate.csv +++ b/db/candidate.csv @@ -5,3 +5,10 @@ Will Martindale|WillJMartindale|Labour|Battersea Sadiq Khan|SadiqKhan|Labour|Tooting Charlynne Pullen|CharlynnePullen|Labour|Mid Bedfordshire Douglas Carswell|DouglasCarswell|Conservative|Clacton +Stephen Kinnock|SKinnock|Labour|Aberavon +Guto Bebb|GutoBebb|Conservative|Aberconwy +Frank Doran||Labour|Aberdeen North +Anne Begg|annebegg|Labour|Aberdeen South +Pamela Nash|pamela_nash|Labour|Airdrie and Shotts +Gerald Howarth|geraldhowarth|Conservative|Aldershot +Richard Shepherd||Conservative|Aldridge-Brownhills \ No newline at end of file From 42853500ff854814be1257b1ef54f59ba948d6cc Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 12:37:05 +0100 Subject: [PATCH 2/8] Test twitter program to list lists --- bin/list_lists | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 bin/list_lists diff --git a/bin/list_lists b/bin/list_lists new file mode 100755 index 0000000000..376555db39 --- /dev/null +++ b/bin/list_lists @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; + +use Net::Twitter; + +my $t = Net::Twitter->new( + traits => [ 'API::RESTv1_1', 'OAuth' ], + ssl => 1, + consumer_key => $ENV{TE_TW_API_KEY}, + consumer_secret => $ENV{TE_TW_API_SEC}, +); + +my($access_token, $access_token_secret) = restore_tokens(); +if ($access_token && $access_token_secret) { + $t->access_token($access_token); + $t->access_token_secret($access_token_secret); +} + +unless ( $t->authorized ) { + # The client is not yet authorized: Do it now + print "Authorize this app at ", $t->get_authorization_url, " and enter the PIN#\n"; + + my $pin = ; # wait for input + chomp $pin; + + my($access_token, $access_token_secret, $user_id, $screen_name) = $t->request_access_token(verifier => $pin); + save_tokens($access_token, $access_token_secret); # if necessary +} + +foreach my $list (@{$t->list_ownerships->{lists}}) { + say $list->{name}; + foreach my $mem (@{$t->list_members({ list_id => $list->{id} })->{users}}) { + say "* \@$mem->{screen_name}"; + } +} + +sub save_tokens { + my ($access_token, $access_token_secret) = @_; + + open my $tw_fh, '>', '.te_tokens' or die $!; + print $tw_fh "$access_token $access_token_secret"; +} + +sub restore_tokens { + open my $tw_fh, '<', '.te_tokens' or die $!; + + my $tokens = <$tw_fh>; + + return split / /, $tokens; +} From cd35800c0f53ae720d45690aefe5743c1214a6fb Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 12:37:25 +0100 Subject: [PATCH 3/8] Added some new constituency pages. --- c/aberavon.html | 96 ++++++++++++++++++++++++++++++++++++++ c/aberconwy.html | 96 ++++++++++++++++++++++++++++++++++++++ c/aberdeen-n.html | 96 ++++++++++++++++++++++++++++++++++++++ c/aberdeen-s.html | 96 ++++++++++++++++++++++++++++++++++++++ c/airdrie-and-shotts.html | 96 ++++++++++++++++++++++++++++++++++++++ c/aldershot.html | 96 ++++++++++++++++++++++++++++++++++++++ c/aldridge-brownhills.html | 96 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 672 insertions(+) create mode 100644 c/aberavon.html create mode 100644 c/aberconwy.html create mode 100644 c/aberdeen-n.html create mode 100644 c/aberdeen-s.html create mode 100644 c/airdrie-and-shotts.html create mode 100644 c/aldershot.html create mode 100644 c/aldridge-brownhills.html diff --git a/c/aberavon.html b/c/aberavon.html new file mode 100644 index 0000000000..1f3edc0674 --- /dev/null +++ b/c/aberavon.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aberavon + + + + + + + + + + + + + + + +
+
+

Aberavon

+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + diff --git a/c/aberconwy.html b/c/aberconwy.html new file mode 100644 index 0000000000..981102b8c2 --- /dev/null +++ b/c/aberconwy.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aberconwy + + + + + + + + + + + + + + + +
+
+

Aberconwy

+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + diff --git a/c/aberdeen-n.html b/c/aberdeen-n.html new file mode 100644 index 0000000000..41745102ea --- /dev/null +++ b/c/aberdeen-n.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aberdeen North + + + + + + + + + + + + + + + +
+
+

Aberdeen North

+
+
+ + +
+
+
    +
  • Frank Doran (Labour)
  • +
+
+
+
+
+ + + + + + + + + + + + + diff --git a/c/aberdeen-s.html b/c/aberdeen-s.html new file mode 100644 index 0000000000..9f9f784026 --- /dev/null +++ b/c/aberdeen-s.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aberdeen South + + + + + + + + + + + + + + + +
+
+

Aberdeen South

+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + diff --git a/c/airdrie-and-shotts.html b/c/airdrie-and-shotts.html new file mode 100644 index 0000000000..89f6349f2f --- /dev/null +++ b/c/airdrie-and-shotts.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Airdrie and Shotts + + + + + + + + + + + + + + + +
+
+

Airdrie and Shotts

+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + diff --git a/c/aldershot.html b/c/aldershot.html new file mode 100644 index 0000000000..2639f9f219 --- /dev/null +++ b/c/aldershot.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aldershot + + + + + + + + + + + + + + + +
+
+

Aldershot

+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + diff --git a/c/aldridge-brownhills.html b/c/aldridge-brownhills.html new file mode 100644 index 0000000000..d4c33f0d0b --- /dev/null +++ b/c/aldridge-brownhills.html @@ -0,0 +1,96 @@ + + + + + + + + + TwittElection: Aldridge-Brownhills + + + + + + + + + + + + + + + +
+
+

Aldridge-Brownhills

+
+
+ + +
+
+
    +
  • Richard Shepherd (Conservative)
  • +
+
+
+
+
+ + + + + + + + + + + + + From 5e66a2bddd15ba611822a16da04aa405240765aa Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:11:30 +0100 Subject: [PATCH 4/8] Added list_id to constituency table. --- db/constituency.dat | 19 ++----------------- db/twittelect.sql | 3 ++- .../Schema/Result/Constituency.pm | 12 ++++++++++-- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/db/constituency.dat b/db/constituency.dat index a125108c9a..f9eede93b1 100644 --- a/db/constituency.dat +++ b/db/constituency.dat @@ -15,28 +15,13 @@ /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; --- --- Table structure for table `constituency` --- - -DROP TABLE IF EXISTS `constituency`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `constituency` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(200) NOT NULL, - `list_name` varchar(200) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1947 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Dumping data for table `constituency` -- LOCK TABLES `constituency` WRITE; /*!40000 ALTER TABLE `constituency` DISABLE KEYS */; -INSERT INTO `constituency` VALUES (1,'Aberavon','aberavon'),(2,'Aberconwy','aberconwy'),(3,'Aberdeen North','aberdeen-n'),(4,'Aberdeen South','aberdeen-s'),(5,'Airdrie and Shotts','airdrie-and-shotts'),(6,'Aldershot','aldershot'),(7,'Aldridge-Brownhills','aldridge-brownhills'),(8,'Altrincham and Sale West','altrincham-and-sale-w'),(9,'Alyn and Deeside','alyn-and-deeside'),(10,'Amber Valley','amber-valley'),(11,'Angus','angus'),(12,'Arfon','arfon'),(13,'Argyll and Bute','argyll-and-bute'),(14,'Arundel and South Downs','arundel-and-s-downs'),(15,'Ashfield','ashfield'),(16,'Ashford','ashford'),(17,'Ashton-under-Lyne','ashton-under-lyne'),(18,'Aylesbury','aylesbury'),(19,'Ayr, Carrick and Cumnock','ayr-carrick-and-cumnock'),(20,'Banbury','banbury'),(21,'Banff and Buchan','banff-and-buchan'),(22,'Barking','barking'),(23,'Barnsley Central','barnsley-central'),(24,'Barnsley East','barnsley-e'),(25,'Barrow and Furness','barrow-and-furness'),(26,'Basildon and Billericay','basildon-and-billericay'),(27,'Basingstoke','basingstoke'),(28,'Bassetlaw','bassetlaw'),(29,'Bath','bath'),(30,'Batley and Spen','batley-and-spen'),(31,'Battersea','battersea'),(32,'Beaconsfield','beaconsfield'),(33,'Beckenham','beckenham'),(34,'Bedford','bedford'),(35,'Belfast East','belfast-e'),(36,'Belfast North','belfast-n'),(37,'Belfast South','belfast-s'),(38,'Belfast West','belfast-w'),(39,'Bermondsey and Old Southwark','bermondsey-and-old-southwark'),(40,'Berwick-upon-Tweed','berwick-upon-tweed'),(41,'Berwickshire, Roxburgh and Selkirk','berwickshire-roxburgh-and-selkirk'),(42,'Bethnal Green and Bow','bethnal-green-and-bow'),(43,'Beverley and Holderness','beverley-and-holderness'),(44,'Bexhill and Battle','bexhill-and-battle'),(45,'Bexleyheath and Crayford','bexleyheath-and-crayford'),(46,'Birkenhead','birkenhead'),(47,'Birmingham, Edgbaston','birmingham-edgbaston'),(48,'Birmingham, Erdington','birmingham-erdington'),(49,'Birmingham, Hall Green','birmingham-hall-green'),(50,'Birmingham, Hodge Hill','birmingham-hodge-hill'),(51,'Birmingham, Ladywood','birmingham-ladywood'),(52,'Birmingham, Northfield','birmingham-northfield'),(53,'Birmingham, Perry Barr','birmingham-perry-barr'),(54,'Birmingham, Selly Oak','birmingham-selly-oak'),(55,'Birmingham, Yardley','birmingham-yardley'),(56,'Bishop Auckland','bishop-auckland'),(57,'Blackburn','blackburn'),(58,'Blackley and Broughton','blackley-and-broughton'),(59,'Blackpool North and Cleveleys','blackpool-n-and-cleveleys'),(60,'Blackpool South','blackpool-s'),(61,'Blaenau Gwent','blaenau-gwent'),(62,'Blaydon','blaydon'),(63,'Blyth Valley','blyth-valley'),(64,'Bognor Regis and Littlehampton','bognor-regis-and-littlehampton'),(65,'Bolsover','bolsover'),(66,'Bolton North East','bolton-n-e'),(67,'Bolton South East','bolton-s-e'),(68,'Bolton West','bolton-w'),(69,'Bootle','bootle'),(70,'Boston and Skegness','boston-and-skegness'),(71,'Bosworth','bosworth'),(72,'Bournemouth East','bournemouth-e'),(73,'Bournemouth West','bournemouth-w'),(74,'Bracknell','bracknell'),(75,'Bradford East','bradford-e'),(76,'Bradford South','bradford-s'),(77,'Bradford West','bradford-w'),(78,'Braintree','braintree'),(79,'Brecon and Radnorshire','brecon-and-radnorshire'),(80,'Brent Central','brent-central'),(81,'Brent North','brent-n'),(82,'Brentford and Isleworth','brentford-and-isleworth'),(83,'Brentwood and Ongar','brentwood-and-ongar'),(84,'Bridgend','bridgend'),(85,'Bridgwater and West Somerset','bridgwater-and-w-somerset'),(86,'Brigg and Goole','brigg-and-goole'),(87,'Brighton, Kemptown','brighton-kemptown'),(88,'Brighton, Pavilion','brighton-pavilion'),(89,'Bristol East','bristol-e'),(90,'Bristol North West','bristol-n-w'),(91,'Bristol South','bristol-s'),(92,'Bristol West','bristol-w'),(93,'Broadland','broadland'),(94,'Bromley and Chislehurst','bromley-and-chislehurst'),(95,'Bromsgrove','bromsgrove'),(96,'Broxbourne','broxbourne'),(97,'Broxtowe','broxtowe'),(98,'Buckingham','buckingham'),(99,'Burnley','burnley'),(100,'Burton','burton'),(101,'Bury North','bury-n'),(102,'Bury South','bury-s'),(103,'Bury St Edmunds','bury-st-edmunds'),(104,'Caerphilly','caerphilly'),(105,'Caithness, Sutherland and Easter Ross','caithness-sutherland-and-easter-ross'),(106,'Calder Valley','calder-valley'),(107,'Camberwell and Peckham','camberwell-and-peckham'),(108,'Camborne and Redruth','camborne-and-redruth'),(109,'Cambridge','cambridge'),(110,'Cannock Chase','cannock-chase'),(111,'Canterbury','canterbury'),(112,'Cardiff Central','cardiff-central'),(113,'Cardiff North','cardiff-n'),(114,'Cardiff South and Penarth','cardiff-s-and-penarth'),(115,'Cardiff West','cardiff-w'),(116,'Carlisle','carlisle'),(117,'Carmarthen East and Dinefwr','carmarthen-e-and-dinefwr'),(118,'Carmarthen West and South Pembrokeshire','carmarthen-w-and-s-pembrokeshire'),(119,'Carshalton and Wallington','carshalton-and-wallington'),(120,'Castle Point','castle-point'),(121,'Central Ayrshire','central-ayrshire'),(122,'Central Devon','central-devon'),(123,'Central Suffolk and North Ipswich','central-suffolk-and-n-ipswich'),(124,'Ceredigion','ceredigion'),(125,'Charnwood','charnwood'),(126,'Chatham and Aylesford','chatham-and-aylesford'),(127,'Cheadle','cheadle'),(128,'Chelmsford','chelmsford'),(129,'Chelsea and Fulham','chelsea-and-fulham'),(130,'Cheltenham','cheltenham'),(131,'Chesham and Amersham','chesham-and-amersham'),(132,'Chesterfield','chesterfield'),(133,'Chichester','chichester'),(134,'Chingford and Woodford Green','chingford-and-woodford-green'),(135,'Chippenham','chippenham'),(136,'Chipping Barnet','chipping-barnet'),(137,'Chorley','chorley'),(138,'Christchurch','christchurch'),(139,'Cities of London and Westminster','cities-of-london-and-westminster'),(140,'City of Chester','city-of-chester'),(141,'City of Durham','city-of-durham'),(142,'Clacton','clacton'),(143,'Cleethorpes','cleethorpes'),(144,'Clwyd South','clwyd-s'),(145,'Clwyd West','clwyd-w'),(146,'Coatbridge, Chryston and Bellshill','coatbridge-chryston-and-bellshill'),(147,'Colchester','colchester'),(148,'Colne Valley','colne-valley'),(149,'Congleton','congleton'),(150,'Copeland','copeland'),(151,'Corby','corby'),(152,'Coventry North East','coventry-n-e'),(153,'Coventry North West','coventry-n-w'),(154,'Coventry South','coventry-s'),(155,'Crawley','crawley'),(156,'Crewe and Nantwich','crewe-and-nantwich'),(157,'Croydon Central','croydon-central'),(158,'Croydon North','croydon-n'),(159,'Croydon South','croydon-s'),(160,'Cumbernauld, Kilsyth and Kirkintilloch East','cumbernauld-kilsyth-and-kirkintilloch-e'),(161,'Cynon Valley','cynon-valley'),(162,'Dagenham and Rainham','dagenham-and-rainham'),(163,'Darlington','darlington'),(164,'Dartford','dartford'),(165,'Daventry','daventry'),(166,'Delyn','delyn'),(167,'Denton and Reddish','denton-and-reddish'),(168,'Derby North','derby-n'),(169,'Derby South','derby-s'),(170,'Derbyshire Dales','derbyshire-dales'),(171,'Devizes','devizes'),(172,'Dewsbury','dewsbury'),(173,'Don Valley','don-valley'),(174,'Doncaster Central','doncaster-central'),(175,'Doncaster North','doncaster-n'),(176,'Dover','dover'),(177,'Dudley North','dudley-n'),(178,'Dudley South','dudley-s'),(179,'Dulwich and West Norwood','dulwich-and-w-norwood'),(180,'Dumfries and Galloway','dumfries-and-galloway'),(181,'Dumfriesshire, Clydesdale and Tweeddale','dumfriesshire-clydesdale-and-tweeddale'),(182,'Dundee East','dundee-e'),(183,'Dundee West','dundee-w'),(184,'Dunfermline and West Fife','dunfermline-and-w-fife'),(185,'Dwyfor Meirionnydd','dwyfor-meirionnydd'),(186,'Ealing Central and Acton','ealing-central-and-acton'),(187,'Ealing North','ealing-n'),(188,'Ealing, Southall','ealing-southall'),(189,'Easington','easington'),(190,'East Antrim','e-antrim'),(191,'East Devon','e-devon'),(192,'East Dunbartonshire','e-dunbartonshire'),(193,'East Ham','e-ham'),(194,'East Hampshire','e-hampshire'),(195,'East Kilbride, Strathaven and Lesmahagow','e-kilbride-strathaven-and-lesmahagow'),(196,'East Londonderry','e-londonderry'),(197,'East Lothian','e-lothian'),(198,'East Renfrewshire','e-renfrewshire'),(199,'East Surrey','e-surrey'),(200,'East Worthing and Shoreham','e-worthing-and-shoreham'),(201,'East Yorkshire','e-yorkshire'),(202,'Eastbourne','eastbourne'),(203,'Eastleigh','eastleigh'),(204,'Eddisbury','eddisbury'),(205,'Edinburgh East','edinburgh-e'),(206,'Edinburgh North and Leith','edinburgh-n-and-leith'),(207,'Edinburgh South','edinburgh-s'),(208,'Edinburgh South West','edinburgh-s-w'),(209,'Edinburgh West','edinburgh-w'),(210,'Edmonton','edmonton'),(211,'Ellesmere Port and Neston','ellesmere-port-and-neston'),(212,'Elmet and Rothwell','elmet-and-rothwell'),(213,'Eltham','eltham'),(214,'Enfield North','enfield-n'),(215,'Enfield, Southgate','enfield-southgate'),(216,'Epping Forest','epping-forest'),(217,'Epsom and Ewell','epsom-and-ewell'),(218,'Erewash','erewash'),(219,'Erith and Thamesmead','erith-and-thamesmead'),(220,'Esher and Walton','esher-and-walton'),(221,'Exeter','exeter'),(222,'Falkirk','falkirk'),(223,'Fareham','fareham'),(224,'Faversham and Mid Kent','faversham-and-mid-kent'),(225,'Feltham and Heston','feltham-and-heston'),(226,'Fermanagh and South Tyrone','fermanagh-and-s-tyrone'),(227,'Filton and Bradley Stoke','filton-and-bradley-stoke'),(228,'Finchley and Golders Green','finchley-and-golders-green'),(229,'Folkestone and Hythe','folkestone-and-hythe'),(230,'Forest of Dean','forest-of-dean'),(231,'Foyle','foyle'),(232,'Fylde','fylde'),(233,'Gainsborough','gainsborough'),(234,'Garston and Halewood','garston-and-halewood'),(235,'Gateshead','gateshead'),(236,'Gedling','gedling'),(237,'Gillingham and Rainham','gillingham-and-rainham'),(238,'Glasgow Central','glasgow-central'),(239,'Glasgow East','glasgow-e'),(240,'Glasgow North','glasgow-n'),(241,'Glasgow North East','glasgow-n-e'),(242,'Glasgow North West','glasgow-n-w'),(243,'Glasgow South','glasgow-s'),(244,'Glasgow South West','glasgow-s-w'),(245,'Glenrothes','glenrothes'),(246,'Gloucester','gloucester'),(247,'Gordon','gordon'),(248,'Gosport','gosport'),(249,'Gower','gower'),(250,'Grantham and Stamford','grantham-and-stamford'),(251,'Gravesham','gravesham'),(252,'Great Grimsby','great-grimsby'),(253,'Great Yarmouth','great-yarmouth'),(254,'Greenwich and Woolwich','greenwich-and-woolwich'),(255,'Guildford','guildford'),(256,'Hackney North and Stoke Newington','hackney-n-and-stoke-newington'),(257,'Hackney South and Shoreditch','hackney-s-and-shoreditch'),(258,'Halesowen and Rowley Regis','halesowen-and-rowley-regis'),(259,'Halifax','halifax'),(260,'Haltemprice and Howden','haltemprice-and-howden'),(261,'Halton','halton'),(262,'Hammersmith','hammersmith'),(263,'Hampstead and Kilburn','hampstead-and-kilburn'),(264,'Harborough','harborough'),(265,'Harlow','harlow'),(266,'Harrogate and Knaresborough','harrogate-and-knaresborough'),(267,'Harrow East','harrow-e'),(268,'Harrow West','harrow-w'),(269,'Hartlepool','hartlepool'),(270,'Harwich and North Essex','harwich-and-n-essex'),(271,'Hastings and Rye','hastings-and-rye'),(272,'Havant','havant'),(273,'Hayes and Harlington','hayes-and-harlington'),(274,'Hazel Grove','hazel-grove'),(275,'Hemel Hempstead','hemel-hempstead'),(276,'Hemsworth','hemsworth'),(277,'Hendon','hendon'),(278,'Henley','henley'),(279,'Hereford and South Herefordshire','hereford-and-s-herefordshire'),(280,'Hertford and Stortford','hertford-and-stortford'),(281,'Hertsmere','hertsmere'),(282,'Hexham','hexham'),(283,'Heywood and Middleton','heywood-and-middleton'),(284,'High Peak','high-peak'),(285,'Hitchin and Harpenden','hitchin-and-harpenden'),(286,'Holborn and St Pancras','holborn-and-st-pancras'),(287,'Hornchurch and Upminster','hornchurch-and-upminster'),(288,'Hornsey and Wood Green','hornsey-and-wood-green'),(289,'Horsham','horsham'),(290,'Houghton and Sunderland South','houghton-and-sunderland-s'),(291,'Hove','hove'),(292,'Huddersfield','huddersfield'),(293,'Huntingdon','huntingdon'),(294,'Hyndburn','hyndburn'),(295,'Ilford North','ilford-n'),(296,'Ilford South','ilford-s'),(297,'Inverclyde','inverclyde'),(298,'Inverness, Nairn, Badenoch and Strathspey','inverness-nairn-badenoch-and-strathspey'),(299,'Ipswich','ipswich'),(300,'Isle of Wight','isle-of-wight'),(301,'Islington North','islington-n'),(302,'Islington South and Finsbury','islington-s-and-finsbury'),(303,'Islwyn','islwyn'),(304,'Jarrow','jarrow'),(305,'Keighley','keighley'),(306,'Kenilworth and Southam','kenilworth-and-southam'),(307,'Kensington','kensington'),(308,'Kettering','kettering'),(309,'Kilmarnock and Loudoun','kilmarnock-and-loudoun'),(310,'Kingston and Surbiton','kingston-and-surbiton'),(311,'Kingston upon Hull East','kingston-upon-hull-e'),(312,'Kingston upon Hull North','kingston-upon-hull-n'),(313,'Kingston upon Hull West and Hessle','kingston-upon-hull-w-and-hessle'),(314,'Kingswood','kingswood'),(315,'Kirkcaldy and Cowdenbeath','kirkcaldy-and-cowdenbeath'),(316,'Knowsley','knowsley'),(317,'Lagan Valley','lagan-valley'),(318,'Lanark and Hamilton East','lanark-and-hamilton-e'),(319,'Lancaster and Fleetwood','lancaster-and-fleetwood'),(320,'Leeds Central','leeds-central'),(321,'Leeds East','leeds-e'),(322,'Leeds North East','leeds-n-e'),(323,'Leeds North West','leeds-n-w'),(324,'Leeds West','leeds-w'),(325,'Leicester East','leicester-e'),(326,'Leicester South','leicester-s'),(327,'Leicester West','leicester-w'),(328,'Leigh','leigh'),(329,'Lewes','lewes'),(330,'Lewisham East','lewisham-e'),(331,'Lewisham West and Penge','lewisham-w-and-penge'),(332,'Lewisham, Deptford','lewisham-deptford'),(333,'Leyton and Wanstead','leyton-and-wanstead'),(334,'Lichfield','lichfield'),(335,'Lincoln','lincoln'),(336,'Linlithgow and East Falkirk','linlithgow-and-e-falkirk'),(337,'Liverpool, Riverside','liverpool-riverside'),(338,'Liverpool, Walton','liverpool-walton'),(339,'Liverpool, Wavertree','liverpool-wavertree'),(340,'Liverpool, West Derby','liverpool-w-derby'),(341,'Livingston','livingston'),(342,'Llanelli','llanelli'),(343,'Loughborough','loughborough'),(344,'Louth and Horncastle','louth-and-horncastle'),(345,'Ludlow','ludlow'),(346,'Luton North','luton-n'),(347,'Luton South','luton-s'),(348,'Macclesfield','macclesfield'),(349,'Maidenhead','maidenhead'),(350,'Maidstone and The Weald','maidstone-and-the-weald'),(351,'Makerfield','makerfield'),(352,'Maldon','maldon'),(353,'Manchester Central','manchester-central'),(354,'Manchester, Gorton','manchester-gorton'),(355,'Manchester, Withington','manchester-withington'),(356,'Mansfield','mansfield'),(357,'Meon Valley','meon-valley'),(358,'Meriden','meriden'),(359,'Merthyr Tydfil and Rhymney','merthyr-tydfil-and-rhymney'),(360,'Mid Bedfordshire','mid-bedfordshire'),(361,'Mid Derbyshire','mid-derbyshire'),(362,'Mid Dorset and North Poole','mid-dorset-and-n-poole'),(363,'Mid Norfolk','mid-norfolk'),(364,'Mid Sussex','mid-sussex'),(365,'Mid Ulster','mid-ulster'),(366,'Mid Worcestershire','mid-worcestershire'),(367,'Middlesbrough','middlesbrough'),(368,'Middlesbrough South and East Cleveland','middlesbrough-s-and-e-cleveland'),(369,'Midlothian','midlothian'),(370,'Milton Keynes North','milton-keynes-n'),(371,'Milton Keynes South','milton-keynes-s'),(372,'Mitcham and Morden','mitcham-and-morden'),(373,'Mole Valley','mole-valley'),(374,'Monmouth','monmouth'),(375,'Montgomeryshire','montgomeryshire'),(376,'Moray','moray'),(377,'Morecambe and Lunesdale','morecambe-and-lunesdale'),(378,'Morley and Outwood','morley-and-outwood'),(379,'Motherwell and Wishaw','motherwell-and-wishaw'),(380,'Na h-Eileanan an Iar','na-h-eileanan-an-iar'),(381,'Neath','neath'),(382,'New Forest East','new-forest-e'),(383,'New Forest West','new-forest-w'),(384,'Newark','newark'),(385,'Newbury','newbury'),(386,'Newcastle upon Tyne Central','newcastle-upon-tyne-central'),(387,'Newcastle upon Tyne East','newcastle-upon-tyne-e'),(388,'Newcastle upon Tyne North','newcastle-upon-tyne-n'),(389,'Newcastle-under-Lyme','newcastle-under-lyme'),(390,'Newport East','newport-e'),(391,'Newport West','newport-w'),(392,'Newry and Armagh','newry-and-armagh'),(393,'Newton Abbot','newton-abbot'),(394,'Normanton, Pontefract and Castleford','normanton-pontefract-and-castleford'),(395,'North Antrim','n-antrim'),(396,'North Ayrshire and Arran','n-ayrshire-and-arran'),(397,'North Cornwall','n-cornwall'),(398,'North Devon','n-devon'),(399,'North Dorset','n-dorset'),(400,'North Down','n-down'),(401,'North Durham','n-durham'),(402,'North East Bedfordshire','n-e-bedfordshire'),(403,'North East Cambridgeshire','n-e-cambridgeshire'),(404,'North East Derbyshire','n-e-derbyshire'),(405,'North East Fife','n-e-fife'),(406,'North East Hampshire','n-e-hampshire'),(407,'North East Hertfordshire','n-e-hertfordshire'),(408,'North East Somerset','n-e-somerset'),(409,'North Herefordshire','n-herefordshire'),(410,'North Norfolk','n-norfolk'),(411,'North Shropshire','n-shropshire'),(412,'North Somerset','n-somerset'),(413,'North Swindon','n-swindon'),(414,'North Thanet','n-thanet'),(415,'North Tyneside','n-tyneside'),(416,'North Warwickshire','n-warwickshire'),(417,'North West Cambridgeshire','n-w-cambridgeshire'),(418,'North West Durham','n-w-durham'),(419,'North West Hampshire','n-w-hampshire'),(420,'North West Leicestershire','n-w-leicestershire'),(421,'North West Norfolk','n-w-norfolk'),(422,'North Wiltshire','n-wiltshire'),(423,'Northampton North','northampton-n'),(424,'Northampton South','northampton-s'),(425,'Norwich North','norwich-n'),(426,'Norwich South','norwich-s'),(427,'Nottingham East','nottingham-e'),(428,'Nottingham North','nottingham-n'),(429,'Nottingham South','nottingham-s'),(430,'Nuneaton','nuneaton'),(431,'Ochil and South Perthshire','ochil-and-s-perthshire'),(432,'Ogmore','ogmore'),(433,'Old Bexley and Sidcup','old-bexley-and-sidcup'),(434,'Oldham East and Saddleworth','oldham-e-and-saddleworth'),(435,'Oldham West and Royton','oldham-w-and-royton'),(436,'Orkney and Shetland','orkney-and-shetland'),(437,'Orpington','orpington'),(438,'Oxford East','oxford-e'),(439,'Oxford West and Abingdon','oxford-w-and-abingdon'),(440,'Paisley and Renfrewshire North','paisley-and-renfrewshire-n'),(441,'Paisley and Renfrewshire South','paisley-and-renfrewshire-s'),(442,'Pendle','pendle'),(443,'Penistone and Stocksbridge','penistone-and-stocksbridge'),(444,'Penrith and The Border','penrith-and-the-border'),(445,'Perth and North Perthshire','perth-and-n-perthshire'),(446,'Peterborough','peterborough'),(447,'Plymouth, Moor View','plymouth-moor-view'),(448,'Plymouth, Sutton and Devonport','plymouth-sutton-and-devonport'),(449,'Pontypridd','pontypridd'),(450,'Poole','poole'),(451,'Poplar and Limehouse','poplar-and-limehouse'),(452,'Portsmouth North','portsmouth-n'),(453,'Portsmouth South','portsmouth-s'),(454,'Preseli Pembrokeshire','preseli-pembrokeshire'),(455,'Preston','preston'),(456,'Pudsey','pudsey'),(457,'Putney','putney'),(458,'Rayleigh and Wickford','rayleigh-and-wickford'),(459,'Reading East','reading-e'),(460,'Reading West','reading-w'),(461,'Redcar','redcar'),(462,'Redditch','redditch'),(463,'Reigate','reigate'),(464,'Rhondda','rhondda'),(465,'Ribble Valley','ribble-valley'),(466,'Richmond (Yorks)','richmond-yorks-'),(467,'Richmond Park','richmond-park'),(468,'Rochdale','rochdale'),(469,'Rochester and Strood','rochester-and-strood'),(470,'Rochford and Southend East','rochford-and-southend-e'),(471,'Romford','romford'),(472,'Romsey and Southampton North','romsey-and-southampton-n'),(473,'Ross, Skye and Lochaber','ross-skye-and-lochaber'),(474,'Rossendale and Darwen','rossendale-and-darwen'),(475,'Rother Valley','rother-valley'),(476,'Rotherham','rotherham'),(477,'Rugby','rugby'),(478,'Ruislip, Northwood and Pinner','ruislip-northwood-and-pinner'),(479,'Runnymede and Weybridge','runnymede-and-weybridge'),(480,'Rushcliffe','rushcliffe'),(481,'Rutherglen and Hamilton West','rutherglen-and-hamilton-w'),(482,'Rutland and Melton','rutland-and-melton'),(483,'Saffron Walden','saffron-walden'),(484,'Salford and Eccles','salford-and-eccles'),(485,'Salisbury','salisbury'),(486,'Scarborough and Whitby','scarborough-and-whitby'),(487,'Scunthorpe','scunthorpe'),(488,'Sedgefield','sedgefield'),(489,'Sefton Central','sefton-central'),(490,'Selby and Ainsty','selby-and-ainsty'),(491,'Sevenoaks','sevenoaks'),(492,'Sheffield Central','sheffield-central'),(493,'Sheffield South East','sheffield-s-e'),(494,'Sheffield, Brightside and Hillsborough','sheffield-brightside-and-hillsborough'),(495,'Sheffield, Hallam','sheffield-hallam'),(496,'Sheffield, Heeley','sheffield-heeley'),(497,'Sherwood','sherwood'),(498,'Shipley','shipley'),(499,'Shrewsbury and Atcham','shrewsbury-and-atcham'),(500,'Sittingbourne and Sheppey','sittingbourne-and-sheppey'),(501,'Skipton and Ripon','skipton-and-ripon'),(502,'Sleaford and North Hykeham','sleaford-and-n-hykeham'),(503,'Slough','slough'),(504,'Solihull','solihull'),(505,'Somerton and Frome','somerton-and-frome'),(506,'South Antrim','s-antrim'),(507,'South Basildon and East Thurrock','s-basildon-and-e-thurrock'),(508,'South Cambridgeshire','s-cambridgeshire'),(509,'South Derbyshire','s-derbyshire'),(510,'South Dorset','s-dorset'),(511,'South Down','s-down'),(512,'South East Cambridgeshire','s-e-cambridgeshire'),(513,'South East Cornwall','s-e-cornwall'),(514,'South Holland and The Deepings','s-holland-and-the-deepings'),(515,'South Leicestershire','s-leicestershire'),(516,'South Norfolk','s-norfolk'),(517,'South Northamptonshire','s-northamptonshire'),(518,'South Ribble','s-ribble'),(519,'South Shields','s-shields'),(520,'South Staffordshire','s-staffordshire'),(521,'South Suffolk','s-suffolk'),(522,'South Swindon','s-swindon'),(523,'South Thanet','s-thanet'),(524,'South West Bedfordshire','s-w-bedfordshire'),(525,'South West Devon','s-w-devon'),(526,'South West Hertfordshire','s-w-hertfordshire'),(527,'South West Norfolk','s-w-norfolk'),(528,'South West Surrey','s-w-surrey'),(529,'South West Wiltshire','s-w-wiltshire'),(530,'Southampton, Itchen','southampton-itchen'),(531,'Southampton, Test','southampton-test'),(532,'Southend West','southend-w'),(533,'Southport','southport'),(534,'Spelthorne','spelthorne'),(535,'St Albans','st-albans'),(536,'St Austell and Newquay','st-austell-and-newquay'),(537,'St Helens North','st-helens-n'),(538,'St Helens South and Whiston','st-helens-s-and-whiston'),(539,'St Ives','st-ives'),(540,'Stafford','stafford'),(541,'Staffordshire Moorlands','staffordshire-moorlands'),(542,'Stalybridge and Hyde','stalybridge-and-hyde'),(543,'Stevenage','stevenage'),(544,'Stirling','stirling'),(545,'Stockport','stockport'),(546,'Stockton North','stockton-n'),(547,'Stockton South','stockton-s'),(548,'Stoke-on-Trent Central','stoke-on-trent-central'),(549,'Stoke-on-Trent North','stoke-on-trent-n'),(550,'Stoke-on-Trent South','stoke-on-trent-s'),(551,'Stone','stone'),(552,'Stourbridge','stourbridge'),(553,'Strangford','strangford'),(554,'Stratford-on-Avon','stratford-on-avon'),(555,'Streatham','streatham'),(556,'Stretford and Urmston','stretford-and-urmston'),(557,'Stroud','stroud'),(558,'Suffolk Coastal','suffolk-coastal'),(559,'Sunderland Central','sunderland-central'),(560,'Surrey Heath','surrey-heath'),(561,'Sutton and Cheam','sutton-and-cheam'),(562,'Sutton Coldfield','sutton-coldfield'),(563,'Swansea East','swansea-e'),(564,'Swansea West','swansea-w'),(565,'Tamworth','tamworth'),(566,'Tatton','tatton'),(567,'Taunton Deane','taunton-deane'),(568,'Telford','telford'),(569,'Tewkesbury','tewkesbury'),(570,'The Cotswolds','the-cotswolds'),(571,'The Wrekin','the-wrekin'),(572,'Thirsk and Malton','thirsk-and-malton'),(573,'Thornbury and Yate','thornbury-and-yate'),(574,'Thurrock','thurrock'),(575,'Tiverton and Honiton','tiverton-and-honiton'),(576,'Tonbridge and Malling','tonbridge-and-malling'),(577,'Tooting','tooting'),(578,'Torbay','torbay'),(579,'Torfaen','torfaen'),(580,'Torridge and West Devon','torridge-and-w-devon'),(581,'Totnes','totnes'),(582,'Tottenham','tottenham'),(583,'Truro and Falmouth','truro-and-falmouth'),(584,'Tunbridge Wells','tunbridge-wells'),(585,'Twickenham','twickenham'),(586,'Tynemouth','tynemouth'),(587,'Upper Bann','upper-bann'),(588,'Uxbridge and South Ruislip','uxbridge-and-s-ruislip'),(589,'Vale of Clwyd','vale-of-clwyd'),(590,'Vale of Glamorgan','vale-of-glamorgan'),(591,'Vauxhall','vauxhall'),(592,'Wakefield','wakefield'),(593,'Wallasey','wallasey'),(594,'Walsall North','walsall-n'),(595,'Walsall South','walsall-s'),(596,'Walthamstow','walthamstow'),(597,'Wansbeck','wansbeck'),(598,'Wantage','wantage'),(599,'Warley','warley'),(600,'Warrington North','warrington-n'),(601,'Warrington South','warrington-s'),(602,'Warwick and Leamington','warwick-and-leamington'),(603,'Washington and Sunderland West','washington-and-sunderland-w'),(604,'Watford','watford'),(605,'Waveney','waveney'),(606,'Wealden','wealden'),(607,'Weaver Vale','weaver-vale'),(608,'Wellingborough','wellingborough'),(609,'Wells','wells'),(610,'Welwyn Hatfield','welwyn-hatfield'),(611,'Wentworth and Dearne','wentworth-and-dearne'),(612,'West Aberdeenshire and Kincardine','w-aberdeenshire-and-kincardine'),(613,'West Bromwich East','w-bromwich-e'),(614,'West Bromwich West','w-bromwich-west'),(615,'West Dorset','w-dorset'),(616,'West Dunbartonshire','w-dunbartonshire'),(617,'West Ham','w-ham'),(618,'West Lancashire','w-lancashire'),(619,'West Suffolk','w-suffolk'),(620,'West Tyrone','w-tyrone'),(621,'West Worcestershire','w-worcestershire'),(622,'Westminster North','westminster-n'),(623,'Westmorland and Lonsdale','westmorland-and-lonsdale'),(624,'Weston-Super-Mare','weston-super-mare'),(625,'Wigan','wigan'),(626,'Wimbledon','wimbledon'),(627,'Winchester','winchester'),(628,'Windsor','windsor'),(629,'Wirral South','wirral-s'),(630,'Wirral West','wirral-w'),(631,'Witham','witham'),(632,'Witney','witney'),(633,'Woking','woking'),(634,'Wokingham','wokingham'),(635,'Wolverhampton North East','wolverhampton-n-e'),(636,'Wolverhampton South East','wolverhampton-s-e'),(637,'Wolverhampton South West','wolverhampton-s-w'),(638,'Worcester','worcester'),(639,'Workington','workington'),(640,'Worsley and Eccles South','worsley-and-eccles-s'),(641,'Worthing West','worthing-w'),(642,'Wrexham','wrexham'),(643,'Wycombe','wycombe'),(644,'Wyre and Preston North','wyre-and-preston-n'),(645,'Wyre Forest','wyre-forest'),(646,'Wythenshawe and Sale East','wythenshawe-and-sale-e'),(647,'Yeovil','yeovil'),(648,'Ynys Môn','ynys-mon'),(649,'York Central','york-central'),(650,'York Outer','york-outer'); +INSERT INTO `constituency` VALUES (1,'Aberavon','aberavon',NULL),(2,'Aberconwy','aberconwy',NULL),(3,'Aberdeen North','aberdeen-north',NULL),(4,'Aberdeen South','aberdeen-south',NULL),(5,'Airdrie and Shotts','airdrie-and-shotts',NULL),(6,'Aldershot','aldershot',NULL),(7,'Aldridge-Brownhills','aldridge-brownhills',NULL),(8,'Altrincham and Sale West','altrincham-and-sale-w',NULL),(9,'Alyn and Deeside','alyn-and-deeside',NULL),(10,'Amber Valley','amber-valley',NULL),(11,'Angus','angus',NULL),(12,'Arfon','arfon',NULL),(13,'Argyll and Bute','argyll-and-bute',NULL),(14,'Arundel and South Downs','arundel-and-s-downs',NULL),(15,'Ashfield','ashfield',NULL),(16,'Ashford','ashford',NULL),(17,'Ashton-under-Lyne','ashton-under-lyne',NULL),(18,'Aylesbury','aylesbury',NULL),(19,'Ayr, Carrick and Cumnock','ayr-carrick-and-cumnock',NULL),(20,'Banbury','banbury',NULL),(21,'Banff and Buchan','banff-and-buchan',NULL),(22,'Barking','barking',NULL),(23,'Barnsley Central','barnsley-central',NULL),(24,'Barnsley East','barnsley-e',NULL),(25,'Barrow and Furness','barrow-and-furness',NULL),(26,'Basildon and Billericay','basildon-and-billericay',NULL),(27,'Basingstoke','basingstoke',NULL),(28,'Bassetlaw','bassetlaw',NULL),(29,'Bath','bath',NULL),(30,'Batley and Spen','batley-and-spen',NULL),(31,'Battersea','battersea',NULL),(32,'Beaconsfield','beaconsfield',NULL),(33,'Beckenham','beckenham',NULL),(34,'Bedford','bedford',NULL),(35,'Belfast East','belfast-e',NULL),(36,'Belfast North','belfast-n',NULL),(37,'Belfast South','belfast-s',NULL),(38,'Belfast West','belfast-w',NULL),(39,'Bermondsey and Old Southwark','bermondsey-and-old-southwark',NULL),(40,'Berwick-upon-Tweed','berwick-upon-tweed',NULL),(41,'Berwickshire, Roxburgh and Selkirk','berwickshire-roxburgh-and-selkirk',NULL),(42,'Bethnal Green and Bow','bethnal-green-and-bow',NULL),(43,'Beverley and Holderness','beverley-and-holderness',NULL),(44,'Bexhill and Battle','bexhill-and-battle',NULL),(45,'Bexleyheath and Crayford','bexleyheath-and-crayford',NULL),(46,'Birkenhead','birkenhead',NULL),(47,'Birmingham, Edgbaston','birmingham-edgbaston',NULL),(48,'Birmingham, Erdington','birmingham-erdington',NULL),(49,'Birmingham, Hall Green','birmingham-hall-green',NULL),(50,'Birmingham, Hodge Hill','birmingham-hodge-hill',NULL),(51,'Birmingham, Ladywood','birmingham-ladywood',NULL),(52,'Birmingham, Northfield','birmingham-northfield',NULL),(53,'Birmingham, Perry Barr','birmingham-perry-barr',NULL),(54,'Birmingham, Selly Oak','birmingham-selly-oak',NULL),(55,'Birmingham, Yardley','birmingham-yardley',NULL),(56,'Bishop Auckland','bishop-auckland',NULL),(57,'Blackburn','blackburn',NULL),(58,'Blackley and Broughton','blackley-and-broughton',NULL),(59,'Blackpool North and Cleveleys','blackpool-n-and-cleveleys',NULL),(60,'Blackpool South','blackpool-s',NULL),(61,'Blaenau Gwent','blaenau-gwent',NULL),(62,'Blaydon','blaydon',NULL),(63,'Blyth Valley','blyth-valley',NULL),(64,'Bognor Regis and Littlehampton','bognor-regis-and-littlehampton',NULL),(65,'Bolsover','bolsover',NULL),(66,'Bolton North East','bolton-n-e',NULL),(67,'Bolton South East','bolton-s-e',NULL),(68,'Bolton West','bolton-w',NULL),(69,'Bootle','bootle',NULL),(70,'Boston and Skegness','boston-and-skegness',NULL),(71,'Bosworth','bosworth',NULL),(72,'Bournemouth East','bournemouth-e',NULL),(73,'Bournemouth West','bournemouth-w',NULL),(74,'Bracknell','bracknell',NULL),(75,'Bradford East','bradford-e',NULL),(76,'Bradford South','bradford-s',NULL),(77,'Bradford West','bradford-w',NULL),(78,'Braintree','braintree',NULL),(79,'Brecon and Radnorshire','brecon-and-radnorshire',NULL),(80,'Brent Central','brent-central',NULL),(81,'Brent North','brent-n',NULL),(82,'Brentford and Isleworth','brentford-and-isleworth',NULL),(83,'Brentwood and Ongar','brentwood-and-ongar',NULL),(84,'Bridgend','bridgend',NULL),(85,'Bridgwater and West Somerset','bridgwater-and-w-somerset',NULL),(86,'Brigg and Goole','brigg-and-goole',NULL),(87,'Brighton, Kemptown','brighton-kemptown',NULL),(88,'Brighton, Pavilion','brighton-pavilion',NULL),(89,'Bristol East','bristol-e',NULL),(90,'Bristol North West','bristol-n-w',NULL),(91,'Bristol South','bristol-s',NULL),(92,'Bristol West','bristol-w',NULL),(93,'Broadland','broadland',NULL),(94,'Bromley and Chislehurst','bromley-and-chislehurst',NULL),(95,'Bromsgrove','bromsgrove',NULL),(96,'Broxbourne','broxbourne',NULL),(97,'Broxtowe','broxtowe',NULL),(98,'Buckingham','buckingham',NULL),(99,'Burnley','burnley',NULL),(100,'Burton','burton',NULL),(101,'Bury North','bury-n',NULL),(102,'Bury South','bury-s',NULL),(103,'Bury St Edmunds','bury-st-edmunds',NULL),(104,'Caerphilly','caerphilly',NULL),(105,'Caithness, Sutherland and Easter Ross','caithness-sutherland-and-easter-ross',NULL),(106,'Calder Valley','calder-valley',NULL),(107,'Camberwell and Peckham','camberwell-and-peckham',NULL),(108,'Camborne and Redruth','camborne-and-redruth',NULL),(109,'Cambridge','cambridge',NULL),(110,'Cannock Chase','cannock-chase',NULL),(111,'Canterbury','canterbury',NULL),(112,'Cardiff Central','cardiff-central',NULL),(113,'Cardiff North','cardiff-n',NULL),(114,'Cardiff South and Penarth','cardiff-s-and-penarth',NULL),(115,'Cardiff West','cardiff-w',NULL),(116,'Carlisle','carlisle',NULL),(117,'Carmarthen East and Dinefwr','carmarthen-e-and-dinefwr',NULL),(118,'Carmarthen West and South Pembrokeshire','carmarthen-w-and-s-pembrokeshire',NULL),(119,'Carshalton and Wallington','carshalton-and-wallington',NULL),(120,'Castle Point','castle-point',NULL),(121,'Central Ayrshire','central-ayrshire',NULL),(122,'Central Devon','central-devon',NULL),(123,'Central Suffolk and North Ipswich','central-suffolk-and-n-ipswich',NULL),(124,'Ceredigion','ceredigion',NULL),(125,'Charnwood','charnwood',NULL),(126,'Chatham and Aylesford','chatham-and-aylesford',NULL),(127,'Cheadle','cheadle',NULL),(128,'Chelmsford','chelmsford',NULL),(129,'Chelsea and Fulham','chelsea-and-fulham',NULL),(130,'Cheltenham','cheltenham',NULL),(131,'Chesham and Amersham','chesham-and-amersham',NULL),(132,'Chesterfield','chesterfield',NULL),(133,'Chichester','chichester',NULL),(134,'Chingford and Woodford Green','chingford-and-woodford-green',NULL),(135,'Chippenham','chippenham',NULL),(136,'Chipping Barnet','chipping-barnet',NULL),(137,'Chorley','chorley',NULL),(138,'Christchurch','christchurch',NULL),(139,'Cities of London and Westminster','cities-of-london-and-westminster',NULL),(140,'City of Chester','city-of-chester',NULL),(141,'City of Durham','city-of-durham',NULL),(142,'Clacton','clacton',NULL),(143,'Cleethorpes','cleethorpes',NULL),(144,'Clwyd South','clwyd-s',NULL),(145,'Clwyd West','clwyd-w',NULL),(146,'Coatbridge, Chryston and Bellshill','coatbridge-chryston-and-bellshill',NULL),(147,'Colchester','colchester',NULL),(148,'Colne Valley','colne-valley',NULL),(149,'Congleton','congleton',NULL),(150,'Copeland','copeland',NULL),(151,'Corby','corby',NULL),(152,'Coventry North East','coventry-n-e',NULL),(153,'Coventry North West','coventry-n-w',NULL),(154,'Coventry South','coventry-s',NULL),(155,'Crawley','crawley',NULL),(156,'Crewe and Nantwich','crewe-and-nantwich',NULL),(157,'Croydon Central','croydon-central',NULL),(158,'Croydon North','croydon-n',NULL),(159,'Croydon South','croydon-s',NULL),(160,'Cumbernauld, Kilsyth and Kirkintilloch East','cumbernauld-kilsyth-and-kirkintilloch-e',NULL),(161,'Cynon Valley','cynon-valley',NULL),(162,'Dagenham and Rainham','dagenham-and-rainham',NULL),(163,'Darlington','darlington',NULL),(164,'Dartford','dartford',NULL),(165,'Daventry','daventry',NULL),(166,'Delyn','delyn',NULL),(167,'Denton and Reddish','denton-and-reddish',NULL),(168,'Derby North','derby-n',NULL),(169,'Derby South','derby-s',NULL),(170,'Derbyshire Dales','derbyshire-dales',NULL),(171,'Devizes','devizes',NULL),(172,'Dewsbury','dewsbury',NULL),(173,'Don Valley','don-valley',NULL),(174,'Doncaster Central','doncaster-central',NULL),(175,'Doncaster North','doncaster-n',NULL),(176,'Dover','dover',NULL),(177,'Dudley North','dudley-n',NULL),(178,'Dudley South','dudley-s',NULL),(179,'Dulwich and West Norwood','dulwich-and-w-norwood',NULL),(180,'Dumfries and Galloway','dumfries-and-galloway',NULL),(181,'Dumfriesshire, Clydesdale and Tweeddale','dumfriesshire-clydesdale-and-tweeddale',NULL),(182,'Dundee East','dundee-e',NULL),(183,'Dundee West','dundee-w',NULL),(184,'Dunfermline and West Fife','dunfermline-and-w-fife',NULL),(185,'Dwyfor Meirionnydd','dwyfor-meirionnydd',NULL),(186,'Ealing Central and Acton','ealing-central-and-acton',NULL),(187,'Ealing North','ealing-n',NULL),(188,'Ealing, Southall','ealing-southall',NULL),(189,'Easington','easington',NULL),(190,'East Antrim','e-antrim',NULL),(191,'East Devon','e-devon',NULL),(192,'East Dunbartonshire','e-dunbartonshire',NULL),(193,'East Ham','e-ham',NULL),(194,'East Hampshire','e-hampshire',NULL),(195,'East Kilbride, Strathaven and Lesmahagow','e-kilbride-strathaven-and-lesmahagow',NULL),(196,'East Londonderry','e-londonderry',NULL),(197,'East Lothian','e-lothian',NULL),(198,'East Renfrewshire','e-renfrewshire',NULL),(199,'East Surrey','e-surrey',NULL),(200,'East Worthing and Shoreham','e-worthing-and-shoreham',NULL),(201,'East Yorkshire','e-yorkshire',NULL),(202,'Eastbourne','eastbourne',NULL),(203,'Eastleigh','eastleigh',NULL),(204,'Eddisbury','eddisbury',NULL),(205,'Edinburgh East','edinburgh-e',NULL),(206,'Edinburgh North and Leith','edinburgh-n-and-leith',NULL),(207,'Edinburgh South','edinburgh-s',NULL),(208,'Edinburgh South West','edinburgh-s-w',NULL),(209,'Edinburgh West','edinburgh-w',NULL),(210,'Edmonton','edmonton',NULL),(211,'Ellesmere Port and Neston','ellesmere-port-and-neston',NULL),(212,'Elmet and Rothwell','elmet-and-rothwell',NULL),(213,'Eltham','eltham',NULL),(214,'Enfield North','enfield-n',NULL),(215,'Enfield, Southgate','enfield-southgate',NULL),(216,'Epping Forest','epping-forest',NULL),(217,'Epsom and Ewell','epsom-and-ewell',NULL),(218,'Erewash','erewash',NULL),(219,'Erith and Thamesmead','erith-and-thamesmead',NULL),(220,'Esher and Walton','esher-and-walton',NULL),(221,'Exeter','exeter',NULL),(222,'Falkirk','falkirk',NULL),(223,'Fareham','fareham',NULL),(224,'Faversham and Mid Kent','faversham-and-mid-kent',NULL),(225,'Feltham and Heston','feltham-and-heston',NULL),(226,'Fermanagh and South Tyrone','fermanagh-and-s-tyrone',NULL),(227,'Filton and Bradley Stoke','filton-and-bradley-stoke',NULL),(228,'Finchley and Golders Green','finchley-and-golders-green',NULL),(229,'Folkestone and Hythe','folkestone-and-hythe',NULL),(230,'Forest of Dean','forest-of-dean',NULL),(231,'Foyle','foyle',NULL),(232,'Fylde','fylde',NULL),(233,'Gainsborough','gainsborough',NULL),(234,'Garston and Halewood','garston-and-halewood',NULL),(235,'Gateshead','gateshead',NULL),(236,'Gedling','gedling',NULL),(237,'Gillingham and Rainham','gillingham-and-rainham',NULL),(238,'Glasgow Central','glasgow-central',NULL),(239,'Glasgow East','glasgow-e',NULL),(240,'Glasgow North','glasgow-n',NULL),(241,'Glasgow North East','glasgow-n-e',NULL),(242,'Glasgow North West','glasgow-n-w',NULL),(243,'Glasgow South','glasgow-s',NULL),(244,'Glasgow South West','glasgow-s-w',NULL),(245,'Glenrothes','glenrothes',NULL),(246,'Gloucester','gloucester',NULL),(247,'Gordon','gordon',NULL),(248,'Gosport','gosport',NULL),(249,'Gower','gower',NULL),(250,'Grantham and Stamford','grantham-and-stamford',NULL),(251,'Gravesham','gravesham',NULL),(252,'Great Grimsby','great-grimsby',NULL),(253,'Great Yarmouth','great-yarmouth',NULL),(254,'Greenwich and Woolwich','greenwich-and-woolwich',NULL),(255,'Guildford','guildford',NULL),(256,'Hackney North and Stoke Newington','hackney-n-and-stoke-newington',NULL),(257,'Hackney South and Shoreditch','hackney-s-and-shoreditch',NULL),(258,'Halesowen and Rowley Regis','halesowen-and-rowley-regis',NULL),(259,'Halifax','halifax',NULL),(260,'Haltemprice and Howden','haltemprice-and-howden',NULL),(261,'Halton','halton',NULL),(262,'Hammersmith','hammersmith',NULL),(263,'Hampstead and Kilburn','hampstead-and-kilburn',NULL),(264,'Harborough','harborough',NULL),(265,'Harlow','harlow',NULL),(266,'Harrogate and Knaresborough','harrogate-and-knaresborough',NULL),(267,'Harrow East','harrow-e',NULL),(268,'Harrow West','harrow-w',NULL),(269,'Hartlepool','hartlepool',NULL),(270,'Harwich and North Essex','harwich-and-n-essex',NULL),(271,'Hastings and Rye','hastings-and-rye',NULL),(272,'Havant','havant',NULL),(273,'Hayes and Harlington','hayes-and-harlington',NULL),(274,'Hazel Grove','hazel-grove',NULL),(275,'Hemel Hempstead','hemel-hempstead',NULL),(276,'Hemsworth','hemsworth',NULL),(277,'Hendon','hendon',NULL),(278,'Henley','henley',NULL),(279,'Hereford and South Herefordshire','hereford-and-s-herefordshire',NULL),(280,'Hertford and Stortford','hertford-and-stortford',NULL),(281,'Hertsmere','hertsmere',NULL),(282,'Hexham','hexham',NULL),(283,'Heywood and Middleton','heywood-and-middleton',NULL),(284,'High Peak','high-peak',NULL),(285,'Hitchin and Harpenden','hitchin-and-harpenden',NULL),(286,'Holborn and St Pancras','holborn-and-st-pancras',NULL),(287,'Hornchurch and Upminster','hornchurch-and-upminster',NULL),(288,'Hornsey and Wood Green','hornsey-and-wood-green',NULL),(289,'Horsham','horsham',NULL),(290,'Houghton and Sunderland South','houghton-and-sunderland-s',NULL),(291,'Hove','hove',NULL),(292,'Huddersfield','huddersfield',NULL),(293,'Huntingdon','huntingdon',NULL),(294,'Hyndburn','hyndburn',NULL),(295,'Ilford North','ilford-n',NULL),(296,'Ilford South','ilford-s',NULL),(297,'Inverclyde','inverclyde',NULL),(298,'Inverness, Nairn, Badenoch and Strathspey','inverness-nairn-badenoch-and-strathspey',NULL),(299,'Ipswich','ipswich',NULL),(300,'Isle of Wight','isle-of-wight',NULL),(301,'Islington North','islington-n',NULL),(302,'Islington South and Finsbury','islington-s-and-finsbury',NULL),(303,'Islwyn','islwyn',NULL),(304,'Jarrow','jarrow',NULL),(305,'Keighley','keighley',NULL),(306,'Kenilworth and Southam','kenilworth-and-southam',NULL),(307,'Kensington','kensington',NULL),(308,'Kettering','kettering',NULL),(309,'Kilmarnock and Loudoun','kilmarnock-and-loudoun',NULL),(310,'Kingston and Surbiton','kingston-and-surbiton',NULL),(311,'Kingston upon Hull East','kingston-upon-hull-e',NULL),(312,'Kingston upon Hull North','kingston-upon-hull-n',NULL),(313,'Kingston upon Hull West and Hessle','kingston-upon-hull-w-and-hessle',NULL),(314,'Kingswood','kingswood',NULL),(315,'Kirkcaldy and Cowdenbeath','kirkcaldy-and-cowdenbeath',NULL),(316,'Knowsley','knowsley',NULL),(317,'Lagan Valley','lagan-valley',NULL),(318,'Lanark and Hamilton East','lanark-and-hamilton-e',NULL),(319,'Lancaster and Fleetwood','lancaster-and-fleetwood',NULL),(320,'Leeds Central','leeds-central',NULL),(321,'Leeds East','leeds-e',NULL),(322,'Leeds North East','leeds-n-e',NULL),(323,'Leeds North West','leeds-n-w',NULL),(324,'Leeds West','leeds-w',NULL),(325,'Leicester East','leicester-e',NULL),(326,'Leicester South','leicester-s',NULL),(327,'Leicester West','leicester-w',NULL),(328,'Leigh','leigh',NULL),(329,'Lewes','lewes',NULL),(330,'Lewisham East','lewisham-e',NULL),(331,'Lewisham West and Penge','lewisham-w-and-penge',NULL),(332,'Lewisham, Deptford','lewisham-deptford',NULL),(333,'Leyton and Wanstead','leyton-and-wanstead',NULL),(334,'Lichfield','lichfield',NULL),(335,'Lincoln','lincoln',NULL),(336,'Linlithgow and East Falkirk','linlithgow-and-e-falkirk',NULL),(337,'Liverpool, Riverside','liverpool-riverside',NULL),(338,'Liverpool, Walton','liverpool-walton',NULL),(339,'Liverpool, Wavertree','liverpool-wavertree',NULL),(340,'Liverpool, West Derby','liverpool-w-derby',NULL),(341,'Livingston','livingston',NULL),(342,'Llanelli','llanelli',NULL),(343,'Loughborough','loughborough',NULL),(344,'Louth and Horncastle','louth-and-horncastle',NULL),(345,'Ludlow','ludlow',NULL),(346,'Luton North','luton-n',NULL),(347,'Luton South','luton-s',NULL),(348,'Macclesfield','macclesfield',NULL),(349,'Maidenhead','maidenhead',NULL),(350,'Maidstone and The Weald','maidstone-and-the-weald',NULL),(351,'Makerfield','makerfield',NULL),(352,'Maldon','maldon',NULL),(353,'Manchester Central','manchester-central',NULL),(354,'Manchester, Gorton','manchester-gorton',NULL),(355,'Manchester, Withington','manchester-withington',NULL),(356,'Mansfield','mansfield',NULL),(357,'Meon Valley','meon-valley',NULL),(358,'Meriden','meriden',NULL),(359,'Merthyr Tydfil and Rhymney','merthyr-tydfil-and-rhymney',NULL),(360,'Mid Bedfordshire','mid-bedfordshire',NULL),(361,'Mid Derbyshire','mid-derbyshire',NULL),(362,'Mid Dorset and North Poole','mid-dorset-and-n-poole',NULL),(363,'Mid Norfolk','mid-norfolk',NULL),(364,'Mid Sussex','mid-sussex',NULL),(365,'Mid Ulster','mid-ulster',NULL),(366,'Mid Worcestershire','mid-worcestershire',NULL),(367,'Middlesbrough','middlesbrough',NULL),(368,'Middlesbrough South and East Cleveland','middlesbrough-s-and-e-cleveland',NULL),(369,'Midlothian','midlothian',NULL),(370,'Milton Keynes North','milton-keynes-n',NULL),(371,'Milton Keynes South','milton-keynes-s',NULL),(372,'Mitcham and Morden','mitcham-and-morden',NULL),(373,'Mole Valley','mole-valley',NULL),(374,'Monmouth','monmouth',NULL),(375,'Montgomeryshire','montgomeryshire',NULL),(376,'Moray','moray',NULL),(377,'Morecambe and Lunesdale','morecambe-and-lunesdale',NULL),(378,'Morley and Outwood','morley-and-outwood',NULL),(379,'Motherwell and Wishaw','motherwell-and-wishaw',NULL),(380,'Na h-Eileanan an Iar','na-h-eileanan-an-iar',NULL),(381,'Neath','neath',NULL),(382,'New Forest East','new-forest-e',NULL),(383,'New Forest West','new-forest-w',NULL),(384,'Newark','newark',NULL),(385,'Newbury','newbury',NULL),(386,'Newcastle upon Tyne Central','newcastle-upon-tyne-central',NULL),(387,'Newcastle upon Tyne East','newcastle-upon-tyne-e',NULL),(388,'Newcastle upon Tyne North','newcastle-upon-tyne-n',NULL),(389,'Newcastle-under-Lyme','newcastle-under-lyme',NULL),(390,'Newport East','newport-e',NULL),(391,'Newport West','newport-w',NULL),(392,'Newry and Armagh','newry-and-armagh',NULL),(393,'Newton Abbot','newton-abbot',NULL),(394,'Normanton, Pontefract and Castleford','normanton-pontefract-and-castleford',NULL),(395,'North Antrim','n-antrim',NULL),(396,'North Ayrshire and Arran','n-ayrshire-and-arran',NULL),(397,'North Cornwall','n-cornwall',NULL),(398,'North Devon','n-devon',NULL),(399,'North Dorset','n-dorset',NULL),(400,'North Down','n-down',NULL),(401,'North Durham','n-durham',NULL),(402,'North East Bedfordshire','n-e-bedfordshire',NULL),(403,'North East Cambridgeshire','n-e-cambridgeshire',NULL),(404,'North East Derbyshire','n-e-derbyshire',NULL),(405,'North East Fife','n-e-fife',NULL),(406,'North East Hampshire','n-e-hampshire',NULL),(407,'North East Hertfordshire','n-e-hertfordshire',NULL),(408,'North East Somerset','n-e-somerset',NULL),(409,'North Herefordshire','n-herefordshire',NULL),(410,'North Norfolk','n-norfolk',NULL),(411,'North Shropshire','n-shropshire',NULL),(412,'North Somerset','n-somerset',NULL),(413,'North Swindon','n-swindon',NULL),(414,'North Thanet','n-thanet',NULL),(415,'North Tyneside','n-tyneside',NULL),(416,'North Warwickshire','n-warwickshire',NULL),(417,'North West Cambridgeshire','n-w-cambridgeshire',NULL),(418,'North West Durham','n-w-durham',NULL),(419,'North West Hampshire','n-w-hampshire',NULL),(420,'North West Leicestershire','n-w-leicestershire',NULL),(421,'North West Norfolk','n-w-norfolk',NULL),(422,'North Wiltshire','n-wiltshire',NULL),(423,'Northampton North','northampton-n',NULL),(424,'Northampton South','northampton-s',NULL),(425,'Norwich North','norwich-n',NULL),(426,'Norwich South','norwich-s',NULL),(427,'Nottingham East','nottingham-e',NULL),(428,'Nottingham North','nottingham-n',NULL),(429,'Nottingham South','nottingham-s',NULL),(430,'Nuneaton','nuneaton',NULL),(431,'Ochil and South Perthshire','ochil-and-s-perthshire',NULL),(432,'Ogmore','ogmore',NULL),(433,'Old Bexley and Sidcup','old-bexley-and-sidcup',NULL),(434,'Oldham East and Saddleworth','oldham-e-and-saddleworth',NULL),(435,'Oldham West and Royton','oldham-w-and-royton',NULL),(436,'Orkney and Shetland','orkney-and-shetland',NULL),(437,'Orpington','orpington',NULL),(438,'Oxford East','oxford-e',NULL),(439,'Oxford West and Abingdon','oxford-w-and-abingdon',NULL),(440,'Paisley and Renfrewshire North','paisley-and-renfrewshire-n',NULL),(441,'Paisley and Renfrewshire South','paisley-and-renfrewshire-s',NULL),(442,'Pendle','pendle',NULL),(443,'Penistone and Stocksbridge','penistone-and-stocksbridge',NULL),(444,'Penrith and The Border','penrith-and-the-border',NULL),(445,'Perth and North Perthshire','perth-and-n-perthshire',NULL),(446,'Peterborough','peterborough',NULL),(447,'Plymouth, Moor View','plymouth-moor-view',NULL),(448,'Plymouth, Sutton and Devonport','plymouth-sutton-and-devonport',NULL),(449,'Pontypridd','pontypridd',NULL),(450,'Poole','poole',NULL),(451,'Poplar and Limehouse','poplar-and-limehouse',NULL),(452,'Portsmouth North','portsmouth-n',NULL),(453,'Portsmouth South','portsmouth-s',NULL),(454,'Preseli Pembrokeshire','preseli-pembrokeshire',NULL),(455,'Preston','preston',NULL),(456,'Pudsey','pudsey',NULL),(457,'Putney','putney',NULL),(458,'Rayleigh and Wickford','rayleigh-and-wickford',NULL),(459,'Reading East','reading-e',NULL),(460,'Reading West','reading-w',NULL),(461,'Redcar','redcar',NULL),(462,'Redditch','redditch',NULL),(463,'Reigate','reigate',NULL),(464,'Rhondda','rhondda',NULL),(465,'Ribble Valley','ribble-valley',NULL),(466,'Richmond (Yorks)','richmond-yorks-',NULL),(467,'Richmond Park','richmond-park',NULL),(468,'Rochdale','rochdale',NULL),(469,'Rochester and Strood','rochester-and-strood',NULL),(470,'Rochford and Southend East','rochford-and-southend-e',NULL),(471,'Romford','romford',NULL),(472,'Romsey and Southampton North','romsey-and-southampton-n',NULL),(473,'Ross, Skye and Lochaber','ross-skye-and-lochaber',NULL),(474,'Rossendale and Darwen','rossendale-and-darwen',NULL),(475,'Rother Valley','rother-valley',NULL),(476,'Rotherham','rotherham',NULL),(477,'Rugby','rugby',NULL),(478,'Ruislip, Northwood and Pinner','ruislip-northwood-and-pinner',NULL),(479,'Runnymede and Weybridge','runnymede-and-weybridge',NULL),(480,'Rushcliffe','rushcliffe',NULL),(481,'Rutherglen and Hamilton West','rutherglen-and-hamilton-w',NULL),(482,'Rutland and Melton','rutland-and-melton',NULL),(483,'Saffron Walden','saffron-walden',NULL),(484,'Salford and Eccles','salford-and-eccles',NULL),(485,'Salisbury','salisbury',NULL),(486,'Scarborough and Whitby','scarborough-and-whitby',NULL),(487,'Scunthorpe','scunthorpe',NULL),(488,'Sedgefield','sedgefield',NULL),(489,'Sefton Central','sefton-central',NULL),(490,'Selby and Ainsty','selby-and-ainsty',NULL),(491,'Sevenoaks','sevenoaks',NULL),(492,'Sheffield Central','sheffield-central',NULL),(493,'Sheffield South East','sheffield-s-e',NULL),(494,'Sheffield, Brightside and Hillsborough','sheffield-brightside-and-hillsborough',NULL),(495,'Sheffield, Hallam','sheffield-hallam',NULL),(496,'Sheffield, Heeley','sheffield-heeley',NULL),(497,'Sherwood','sherwood',NULL),(498,'Shipley','shipley',NULL),(499,'Shrewsbury and Atcham','shrewsbury-and-atcham',NULL),(500,'Sittingbourne and Sheppey','sittingbourne-and-sheppey',NULL),(501,'Skipton and Ripon','skipton-and-ripon',NULL),(502,'Sleaford and North Hykeham','sleaford-and-n-hykeham',NULL),(503,'Slough','slough',NULL),(504,'Solihull','solihull',NULL),(505,'Somerton and Frome','somerton-and-frome',NULL),(506,'South Antrim','s-antrim',NULL),(507,'South Basildon and East Thurrock','s-basildon-and-e-thurrock',NULL),(508,'South Cambridgeshire','s-cambridgeshire',NULL),(509,'South Derbyshire','s-derbyshire',NULL),(510,'South Dorset','s-dorset',NULL),(511,'South Down','s-down',NULL),(512,'South East Cambridgeshire','s-e-cambridgeshire',NULL),(513,'South East Cornwall','s-e-cornwall',NULL),(514,'South Holland and The Deepings','s-holland-and-the-deepings',NULL),(515,'South Leicestershire','s-leicestershire',NULL),(516,'South Norfolk','s-norfolk',NULL),(517,'South Northamptonshire','s-northamptonshire',NULL),(518,'South Ribble','s-ribble',NULL),(519,'South Shields','s-shields',NULL),(520,'South Staffordshire','s-staffordshire',NULL),(521,'South Suffolk','s-suffolk',NULL),(522,'South Swindon','s-swindon',NULL),(523,'South Thanet','s-thanet',NULL),(524,'South West Bedfordshire','s-w-bedfordshire',NULL),(525,'South West Devon','s-w-devon',NULL),(526,'South West Hertfordshire','s-w-hertfordshire',NULL),(527,'South West Norfolk','s-w-norfolk',NULL),(528,'South West Surrey','s-w-surrey',NULL),(529,'South West Wiltshire','s-w-wiltshire',NULL),(530,'Southampton, Itchen','southampton-itchen',NULL),(531,'Southampton, Test','southampton-test',NULL),(532,'Southend West','southend-w',NULL),(533,'Southport','southport',NULL),(534,'Spelthorne','spelthorne',NULL),(535,'St Albans','st-albans',NULL),(536,'St Austell and Newquay','st-austell-and-newquay',NULL),(537,'St Helens North','st-helens-n',NULL),(538,'St Helens South and Whiston','st-helens-s-and-whiston',NULL),(539,'St Ives','st-ives',NULL),(540,'Stafford','stafford',NULL),(541,'Staffordshire Moorlands','staffordshire-moorlands',NULL),(542,'Stalybridge and Hyde','stalybridge-and-hyde',NULL),(543,'Stevenage','stevenage',NULL),(544,'Stirling','stirling',NULL),(545,'Stockport','stockport',NULL),(546,'Stockton North','stockton-n',NULL),(547,'Stockton South','stockton-s',NULL),(548,'Stoke-on-Trent Central','stoke-on-trent-central',NULL),(549,'Stoke-on-Trent North','stoke-on-trent-n',NULL),(550,'Stoke-on-Trent South','stoke-on-trent-s',NULL),(551,'Stone','stone',NULL),(552,'Stourbridge','stourbridge',NULL),(553,'Strangford','strangford',NULL),(554,'Stratford-on-Avon','stratford-on-avon',NULL),(555,'Streatham','streatham',NULL),(556,'Stretford and Urmston','stretford-and-urmston',NULL),(557,'Stroud','stroud',NULL),(558,'Suffolk Coastal','suffolk-coastal',NULL),(559,'Sunderland Central','sunderland-central',NULL),(560,'Surrey Heath','surrey-heath',NULL),(561,'Sutton and Cheam','sutton-and-cheam',NULL),(562,'Sutton Coldfield','sutton-coldfield',NULL),(563,'Swansea East','swansea-e',NULL),(564,'Swansea West','swansea-w',NULL),(565,'Tamworth','tamworth',NULL),(566,'Tatton','tatton',NULL),(567,'Taunton Deane','taunton-deane',NULL),(568,'Telford','telford',NULL),(569,'Tewkesbury','tewkesbury',NULL),(570,'The Cotswolds','the-cotswolds',NULL),(571,'The Wrekin','the-wrekin',NULL),(572,'Thirsk and Malton','thirsk-and-malton',NULL),(573,'Thornbury and Yate','thornbury-and-yate',NULL),(574,'Thurrock','thurrock',NULL),(575,'Tiverton and Honiton','tiverton-and-honiton',NULL),(576,'Tonbridge and Malling','tonbridge-and-malling',NULL),(577,'Tooting','tooting',NULL),(578,'Torbay','torbay',NULL),(579,'Torfaen','torfaen',NULL),(580,'Torridge and West Devon','torridge-and-w-devon',NULL),(581,'Totnes','totnes',NULL),(582,'Tottenham','tottenham',NULL),(583,'Truro and Falmouth','truro-and-falmouth',NULL),(584,'Tunbridge Wells','tunbridge-wells',NULL),(585,'Twickenham','twickenham',NULL),(586,'Tynemouth','tynemouth',NULL),(587,'Upper Bann','upper-bann',NULL),(588,'Uxbridge and South Ruislip','uxbridge-and-s-ruislip',NULL),(589,'Vale of Clwyd','vale-of-clwyd',NULL),(590,'Vale of Glamorgan','vale-of-glamorgan',NULL),(591,'Vauxhall','vauxhall',NULL),(592,'Wakefield','wakefield',NULL),(593,'Wallasey','wallasey',NULL),(594,'Walsall North','walsall-n',NULL),(595,'Walsall South','walsall-s',NULL),(596,'Walthamstow','walthamstow',NULL),(597,'Wansbeck','wansbeck',NULL),(598,'Wantage','wantage',NULL),(599,'Warley','warley',NULL),(600,'Warrington North','warrington-n',NULL),(601,'Warrington South','warrington-s',NULL),(602,'Warwick and Leamington','warwick-and-leamington',NULL),(603,'Washington and Sunderland West','washington-and-sunderland-w',NULL),(604,'Watford','watford',NULL),(605,'Waveney','waveney',NULL),(606,'Wealden','wealden',NULL),(607,'Weaver Vale','weaver-vale',NULL),(608,'Wellingborough','wellingborough',NULL),(609,'Wells','wells',NULL),(610,'Welwyn Hatfield','welwyn-hatfield',NULL),(611,'Wentworth and Dearne','wentworth-and-dearne',NULL),(612,'West Aberdeenshire and Kincardine','w-aberdeenshire-and-kincardine',NULL),(613,'West Bromwich East','w-bromwich-e',NULL),(614,'West Bromwich West','w-bromwich-west',NULL),(615,'West Dorset','w-dorset',NULL),(616,'West Dunbartonshire','w-dunbartonshire',NULL),(617,'West Ham','w-ham',NULL),(618,'West Lancashire','w-lancashire',NULL),(619,'West Suffolk','w-suffolk',NULL),(620,'West Tyrone','w-tyrone',NULL),(621,'West Worcestershire','w-worcestershire',NULL),(622,'Westminster North','westminster-n',NULL),(623,'Westmorland and Lonsdale','westmorland-and-lonsdale',NULL),(624,'Weston-Super-Mare','weston-super-mare',NULL),(625,'Wigan','wigan',NULL),(626,'Wimbledon','wimbledon',NULL),(627,'Winchester','winchester',NULL),(628,'Windsor','windsor',NULL),(629,'Wirral South','wirral-s',NULL),(630,'Wirral West','wirral-w',NULL),(631,'Witham','witham',NULL),(632,'Witney','witney',NULL),(633,'Woking','woking',NULL),(634,'Wokingham','wokingham',NULL),(635,'Wolverhampton North East','wolverhampton-n-e',NULL),(636,'Wolverhampton South East','wolverhampton-s-e',NULL),(637,'Wolverhampton South West','wolverhampton-s-w',NULL),(638,'Worcester','worcester',NULL),(639,'Workington','workington',NULL),(640,'Worsley and Eccles South','worsley-and-eccles-s',NULL),(641,'Worthing West','worthing-w',NULL),(642,'Wrexham','wrexham',NULL),(643,'Wycombe','wycombe',NULL),(644,'Wyre and Preston North','wyre-and-preston-n',NULL),(645,'Wyre Forest','wyre-forest',NULL),(646,'Wythenshawe and Sale East','wythenshawe-and-sale-e',NULL),(647,'Yeovil','yeovil',NULL),(648,'Ynys Môn','ynys-mon',NULL),(649,'York Central','york-central',NULL),(650,'York Outer','york-outer',NULL); /*!40000 ALTER TABLE `constituency` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -49,4 +34,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2014-08-16 21:35:52 +-- Dump completed on 2014-08-17 16:10:40 diff --git a/db/twittelect.sql b/db/twittelect.sql index 264d150281..f26ab639a7 100644 --- a/db/twittelect.sql +++ b/db/twittelect.sql @@ -8,7 +8,8 @@ create table party ( create table constituency ( id integer primary key auto_increment, name varchar(200) not null, - list_name varchar(200) not null + list_name varchar(200) not null, + list_id varchar(20) ); create table candidate ( diff --git a/lib/TwittElection/Schema/Result/Constituency.pm b/lib/TwittElection/Schema/Result/Constituency.pm index d5cb699e0c..f3d9191c83 100644 --- a/lib/TwittElection/Schema/Result/Constituency.pm +++ b/lib/TwittElection/Schema/Result/Constituency.pm @@ -58,6 +58,12 @@ __PACKAGE__->table("constituency"); is_nullable: 0 size: 200 +=head2 list_id + + data_type: 'varchar' + is_nullable: 1 + size: 20 + =cut __PACKAGE__->add_columns( @@ -67,6 +73,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 0, size => 200 }, "list_name", { data_type => "varchar", is_nullable => 0, size => 200 }, + "list_id", + { data_type => "varchar", is_nullable => 1, size => 20 }, ); =head1 PRIMARY KEY @@ -99,8 +107,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-08-16 15:57:37 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Hnn6Yg3WzYjCUHlas6197g +# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-08-17 15:45:17 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:yRFppsscDpDeK/hlKiEkkw # You can replace this text with custom code or comments, and it will be preserved on regeneration From 48b42ecd3955cef7dfead6d656ef9273ef222a0e Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:11:55 +0100 Subject: [PATCH 5/8] Various list management utilities. --- bin/create_lists | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ bin/delete_list | 21 +++++++++++++++++ bin/delete_lists | 22 ++++++++++++++++++ bin/list_lists | 39 ++++--------------------------- 4 files changed, 108 insertions(+), 34 deletions(-) create mode 100755 bin/create_lists create mode 100755 bin/delete_list create mode 100755 bin/delete_lists diff --git a/bin/create_lists b/bin/create_lists new file mode 100755 index 0000000000..c48c16babe --- /dev/null +++ b/bin/create_lists @@ -0,0 +1,60 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; +use lib 'lib'; + +use TwittElection::Twitter; +use TwittElection::Schema; + +my $sch = TwittElection::Schema->connect( + "dbi:mysql:$ENV{TE_DB}", $ENV{TE_USER}, $ENV{TE_PASS}, +) or die; + +my $con_rs = $sch->resultset('Constituency'); + +my $t = TwittElection::Twitter->new( + traits => [ 'API::RESTv1_1', 'OAuth' ], + ssl => 1, + consumer_key => $ENV{TE_TW_API_KEY}, + consumer_secret => $ENV{TE_TW_API_SEC}, +); + +$t->authorise; + +foreach my $con ($con_rs->all) { + next unless $con->candidates->count; + say $con->name; + + eval { + if ($con->list_id) { + say 'Delete ', $con->list_name; + $t->delete_list({ + list_id => $con->list_id, + }); + } + }; + say 'Create ', $con->name; + my $list = $t->create_list({ + owner_screen_name => 'twittelection', + name => $con->name, + }); + say "Created $list->{slug} ($list->{id})"; + sleep 2; + + $con->update({ + list_name => $list->{slug}, + list_id => $list->{id}, + }); + + foreach my $cand ($con->candidates) { + next unless $cand->twitter; + say ' -> ', $cand->name; + $t->add_list_member({ + list_id => $list->{id}, + screen_name => $cand->twitter, + }); + sleep 2; + } +} \ No newline at end of file diff --git a/bin/delete_list b/bin/delete_list new file mode 100755 index 0000000000..dcdba5264c --- /dev/null +++ b/bin/delete_list @@ -0,0 +1,21 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; +use lib 'lib'; + +use TwittElection::Twitter; + +my $t = TwittElection::Twitter->new( + traits => [ 'API::RESTv1_1', 'OAuth' ], + ssl => 1, + consumer_key => $ENV{TE_TW_API_KEY}, + consumer_secret => $ENV{TE_TW_API_SEC}, +); + +$t->authorise; + +$t->delete_list({ + list_id => +shift, +}); diff --git a/bin/delete_lists b/bin/delete_lists new file mode 100755 index 0000000000..d3626aa934 --- /dev/null +++ b/bin/delete_lists @@ -0,0 +1,22 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; +use lib 'lib'; + +use TwittElection::Twitter; + +my $t = TwittElection::Twitter->new( + traits => [ 'API::RESTv1_1', 'OAuth' ], + ssl => 1, + consumer_key => $ENV{TE_TW_API_KEY}, + consumer_secret => $ENV{TE_TW_API_SEC}, +); + +$t->authorise; + +foreach my $list (@{$t->list_ownerships->{lists}}) { + say $list->{name}, ' (', $list->{id}, ')'; + $t->delete_list({ list_id => $list->{id} }); +} diff --git a/bin/list_lists b/bin/list_lists index 376555db39..47e585b683 100755 --- a/bin/list_lists +++ b/bin/list_lists @@ -3,51 +3,22 @@ use strict; use warnings; use 5.010; +use lib 'lib'; -use Net::Twitter; +use TwittElection::Twitter; -my $t = Net::Twitter->new( +my $t = TwittElection::Twitter->new( traits => [ 'API::RESTv1_1', 'OAuth' ], ssl => 1, consumer_key => $ENV{TE_TW_API_KEY}, consumer_secret => $ENV{TE_TW_API_SEC}, ); -my($access_token, $access_token_secret) = restore_tokens(); -if ($access_token && $access_token_secret) { - $t->access_token($access_token); - $t->access_token_secret($access_token_secret); -} - -unless ( $t->authorized ) { - # The client is not yet authorized: Do it now - print "Authorize this app at ", $t->get_authorization_url, " and enter the PIN#\n"; - - my $pin = ; # wait for input - chomp $pin; - - my($access_token, $access_token_secret, $user_id, $screen_name) = $t->request_access_token(verifier => $pin); - save_tokens($access_token, $access_token_secret); # if necessary -} +$t->authorise; foreach my $list (@{$t->list_ownerships->{lists}}) { - say $list->{name}; + say $list->{name}, ' (', $list->{id}, ')'; foreach my $mem (@{$t->list_members({ list_id => $list->{id} })->{users}}) { say "* \@$mem->{screen_name}"; } } - -sub save_tokens { - my ($access_token, $access_token_secret) = @_; - - open my $tw_fh, '>', '.te_tokens' or die $!; - print $tw_fh "$access_token $access_token_secret"; -} - -sub restore_tokens { - open my $tw_fh, '<', '.te_tokens' or die $!; - - my $tokens = <$tw_fh>; - - return split / /, $tokens; -} From f6afc5b8353ba1c6f02c6d5c20072d5264019d96 Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:12:38 +0100 Subject: [PATCH 6/8] Subclass Net::Twitter so it does the authentication. --- lib/TwittElection/Twitter.pm | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/TwittElection/Twitter.pm diff --git a/lib/TwittElection/Twitter.pm b/lib/TwittElection/Twitter.pm new file mode 100644 index 0000000000..cb5aa929a0 --- /dev/null +++ b/lib/TwittElection/Twitter.pm @@ -0,0 +1,45 @@ +package TwittElection::Twitter; + +use Moose; +extends 'Net::Twitter'; + +sub authorise { + my $self = shift; + + my($access_token, $access_token_secret) = restore_tokens(); + + if ($access_token && $access_token_secret) { + $self->access_token($access_token); + $self->access_token_secret($access_token_secret); + } + + unless ( $self->authorized ) { + # The client is not yet authorized: Do it now + print "Authorize this app at ", $self->get_authorization_url, + " and enter the PIN#\n"; + + my $pin = ; # wait for input + chomp $pin; + + my($access_token, $access_token_secret, $user_id, $screen_name) = + $self->request_access_token(verifier => $pin); + save_tokens($access_token, $access_token_secret); # if necessary + } +} + +sub save_tokens { + my ($access_token, $access_token_secret) = @_; + + open my $tw_fh, '>', '.te_tokens' or die $!; + print $tw_fh "$access_token $access_token_secret"; +} + +sub restore_tokens { + open my $tw_fh, '<', '.te_tokens' or die $!; + + my $tokens = <$tw_fh>; + + return split / /, $tokens; +} + +1; \ No newline at end of file From 2c879f4a1fd470bc355003fd6ee0cf1b11ccc859 Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:13:09 +0100 Subject: [PATCH 7/8] Add logo --- twittelection.png | Bin 0 -> 33390 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 twittelection.png diff --git a/twittelection.png b/twittelection.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac66086d4a740259fb2048499f4171b7a617723 GIT binary patch literal 33390 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 T=Z`D=f`5lpb!eF?rkDQ@UXnJ# literal 0 HcmV?d00001 From 537154d6a8a68f3b9ed907a57a6ad96873b30d35 Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 17 Aug 2014 16:14:06 +0100 Subject: [PATCH 8/8] Renamed constituency pages --- c/{aberdeen-n.html => aberdeen-north.html} | 2 +- c/{aberdeen-s.html => aberdeen-south.html} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename c/{aberdeen-n.html => aberdeen-north.html} (95%) rename c/{aberdeen-s.html => aberdeen-south.html} (95%) diff --git a/c/aberdeen-n.html b/c/aberdeen-north.html similarity index 95% rename from c/aberdeen-n.html rename to c/aberdeen-north.html index 41745102ea..d1562ca1c2 100644 --- a/c/aberdeen-n.html +++ b/c/aberdeen-north.html @@ -57,7 +57,7 @@

Aberdeen North

- +
diff --git a/c/aberdeen-s.html b/c/aberdeen-south.html similarity index 95% rename from c/aberdeen-s.html rename to c/aberdeen-south.html index 9f9f784026..7b088d8c9e 100644 --- a/c/aberdeen-s.html +++ b/c/aberdeen-south.html @@ -57,7 +57,7 @@

Aberdeen South

- +