track prices of consumer electronics
Log | Files | Refs | README

DateCommit messageAuthorFiles+-
2016-03-07 01:05londrugs: remove unused member fieldskyle1+0-2
2016-03-07 00:03add best buy price scraper and testkyle2+188-0
2016-03-06 22:37memexp: remove bad commentskyle1+0-16
2016-03-06 22:28save scraped descriptions tookyle3+14-0
2016-03-06 22:20database: add common insert_price functionkyle3+19-16
2016-03-06 22:07memexp: some minor fixeskyle2+15-24
2016-03-06 22:06add london drugs test and scraperkyle2+209-0
2016-03-06 17:57memexp: add product page description scraping support.kyle2+10-1
2016-03-06 17:40memexp: put scraping smarts in real modulekyle2+86-69
2016-03-03 03:18PS/UserAgent: info -> debugKyle Milz1+1-1
2016-03-03 03:15start transitioning to a module based layoutkyle7+404-338
2016-02-28 17:54delete Makefilekyle1+0-35
2016-02-28 16:30make DEPS file a README insteadkyle2+31-18
2015-12-09 02:31Changed files types for Windows on Gregs machineGreg's Computer3+0-0
2015-11-15 23:06logo: add microsoftKyle Milz1+11-0
2015-11-11 23:06html: switch to 2 column responsive design for chartskyle5+60-37
2015-11-11 05:11ps_scrape: sleep ~10 min when run from cronkyle1+25-0
2015-11-09 06:04about: rearrange wording slightlykyle1+2-2
2015-11-09 06:02css: remove print media queries, fix commentkyle1+1-10
2015-11-09 05:52html: create a single logo/ file map to use everywherekyle3+27-40
2015-11-08 22:58html: make all graphs half widthkyle1+7-17
2015-11-08 18:57ps_html: be more verbose on -vkyle1+9-15
2015-11-08 18:54ps_html: change the word stale to out of datekyle2+3-3
2015-11-08 18:53ps_scrape: switch to more compact arg passingkyle1+5-11
2015-11-08 18:18ps_scrape: move price scraper functions to topkyle1+160-158
2015-11-08 17:38ps_scrape: merge {price,product}_scraperkyle5+497-493
2015-11-08 16:50price_scraper: improve error message when no parts are freshkyle1+2-1
2015-11-08 move table creation into herekyle3+54-47
2015-11-08 15:25html: tweak about.html's status sectionkyle3+23-15
2015-11-06 04:22remove newline between shebang and use strictKyle Milz4+0-4
2015-11-06 04:20product_scraper: ignore part nums that start with BDL_Kyle Milz1+4-0
2015-11-04 05:43product_scraper: tweak description insertionKyle Milz1+19-16
2015-11-04 05:37html: add total number of prices to about.htmlkyle3+9-2
2015-11-04 05:36Makefile forgotten in last commitkyle1+3-3
2015-11-04 05:35move some files into etc/kyle5+2-2
2015-11-04 04:10DEPS: this file is openbsd pkg_* specifickyle1+0-0
2015-11-04 03:53html: move stale retailer lookup back to table joinkyle1+10-5
2015-11-04 03:52Makefile: install as www:daemonkyle1+2-2
2015-11-04 02:51html: embed css directly in svgskyle1+36-27
2015-11-03 05:49rc: use perl -T for ps_fcgikyle1+1-1
2015-11-03 05:27html: mkdir $htdocs/svgkyle1+2-0
2015-11-03 04:20ps_fcgi: clarify some commentsKyle Milz1+5-2
2015-11-03 03:23fcgi: two small fixeskyle1+9-4
2015-11-03 02:47tt: ship pricesloth logo in /logo/ nowkyle1+1-1
2015-11-03 add mandatory database argumentkyle1+7-2
2015-11-03 02:44html: make sloth head permanent instead of floatingkyle1+2-2
2015-11-03 02:41turn foreign keys onkyle1+1-0
2015-10-05 05:07ps_html: start website re-workkyle18+390-270
2015-09-30 use printf instead of echoKyle Milz1+5-9
2015-05-12 02:25product_scraper: fix manufacturer name lookupKyle Milz1+1-1
2015-05-12 02:17ps_html: we don't use interpolationKyle Milz1+1-1
2015-05-12 02:00ps_html: pretty up the matrixKyle Milz1+6-4
2015-05-10 23:37tt: make column sizing perfectKyle Milz2+5-1
2015-05-07 00:59ps_html: print info under verboseKyle Milz1+1-1
2015-05-06 addKyle Milz1+12-0
2015-05-06 renameKyle Milz7+178-178
2015-05-05 06:32cfg: renameKyle Milz3+2-2
2015-05-05 06:29cfg: add spaceKyle Milz1+1-0
2015-05-05 06:27ps_fcgi: tweak sig messageKyle Milz1+1-1
2015-05-05 06:23rc.d: this changed a while agoKyle Milz1+1-1
2015-05-05 06:22product_scraper: change email from and subjectKyle Milz1+3-3
2015-05-05 06:13css: renameKyle Milz4+3-3
2015-05-05 06:10css: vertical align middle small logosKyle Milz1+1-0
2015-05-05 06:05pc_html: renameKyle Milz2+1-1
2015-05-05 06:01tt: add anchors to each item in the fine listKyle Milz1+1-0
2015-05-05 06:01tt: use pair instead of key/valueKyle Milz1+4-4
2015-05-05 05:59pc_html: forgot in previous, change args to gen_folderKyle Milz1+2-1
2015-05-05 05:57pc_html: clean up svg generationKyle Milz1+13-19
2015-05-05 05:55pc_html: prepare the sql inline for indexKyle Milz1+7-8
2015-05-05 05:52pc_html: only generate product pages for products with pricesKyle Milz1+1-1
2015-05-05 05:51pc_html: let gen_folder do the coarse list sql queryKyle Milz1+15-12
2015-05-05 05:44pc_html: prepare the description statement handleKyle Milz1+4-3
2015-05-05 05:41pc_html: use matrix multiplication instead of hand rollingKyle Milz2+35-41
2015-05-05 03:38tt: update index with sloth swagKyle Milz1+8-7
2015-05-01 04:20css: split up generic and specific columnsKyle Milz3+16-17
2015-04-30 05:37add more pieces of sloth flareKyle Milz3+8-7
2015-04-30 04:36css: clean up and add classes that were needed long agoKyle Milz1+26-14
2015-04-30 01:44css: stroke opacity 80%, remove bold font from series labelKyle Milz1+2-1
2015-04-30 01:43ps_fcgi: misc cleanupKyle Milz1+7-11
2015-04-30 01:42Makefile: this changed awhile agoKyle Milz1+1-1
2015-04-30 01:41first steps at a saner filesystem layoutKyle Milz7+32-31
2015-04-28 03:45pc_html: a new name!Kyle Milz4+14-14
2015-04-28 03:36pc_fcgi: try to implement privsep properlyKyle Milz2+60-49
2015-04-28 01:11logo: better panasonic svgKyle Milz1+106-49
2015-04-28 01:10pc_html: render series labels in sans-serifKyle Milz2+3-2
2015-04-26 22:27tt: make column sizing kind of workKyle Milz1+3-3
2015-04-26 22:26tt: put index on a dietKyle Milz1+2-21
2015-04-26 22:25css: make inline-blocks line up at topKyle Milz1+2-0
2015-04-26 19:30pc_html: simplify catrom to bezierKyle Milz1+23-29
2015-04-26 18:11pc_html: use variable for part/manuf constraintKyle Milz1+21-31
2015-04-26 17:34logo: add 3 moreKyle Milz3+0-0
2015-04-26 07:29pc_html: collect stale clauses, rework new/updatedKyle Milz1+28-32
2015-04-26 05:58pc_html: remove some unneeded includesKyle Milz1+1-7
2015-04-26 05:54pc_html: rename template to wwwKyle Milz1+15-19
2015-04-26 05:04DEPS: add LinguaKyle Milz1+1-0
2015-04-26 04:31pc_html: spin less timesKyle Milz1+3-4
2015-04-26 04:19pc_html: simplify getting data to feed make_svgKyle Milz1+21-33
2015-04-26 03:14tt: tighten up spacingKyle Milz2+2-7
2015-04-26 03:13pc_fcgi: simplify page generationKyle Milz2+10-11
2015-04-26 03:07pc_html: remove ugly xml-stylesheet hackKyle Milz1+6-9
2015-04-25 07:24fix: remove temporary stopgapKyle Milz1+0-49
2015-04-25 07:07pc_html: first steps at special character handlingKyle Milz6+123-165
2015-04-25 05:18css: tighten this upKyle Milz1+3-12
2015-04-24 06:35pc_html: make default output silentKyle Milz1+1-1
2015-04-24 06:32pc_html: last minute fixupsKyle Milz1+3-2
2015-04-24 06:25pricechart.cfg: indentationKyle Milz1+1-1
2015-04-24 06:24product_scraper: first pass at incorrect manufacturer spellingKyle Milz1+12-0
2015-04-24 06:24hp: add new logoKyle Milz1+36-14
2015-04-24 06:10fix: first pass at manufacturer name fixingKyle Milz1+49-0
2015-04-24 05:43pc_html: bring types into lineKyle Milz1+17-8
2015-04-24 05:33pc_html: nuke get_logoKyle Milz1+1-15
2015-04-24 05:30pc_html: first pass at real stale awarenessKyle Milz11+122-84
2015-04-21 05:43pc_html: index gets its own sql queriesKyle Milz1+19-17
2015-04-21 05:17cfg: remove future shopKyle Milz1+0-7
2015-04-21 05:14css: squish it down a bitKyle Milz1+7-13
2015-04-18 07:37pc_gen_html: on second thought I like this betterKyle Milz2+1-1
2015-04-18 07:36gen_html: -n is deadKyle Milz1+0-2
2015-04-18 07:35gen_html: bring under pc_ namespaceKyle Milz2+1-1
2015-04-18 07:33tt/wrapper: link to the right pageKyle Milz1+1-1
2015-04-18 07:32gen_html: reduce whitespace, fix loggingKyle Milz1+10-13
2015-04-18 07:20gen_html: unite all folder generationKyle Milz1+90-140
2015-04-18 06:45gen_html: small cleanupsKyle Milz1+10-11
2015-04-18 06:44tt: add summaryKyle Milz1+16-0
2015-04-18 06:31gen_html: snapshot, removed lower(manufacturer)Kyle Milz1+65-59
2015-04-18 05:27gen_html: first pass at new retailer coarse listKyle Milz2+78-56
2015-04-18 04:36gen_html: move get_descriptionKyle Milz1+36-32
2015-04-18 04:10gen_svg: fold into gen_htmlKyle Milz3+296-338
2015-04-18 04:00gen_svg: small cleanupsKyle Milz1+4-9
2015-04-18 03:48gen_svg: split svg render from data gatheringKyle Milz1+80-56
2015-04-18 02:50logo: add almost all missing logosKyle Milz11+0-0
2015-04-18 02:50initial steps toward a better looking uiKyle Milz11+273-337
2015-04-14 05:49gen_svg: first pass at catmull romKyle Milz2+120-13
2015-04-14 05:44rc: make sure shutdown works properlyKyle Milz1+1-1
2015-04-07 05:25product_scraper: make it workKyle Milz1+1-1
2015-04-06 01:42price_scraper: actually set $found_descr to somethingKyle Milz1+2-1
2015-04-05 18:26price_scraper: fix description scraping againKyle Milz1+11-8
2015-04-05 01:13gen_svg: define circle closer to useKyle Milz1+6-9
2015-04-05 01:03gen_svg: misc cleanupsKyle Milz1+8-12
2015-04-05 01:02gen_svg: hyperlink the retailers nameKyle Milz1+1-1
2015-04-04 23:58gen_svg: draw the data points overtop of the linesKyle Milz1+15-24
2015-04-04 23:22css: tweaks realized through using a different monitorKyle Milz1+5-5
2015-04-04 22:21gen_svg: fix the scalesKyle Milz1+8-6
2015-04-04 21:36gen_html: put total products beside logos on links pagesKyle Milz2+24-13
2015-04-04 21:54price_scraper: only try to insert non-empty descriptionsKyle Milz1+3-1
2015-04-04 20:55gen_html: only show products with at least one priceKyle Milz1+3-1
2015-04-04 20:54pc_fcgi: only display results with at least one priceKyle Milz1+2-2
2015-04-04 20:48pc_fcgi: keep track of total requests processedKyle Milz1+3-1
2015-04-04 20:40gen_svg: use svg more intelligentlyKyle Milz1+26-33
2015-04-04 20:17pc_fcgi: add manufacturer logos to search resultsKyle Milz2+7-3
2015-04-04 19:33product_scraper: be more liberal when finding brandKyle Milz1+2-1
2015-04-04 18:58product_scraper: lower case info loggingKyle Milz1+1-1
2015-04-04 18:57price_scraper: flip wrong logicKyle Milz1+1-1
2015-04-04 18:56price_scraper: use first description foundKyle Milz1+2-2
2015-04-04 18:35gen_static: rename to a more apt gen_htmlKyle Milz2+1-1
2015-04-04 18:33gen_svg: clarify comment, tighten info messagesKyle Milz1+3-3
2015-04-04 18:32gen_static: remove xmkdir, += is a scalar contextKyle Milz1+2-10
2015-04-04 18:09PriceChart: remove xmkdir, use make_path insteadKyle Milz2+7-17
2015-04-03 06:06product_scraper: randomize iteration over thumbnailsKyle Milz1+4-1
2015-04-03 05:56logo: add moreKyle Milz6+6998-0
2015-04-03 05:43product_scraper: remove single use column fix upKyle Milz1+0-5
2015-04-03 05:19gen_svg: add -a, regen all svgs, move successKyle Milz1+7-5
2015-04-03 05:02gen_svg: add an svg_stale column to product tableKyle Milz3+15-2
2015-04-03 good bye friend, you did wellKyle Milz1+0-192
2015-04-03 04:23price_scraper: widen type column a bitKyle Milz1+1-1
2015-04-03 04:03product_scraper: convert type to lower case in info loggingKyle Milz1+1-1
2015-04-03 04:02PriceChart: make the addrs feature actually workKyle Milz1+4-4
2015-04-03 03:01gen_svg: small tweaks to code and commentsKyle Milz1+12-10
2015-04-03 03:01man: removeKyle Milz1+0-88
2015-04-03 03:00pc_fcgi: bring up to speed from recent changesKyle Milz2+9-11
2015-04-03 use once script to convert db schemaKyle Milz1+192-0
2015-04-03 02:48logo: add neweggKyle Milz1+720-0
2015-04-03 02:46index: tighten proseKyle Milz1+4-6
2015-04-03 02:46product_scraper: scrape more thingsKyle Milz1+3-1
2015-04-03 02:43gen_static: misc improvementsKyle Milz3+43-36
2015-04-03 01:48gen_static: check if verboseKyle Milz1+1-1
2015-04-03 01:46price_scraper: general cleanupKyle Milz1+28-26
2015-04-03 01:07product_scraper: change time format in email outputKyle Milz1+3-2
2015-04-03 01:06product_scraper: use qq instead of quotesKyle Milz1+22-19
2015-04-03 00:52css: add retailers and manufacturers classesKyle Milz4+17-12
2015-04-03 00:47gen_static: generate product type indexes tooKyle Milz1+37-0
2015-04-01 02:42price_scraper: remove quotes from hash keysKyle Milz1+5-5
2015-04-01 02:42product_scraper: typeKyle Milz1+1-1
2015-04-01 02:41tt: misc cleanupsKyle Milz3+8-5
2015-04-01 02:40gen_svg: redoKyle Milz2+168-98
2015-03-30 03:45tt: some css tweaksKyle Milz3+19-25
2015-03-30 03:44tt: improve index textKyle Milz1+11-12
2015-03-30 03:43gen_static: convert or's to ||Kyle Milz2+7-6
2015-03-30 03:40change the db schemaKyle Milz5+102-62
2015-03-25 07:12gen_static: add recently updated list to indexKyle Milz2+24-4
2015-03-25 06:52tt: modernize index.htmlKyle Milz2+62-49
2015-03-25 06:18tt: add perl code to templates for misc tasksKyle Milz4+64-18
2015-03-24 04:09tt: missed committing, need to stay in syncKyle Milz2+16-15
2015-03-24 04:05gen_static: tighten, add comment spacingKyle Milz1+18-13
2015-03-24 04:03gen_static: tighten, focus on info printingKyle Milz1+28-30
2015-03-24 03:53gen_static: don't try and do everything in one functionKyle Milz1+77-61
2015-03-24 02:43css: no left/right margin on product chartsKyle Milz1+2-3
2015-03-22 23:21PriceChart: scrape from different addresses if possibleKyle Milz1+12-1
2015-03-22 23:08gen_static: make better product pagesKyle Milz2+25-4
2015-03-22 22:24Makefile: right align values, misc cleanupKyle Milz1+14-10
2015-03-22 22:22grammar: simplify keywordsKyle Milz4+75-76
2015-03-22 22:00pricechart.cfg: add tiger directKyle Milz1+6-0
2015-03-22 19:35product_scraper: also scrape memoryKyle Milz1+2-1
2015-03-22 19:25pricechart.cfg: add to source controlKyle Milz1+127-0
2015-03-21 22:23tt: add alt attribute to img tags, add more links in indexKyle Milz3+11-7
2015-03-21 22:11gen_static: correct for different manufacturer capitalizationKyle Milz1+2-2
2015-03-21 21:53gen_svg: change dimension variable names aroundKyle Milz1+14-16
2015-03-21 21:08all: use the word retailer instead of vendorKyle Milz6+32-32
2015-03-21 20:47gen_svg: add -n, comments, make data points into hrefKyle Milz1+15-6
2015-03-21 20:29logo: add moreKyle Milz4+423-614
2015-03-19 23:57gen_svg: make series hyperlinksKyle Milz1+6-1
2015-03-19 23:56gen_static: pass some extra variablesKyle Milz2+5-2
2015-03-19 23:55PriceChart: use xmkdirKyle Milz1+4-5
2015-03-19 10:07html: forgot to commit this with lastKyle Milz1+7-0
2015-03-19 10:07gen_static: also generate product pagesKyle Milz3+12-9
2015-03-19 09:19PriceChart: typoKyle Milz1+1-1
2015-03-19 09:19gen_static: move info message aroundKyle Milz1+1-2
2015-03-19 09:18gen_svg: tighten, use xmkdir instead of hand rollingKyle Milz1+4-6
2015-03-19 09:17pc_fcgi: clarify error message, drop some quotesKyle Milz1+3-4
2015-03-19 09:06gen_static: add a function and simplifyKyle Milz1+59-78
2015-03-19 07:49gen_svg: forgot about verbosityKyle Milz1+8-5
2015-03-19 07:49Makefile: forgot to rename binary hereKyle Milz1+1-1
2015-03-19 07:37gen_index: gen_static because it does more nowKyle Milz1+0-0
2015-03-19 07:34PriceChart: forgotten, the new xmkdir functionKyle Milz1+12-1
2015-03-19 07:25pc_fcgi: fix template include pathKyle Milz1+2-2
2015-03-19 07:24gen_svg: tighten up and add commentsKyle Milz1+34-49
2015-03-19 06:49logo: unfuckulate the logosKyle Milz11+627-17167
2015-03-19 06:48gen_svg: remove ridiculous bezier curvesKyle Milz1+26-68
2015-03-19 04:48logo: new logosKyle Milz19+19646-0
2015-03-19 04:12gen_index: start generating a tree of html filesKyle Milz15+457-160
2015-03-19 01:53gen_svg: mkdir doesn't take -pKyle Milz1+1-1
2015-03-16 06:12pricechart.cfg: remove general db optionKyle Milz6+6-7
2015-03-16 04:09price_scraper: be more strict when validating inputKyle Milz1+8-9
2015-03-16 04:08PriceChart: put info msg under verboseKyle Milz1+1-1
2015-03-16 03:44Makefile: uninstall removes PriceChart.pmKyle Milz1+3-2
2015-03-16 03:39PriceChart: take an IO Tee in get_logKyle Milz3+35-28
2015-03-16 03:31PriceChart: move info print to before actionKyle Milz1+1-1
2015-03-16 03:36gen_svg: only mkdir when we have toKyle Milz1+2-2
2015-03-16 02:17gen_svg: add support for files with '/' in the nameKyle Milz1+11-0
2015-03-16 01:39gen_svg: bring back onlineKyle Milz4+30-20
2015-03-16 00:11product_scraper: update commentKyle Milz1+1-1
2015-03-16 00:13Makefile: chmod www and mkdir -pKyle Milz1+2-1
2015-03-16 00:09index.html: include # of new products in titleKyle Milz2+5-4
2015-03-16 00:02gen_index: add some info about new productsKyle Milz2+15-6
2015-03-15 23:46gen_index: simplifyKyle Milz1+13-20
2015-03-15 23:21gen_index: forgot as part of last commitKyle Milz1+4-4
2015-03-15 23:12html: move templates on dir upKyle Milz8+67-60
2015-03-15 22:38price_scraper: make log output nicerKyle Milz1+1-1
2015-03-15 22:34pc_fcgi: misc cleanupKyle Milz1+5-4
2015-03-13 06:08pc_fcgi: major cleanupKyle Milz1+24-24
2015-03-13 05:50Makefile: whoops forgot the chmodKyle Milz1+4-0
2015-03-13 05:39product_scraper: unbreakKyle Milz1+1-0
2015-03-13 05:36Makefile: install actually does somethingKyle Milz7+17-3
2015-03-13 04:57price_scraper: minor cleanupsKyle Milz1+3-4
2015-03-13 04:49PriceChart: tee log output to stdout and fileKyle Milz3+17-10
2015-03-13 04:34Makefile: move perl's to ~/binKyle Milz1+1-0
2015-03-13 04:12Makefile: addKyle Milz1+3-0
2015-03-12 08:58PriceChart: be smarter about tty detectionKyle Milz1+4-5
2015-03-12 08:01PriceChart: only try to get terminal width when we are a terminalKyle Milz1+5-1
2015-03-12 07:54price_scraper: be less verboseKyle Milz1+1-4
2015-03-12 07:51PriceChart: simplify trunc_lineKyle Milz1+1-6
2015-03-12 07:42DEPS: add Term::ReadKeyKyle Milz1+1-0
2015-03-12 07:34price_scraper: send verbosity to get_dbhKyle Milz1+1-1
2015-03-12 07:29price_scraper: remove unused codeKyle Milz1+1-4
2015-03-12 07:27product_scraper: lift db insert/delete into its own functionKyle Milz1+70-51
2015-03-12 07:26PriceChart: tighten trunc_lineKyle Milz1+8-4
2015-03-12 07:26PriceChart: tighten header printing codeKyle Milz1+4-7
2015-03-12 07:25PriceChart: print get_dom instead of GETKyle Milz1+2-2
2015-03-12 07:20PriceChart: print which db we're openingKyle Milz2+5-3
2015-03-01 01:05price_scraper: tweak wordingKyle Milz1+1-1
2015-03-01 01:04PriceChart: add error checks for get_logKyle Milz1+3-1
2015-03-01 01:04PriceChart: add trunc_line functionKyle Milz3+31-13
2015-03-01 00:20product_scraper: change the code flow a bitKyle Milz1+73-56
2015-02-27 07:57PriceChart: misc user agent tweaksKyle Milz1+8-4
2015-02-26 08:34PriceChart: add some real sounding headersKyle Milz2+14-4
2015-02-09 04:37gen_svg: whitespaceKyle Milz1+1-1
2015-02-09 04:34product_scraper: shuffle code around, simplifyKyle Milz1+51-39
2015-02-09 03:32product_scraper: make new product lists line lengths shorterKyle Milz1+1-1
2015-02-09 02:56gen_index: minor fixupsKyle Milz1+2-2
2015-02-09 02:34price_scraper: add a note about limitationsKyle Milz1+1-0
2015-02-09 02:20price_scraper: be more careful with product selectionKyle Milz1+5-5
2015-02-09 02:14gen_index: add debugging output, remove hardcoded pathsKyle Milz4+45-15
2015-02-09 01:22price_scraper: use 20 columns for part numbers in logKyle Milz1+1-1
2015-02-08 23:10price_scraper: don't put dollar sign on bad priceKyle Milz1+1-1
2015-02-08 21:56price_scraper: don't try and scrape non-existent tagsKyle Milz1+12-9
2015-02-04 07:22gen_svg: remove dependency on vendor tableKyle Milz1+41-30
2015-02-04 07:20pricechart_fcgi: use get_dbh properly, convert hardcoded pathKyle Milz1+2-2
2015-02-04 07:18price_scraper: save description, scrape in orderKyle Milz1+24-16
2015-02-04 07:17PriceChart: get_dbh now takes a second dir argKyle Milz4+9-6
2015-02-02 02:30search: rename to pricechart_fcgiKyle Milz1+0-0
2015-02-02 02:30price_scraper: display title while visiting search resultsKyle Milz1+6-1
2015-02-02 02:29PriceChart: fix thinkoKyle Milz1+1-1
2015-02-02 02:10search: chroot, simplificationsKyle Milz2+74-54
2015-02-01 23:40price_scraper: silence a warning and fix a commentKyle Milz1+2-2
2015-02-01 23:04product_scraper: simplify and improve loggingKyle Milz1+110-108
2015-02-01 22:59price_scraper: use config file for vendors, againKyle Milz3+31-66
2015-01-29 08:08product_scraper: add comments and debuggingKyle Milz2+112-45
2015-01-28 06:07price_scraper: re-factor to add robustnessKyle Milz2+86-57
2015-01-28 06:04update_vendors: use correct module nameKyle Milz1+1-1
2015-01-28 06:02gen_svg: be more strict on finding a vendorKyle Milz1+1-0
2015-01-04 09:49product_scraper: document scraping techniqueKyle Milz7+117-112
2014-11-21 03:37DEPS: updateKyle Milz1+2-4
2014-11-18 11:28price_scraper: scrape vendors in alphabetical orderKyle Milz1+1-1
2014-11-18 11:27search: use double fork() instead of Proc::DaemonKyle Milz2+47-40
2014-11-18 07:16DEPS: add new fileKyle Milz1+14-0
2014-11-13 09:10use PriceChart::Shared instead of sharedKyle Milz8+79-86
2014-11-11 23:30config: don't use general section anymoreKyle Milz2+8-11
2014-11-11 23:24don't parse vendors from config anymoreKyle Milz3+36-36
2014-11-11 21:21price_scraper: wrap long lineKyle Milz1+2-2
2014-11-11 21:16price_scraper: convert some vprint's and add manufacturer to outputKyle Milz1+8-8
2014-11-11 21:08product_scraper: revamp verbose printing and emailingKyle Milz1+51-36
2014-11-11 20:23shared: shuffle config grammar aroundKyle Milz1+8-9
2014-11-11 20:07shared: don't include HTML::Grabber by defaultKyle Milz2+1-1
2014-11-11 20:04gen_svg: squash some lines togetherKyle Milz1+6-12
2014-11-11 19:53only parse config file in modules that need itKyle Milz4+41-28
2014-11-11 19:51gen_svg: make height smaller and reduce slide animation timeKyle Milz1+2-3
2014-11-11 19:50gen_index: hardcode path to templatesKyle Milz1+1-2
2014-11-11 19:42make option parsing program independentKyle Milz4+19-17
2014-11-11 09:04search: use syslog, open sockets as rootKyle Milz1+42-32
2014-11-11 04:40update_vendors: get the dbhKyle Milz1+1-0
2014-11-11 04:22gen_svg: add spline calculation codeKyle Milz1+62-6
2014-11-11 03:22gen_svg: make axis label font biggerKyle Milz1+2-2
2014-11-10 07:05html/search: pluralize properlyKyle Milz1+7-2
2014-11-10 07:02search: simplify and correct template error handlingKyle Milz1+1-4
2014-11-10 07:00search: unescape query inputKyle Milz1+4-0
2014-11-10 02:56search: socket path is actually a socket fileKyle Milz1+4-4
2014-11-10 02:54search: delete old commented codeKyle Milz1+0-5
2014-11-10 02:48search: add comments, don't quote bare variableKyle Milz1+4-1
2014-11-10 02:47search: simplify template generation errorKyle Milz1+2-2
2014-11-10 02:46search: add timestamps to logKyle Milz1+13-6
2014-11-09 21:30search: remove old diagnostic outputKyle Milz1+0-3
2014-11-09 21:25search: add shebang line backKyle Milz1+2-0
2014-11-09 21:19search: get uid from user nameKyle Milz1+2-1
2014-11-09 21:13search: clean up old comments, whitespaceKyle Milz1+5-14
2014-11-09 20:49gen_svg: let this runKyle Milz1+1-1
2014-11-09 20:48shared: always use the same config fileKyle Milz1+2-8
2014-11-09 20:48no need to track the config fileKyle Milz1+0-96
2014-11-09 20:47don't globally export the db handleKyle Milz6+21-24
2014-11-09 19:13first cut at setting paths to sane system defaultsKyle Milz6+22-35
2014-11-08 22:18search: first cut at making this a deamonKyle Milz1+54-5
2014-11-08 22:17price_scraper: fixup error messageKyle Milz1+1-1
2014-11-08 20:08search: don't quote search termKyle Milz1+1-1
2014-11-08 20:07search: increase search space and display more informationKyle Milz2+5-4
2014-11-07 05:36price_scraper: use sql variable name instead of qryKyle Milz1+4-4
2014-11-07 05:36shared: format config grammar nicerKyle Milz1+6-1
2014-11-07 05:31price_scraper: simplify picking product to updateKyle Milz1+9-16
2014-11-07 05:20update_vendors: add helper script to insert vendor infoKyle Milz1+32-0
2014-11-07 05:15product_scraper: whitespace fixupsKyle Milz1+1-2
2014-11-07 05:14product_scraper: use selectrow_array for queryKyle Milz1+2-5
2014-11-06 06:12gen_svg: add an animation that slides in the seriesKyle Milz1+15-0
2014-11-06 06:11gen_svg: some easy ' -> " fixes, newlines, etcKyle Milz1+13-12
2014-11-06 05:29gen_svg: don't close the pathKyle Milz1+1-2
2014-11-06 05:23gen_index: use result directlyKyle Milz1+6-6
2014-11-06 05:21gen_svg: use selectrow_array for single row selectsKyle Milz1+6-10
2014-11-06 05:18gen_svg: add a newlineKyle Milz1+1-0
2014-11-06 05:17gen_svg: query -> sqlKyle Milz1+8-8
2014-11-06 05:15gen_svg: query the vendors in the database for colorsKyle Milz1+3-2
2014-11-06 05:14gen_svg: fix unlikely id collisionKyle Milz1+1-1
2014-11-04 05:17gen_svg: add link to spline codeKyle Milz1+4-0
2014-11-04 05:16product_scraper: rename product_sth -> exists_sthKyle Milz1+4-4
2014-11-04 05:11price_scraper: clarify error messageKyle Milz1+1-1
2014-11-04 05:11price_scraper: error out if table creation bombsKyle Milz1+1-1
2014-11-04 05:10product_scraper: unify email and verbose outputKyle Milz1+21-24
2014-11-04 04:53product_scraper: no need for date in email subjectKyle Milz1+1-3
2014-11-04 04:47product_scraper: remove old title interpolation codeKyle Milz1+0-24
2014-11-04 04:46product_scraper: convert last user of not_definedKyle Milz1+5-15
2014-11-04 04:29product_scraper: bring brand into consistent styleKyle Milz1+2-3
2014-11-04 04:27product_scraper: one more results renameKyle Milz1+1-1
2014-11-04 04:27product_scraper: look for part number earlierKyle Milz1+10-8
2014-11-04 04:17product_scraper: rename node -> thumbnail_htmlKyle Milz1+3-3
2014-11-04 04:15product_scraper: rename results -> thumbnailsKyle Milz1+4-4
2014-11-04 04:13product_scraper: rename product -> thumbnail_domKyle Milz1+6-5
2014-11-04 04:06product_scraper: title -> descriptionKyle Milz1+6-6
2014-11-04 04:04product_scraper: add new dom text getterKyle Milz1+21-7
2014-11-04 03:43product_scraper: rename some variablesKyle Milz1+6-6
2014-11-04 03:38product_scraper: actually fail when we can't find the varKyle Milz1+1-1
2014-11-04 03:37price_scraper: only select a rowKyle Milz1+1-1
2014-11-04 03:16product_scraper: prepare queries outside of main loopKyle Milz1+11-7
2014-11-04 03:07product_scraper: prepare query outside main loopsKyle Milz1+5-4
2014-11-04 03:02gen_index: use count() sql queryKyle Milz1+6-6
2014-11-04 02:58gen_index: use vendor table instead of configKyle Milz1+3-2
2014-11-04 02:53change title, brand to description, manufacturerKyle Milz5+10-12
2014-11-02 04:38html: add bigger margins on columnsKyle Milz1+6-6
2014-11-02 04:37gen_svg: remove some unnecessary parenthesisKyle Milz1+2-2
2014-11-02 04:29price_scraper: convert to prepare, execute style queriesKyle Milz1+9-5
2014-11-02 04:17price_scraper: POSIX is not needed here anymoreKyle Milz1+0-2
2014-11-02 00:44gen_svg: compute min and max using sqlKyle Milz1+14-14
2014-11-02 00:30search: use get queries instead of postKyle Milz2+2-3
2014-11-02 00:29html: this should have went in the last commitKyle Milz1+2-2
2014-11-02 00:25search: use prepare and execute style queriesKyle Milz1+5-3
2014-11-01 22:56gen_svg: simplify looping over partsKyle Milz1+5-13
2014-11-01 22:39gen_svg: fully generalize axis generationKyle Milz1+32-17
2014-11-01 22:28gen_svg: add ticks for x axis labelsKyle Milz1+7-0
2014-11-01 22:27gen_svg: add a reminder commentKyle Milz1+1-0
2014-11-01 22:19gen_svg: don't print invalid productsKyle Milz1+3-8
2014-11-01 22:15gen_svg: use prepare and execute for queriesKyle Milz1+10-11
2014-11-01 22:10gen_svg: use prepare and execute style queriesKyle Milz1+21-27
2014-11-01 21:16gen_svg: use variables instead of hardcoded valuesKyle Milz1+16-6
2014-11-01 21:15shared: use POSIXKyle Milz1+1-0
2014-10-28 03:44gen_svg: calculate min, max smarter, guard against products with 0, 1 pricesKyle Milz1+15-9
2014-10-28 03:43gen_svg: use an array reference for productsKyle Milz1+5-5
2014-10-26 18:38gen_svg: run the to-be-generated products through a loopKyle Milz1+11-14
2014-10-24 07:56logs: print time string when opening logKyle Milz3+3-4
2014-10-24 07:47shared: always export $cfg and $dbhKyle Milz6+46-69
2014-10-24 07:40product_scraper: revert scalar removal in printfKyle Milz1+1-1
2014-10-24 07:39price_scraper: too zealous on scalar removalKyle Milz1+1-1
2014-10-24 07:28remove redundant scalar callsKyle Milz3+11-9
2014-10-24 07:14gen_svg: no plural on log nameKyle Milz1+1-1
2014-10-24 07:13gen_index: no need for logging hereKyle Milz1+0-2
2014-10-24 06:51product_scraper: add comments about column namesKyle Milz1+2-0
2014-10-24 06:45site_gen -> gen_indexKyle Milz1+0-0
2014-10-24 06:41site_gen: split into index gen and svg genKyle Milz2+132-116
2014-10-24 06:36html: simplify to start textKyle Milz1+2-2
2014-10-24 06:35site_gen: add x, y axis labels, use viewBox, add circles at data pointsKyle Milz1+45-7
2014-10-24 06:34search: show product number above graphKyle Milz1+3-2
2014-10-23 04:17search: also search for the part numberKyle Milz1+3-2
2014-10-23 04:16site_gen: use SVG module directlyKyle Milz2+59-11
2014-10-21 06:25html: split html pages and use that for searchesKyle Milz7+119-109
2014-10-20 08:58add new tools for fcgi searching and www generationKyle Milz4+234-0
2014-10-20 08:48shared: include modules here instead of in the scrapersKyle Milz3+2-5
2014-10-20 08:43price_scraper: fix bug in sale price codeKyle Milz1+1-1
2014-10-20 03:14just specify a var dir in the configKyle Milz4+130-108
2014-10-19 23:35manual: move to man directoryKyle Milz1+0-0
2014-10-19 23:07product_scraper: fix rand sleep timeKyle Milz1+1-1
2014-10-19 22:46product_scraper: convert to vprintKyle Milz1+11-14
2014-10-19 22:22price_scraper: remove old commented codeKyle Milz1+0-13
2014-10-19 22:15product_scraper: sleep in between productsKyle Milz1+7-3
2014-10-19 22:14price_scraper: add debugging outputKyle Milz2+64-23
2014-10-14 05:13product_scraper: remove seatbeltsKyle Milz1+0-2
2014-10-14 05:11product_scraper: print debug output when -v presentKyle Milz1+7-1
2014-10-14 05:10product_scraper: don't use fetchrow_array in scalar contextKyle Milz1+1-1
2014-10-14 05:09product_scraper: don't redeclare brand variableKyle Milz1+1-1
2014-10-13 19:12product_scraper: remove old commented table insertionKyle Milz1+0-2
2014-10-13 19:11shared: include LWP hereKyle Milz3+1-2
2014-10-13 19:09price_scraper: filter and update last_seen fieldKyle Milz1+4-1
2014-10-13 05:01product_scraper: change accounting of new productsKyle Milz1+7-6
2014-10-13 04:41cfg: disable amazon for nowKyle Milz1+5-5
2014-10-13 04:41price_scraper: move colon to beside nameKyle Milz1+1-1
2014-10-13 04:37product_scraper: move email declaration closer to useKyle Milz1+1-2
2014-10-13 04:36product_scraper: print error message when email send failsKyle Milz1+1-1
2014-10-13 04:36product_scraper: don't create vendor specific tablesKyle Milz1+0-10
2014-10-13 04:28shared: add common function to get user agentKyle Milz3+12-7
2014-10-13 04:21shared: newline after var declarationsKyle Milz1+1-1
2014-10-13 04:20product_scraper: add support for text brandsKyle Milz1+7-3
2014-10-13 04:14rename -> shared.pmKyle Milz4+74-72
2014-10-13 04:12Shared: open the db in a common functionKyle Milz3+15-13
2014-10-13 03:57price_scraper: part_no -> part_numKyle Milz1+11-11
2014-10-13 03:53scraper: add last_scraped fieldKyle Milz2+15-9
2014-10-13 03:16price_scraper: use bridge tableKyle Milz1+17-25
2014-08-26 05:19price_scraper: close log fileKyle R W Milz1+2-0
2014-08-19 04:59price_scraper:split the notion of verbose and loggingKyle R W Milz3+18-19
2014-08-19 04:58config: update html class for visions price fieldKyle R W Milz1+2-2
2014-08-19 04:30product_scraper: can't return if not inside a functionKyle R W Milz1+1-1
2014-08-14 04:44pricechart.db: store/get db file name from config fileKyle R W Milz4+11-3
2014-08-14 04:37product_scraper: remove newline and old commentsKyle R W Milz1+0-4
2014-08-14 04:36product_scraper: use email and smtp from config fileKyle R W Milz3+5-3
2014-08-14 04:33product_scraper: simplify verbose flagKyle R W Milz1+1-5
2014-08-14 04:32product_scraper: send reports via emailKyle R W Milz1+49-7
2014-08-13 07:48price_scraper: move timing output closer to loopKyle R W Milz1+3-3
2014-08-13 07:48price_scraper: move variable declarationsKyle R W Milz1+2-3
2014-08-13 07:46price_scraper: insert duration into dbKyle R W Milz1+5-4
2014-08-13 07:42product_scraper: disconnect from databaseKyle R W Milz1+2-0
2014-08-13 07:41product_scraper: use user_agent from config fileKyle R W Milz1+4-4
2014-08-13 07:40product_scraper: remove unused useKyle R W Milz1+0-1
2014-08-13 07:38various: rename "path" to "general" in config fileKyle R W Milz3+10-9
2014-08-13 07:31pricechart.cfg: renameKyle R W Milz2+3-3
2014-08-13 07:29price_scraper: move more config file stuff into sharedKyle R W Milz2+9-4
2014-08-13 07:24price_scraper: move grammar parser into shared pmKyle R W Milz2+26-28
2014-08-13 07:17price_scraper: sort vendor keysKyle R W Milz1+4-4
2014-08-13 07:08price_scraper: implement database support for price savingKyle R W Milz1+21-2
2014-08-13 07:07product_scraper: match sneaky carriage returnKyle R W Milz1+2-2
2014-08-13 06:26price_scraper: hold prices in hash instead of arrayKyle R W Milz1+4-11
2014-08-13 06:26price_scraper: grammar does not expect title anymoreKyle R W Milz1+6-6
2014-08-13 06:14price_scraper: stop parsing data pathKyle R W Milz2+1-2
2014-08-13 06:11price_scraper: use new get_dom shared functionKyle R W Milz1+3-8
2014-08-13 05:46product_scraper: remove unused includeKyle R W Milz1+0-1
2014-08-13 05:43price_scraper: move get_dom into shared perl moduleKyle R W Milz2+26-15
2014-08-12 05:32price_scraper: remove functionKyle R W Milz1+64-68
2014-08-12 05:29price_scraper: fix compilation error and remove unused moduleKyle R W Milz1+1-2
2014-08-12 05:27price_scraper: remove some unused argsKyle R W Milz1+1-4
2014-08-12 05:25price_scraper: move some title generation code to product scraperKyle R W Milz2+12-12
2014-08-12 05:22price_scraper: remove products from config file now that we pull from dbKyle R W Milz2+4-237
2014-08-12 05:20price_scraper: use selectcol_arrayref instead of prepare, executeKyle R W Milz1+5-7
2014-08-12 03:28price_scraper: get products from databaseKyle R W Milz1+14-1
2014-08-12 02:58product_scraper: remove unused moduleKyle R W Milz1+0-1
2014-08-12 02:56price_scraper: rename config file to matchKyle R W Milz2+4-4
2014-08-12 02:54product_scraper: add type column and fix hash initKyle R W Milz1+7-6
2014-08-11 03:13product_scraper: add initial implementationKyle R W Milz1+166-0
2014-08-11 03:13pricegraph: rename to price_scraperKyle R W Milz1+0-0
2014-08-11 03:09price_scraper: remove title scraping codeKyle R W Milz1+1-14
2014-08-06 06:01pricegraph: initial commitKyle R W Milz3+574-0