Log in to nytimes.com download crossword puzzle and convert to pdf script
Alec Jacobson
January 12, 2010
I have given my girlfriend a subscription to the New York Times crossword puzzle which she (graciously?) allows me to use. Using the help of the decode_crossword.pl perl script, I have made a bash script to log in to nytimes.com, grab today's puzzle in .puz
format and convert it to pdf so I can easily print and view it. Here's the script (replace userid and password with your own):
#!/bin/bash
if test -z $1 ; then
date=`date +%b%d%y`
else
date="$1"
fi
#
# log in to nytimes and save cookies
wget --post-data \
"USERID=youremail%40gmail.com&PASSWORD=yourpassword&is_continue=true" \
--save-cookies=cookies.txt --keep-session-cookies \
-O /dev/null\
http://www.nytimes.com/auth/login &>/dev/null
# download puzzle
wget --load-cookies=cookies.txt \
http://select.nytimes.com/premium/xword/$date.puz &>/dev/null
# get rid of cookies
rm cookies.txt
# convert to pdf
./decode_crossword -P $date.puz | ps2pdf - $date.pdf &>/dev/null
# get rid of .puz version
rm $date.puz
Update: NYTimes changed their login routine so now you should use something like:
#!/bin/bash
if test -z $1 ; then
date=`date +%b%d%y`
else
date="$1"
fi
wget \
--no-check-certificate \
https://myaccount.nytimes.com/auth/login \
-O login.html \
&>/dev/null
token=`grep token login.html | sed -e "s/^.*value=\"\([A-z0-9]*\)\".*$/\\1/g"`
expires=`grep expires login.html | sed -e "s/^.*value=\"\([A-z0-9]*\)\".*$/\\1/g"`
# log in as annie, should get rid of her password from this
wget --post-data \
"userid=youremail%40gmail.com&password=yourpassword&is_continue=false&remember=true&token=$token&expires=$expires" \
--save-cookies=cookies.txt --keep-session-cookies \
--no-check-certificate \
-O /dev/null \
https://myaccount.nytimes.com/auth/login \
&>/dev/null
# download puzzle
wget --load-cookies=cookies.txt \
http://select.nytimes.com/premium/xword/$date.puz &>/dev/null
# get rid of cookies
rm cookies.txt
# get rid of login cache
rm login.html
# convert to pdf
./decode_crossword -P $date.puz | ps2pdf - $date.pdf &>/dev/null
# get rid of .puz version
rm $date.puz