Skip to content

Instantly share code, notes, and snippets.

@sirhc
Last active August 29, 2015 14:03
Show Gist options
  • Save sirhc/cb7475f066ba60a9d34c to your computer and use it in GitHub Desktop.
Save sirhc/cb7475f066ba60a9d34c to your computer and use it in GitHub Desktop.
Screen scrape a tweet
#!/bin/bash -eu
curl -sL "$1" \
| perl -l -ne 'm{"text/xml\+oembed"} && m{title=".*? on Twitter: "([^"]*)""} && print $1' \
| perl -pe 's{&#(\d+);}{chr($1)}ge; s{"}{"}g;' \
| perl -pe 's{(https?://t.co/\w+)}{ `curl -s -D- $1 | awk '\''/^location:/{print \$2}'\'' | tr -d "\r\n"` }ge' \
| sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
#!perl
use strict;
use warnings;
use Test::More;
use Test::Command;
my $cmd = './tweet.sh';
stdout_is_eq(
[ $cmd, 'https://twitter.com/JordanPeele/status/484153672369061888' ],
( "The Shining\n" .
"๐Ÿ‘ช๐Ÿš™๐Ÿ—ป๐Ÿฃ\n" .
"๐ŸŒš๐Ÿฆ๐Ÿ™‡\n" .
"๐Ÿ™‡๐Ÿšฒ\n" .
"๐Ÿ‘ฆ๐Ÿ“๐ŸŽพ\n" .
"๐Ÿ™‡๐Ÿšฒ๐Ÿšช\n" .
"๐Ÿ‘ฉ๐Ÿ‘ฆ๐Ÿ“๐Ÿ˜ก\n" .
"๐Ÿ™‡๐Ÿšฒ๐Ÿ‘ญ\n" .
"๐Ÿ‘ฆ๐Ÿท๐Ÿ‘ฑ\n" .
"โ˜๏ธ๐Ÿ™‡\n" .
"๐ŸŒš๐Ÿ“บ\n" .
"๐Ÿ‘ฆ๐Ÿšช๐Ÿ›€๐Ÿ’๐Ÿ‘ต\n" .
"๐Ÿ’ƒ๐Ÿšถ๐Ÿ’ƒ๐Ÿšถ๐Ÿ‘ฆ๐Ÿท๐Ÿ‘ฑ\n" .
"๐Ÿ‘ฆ๐Ÿšฝ๐Ÿ‘ด\n" .
"๐ŸŒšโœˆ๏ธ\n" .
"๐Ÿ‘ฉ๐Ÿ“„๐Ÿ“„๐Ÿ“„๐Ÿ“„๐Ÿ“„๐Ÿ“„๐Ÿ˜ฑ\n" .
"๐Ÿ‘ฉ๐Ÿ’ฅ๐Ÿ‘ฆ๐Ÿ’ค\n" .
"๐Ÿ‘ฉ๐Ÿ”๐Ÿ‘ฆ\n" .
"๐Ÿ‘ด๐Ÿ”‘๐Ÿ‘ฆ\n" .
"๐Ÿ‘ฆ๐Ÿ”จ๐Ÿšช๐Ÿ”ช๐Ÿ‘ฉ\n" .
"๐ŸŒš๐Ÿšœ\n" .
"๐Ÿ‘ฆ๐Ÿ”จ๐ŸŒš๐Ÿ’€\n" .
"๐Ÿ‘ฉ๐Ÿ‘บ๐Ÿ‘จ\n" .
"๐Ÿ‘ฉ๐Ÿ’€๐Ÿ’€๐Ÿ’€\n" .
"๐Ÿ‘ฉ๐Ÿšช๐Ÿ’‰๐Ÿ’‰๐Ÿ’‰\n" .
"โ„๏ธ๐ŸŒณ๐Ÿ™‡๐ŸŒณโ„๏ธ\n" .
"๐Ÿ”จ๐Ÿ‘ฆโ›„๏ธ\n" .
"๐Ÿ‘ฆ\n"
),
'https://twitter.com/JordanPeele/status/484153672369061888 (Emoji)',
);
stdout_is_eq(
[ $cmd, 'https://twitter.com/hitsuji44/status/482031745961717762' ],
"ๅพใ€…ใซ้›†ใพใฃใฆใใŸไปฎ็ฝฎใๅ ดใ€‚ใใ‚Œใฏใ€ไบŒไบบๅญไพ›ใ‚’ๆŒใคๅ‹ไบบๅฎ…ใฎ็œŸ่ฃใซๅญ˜ๅœจใ™ใ‚‹ใ€‚ๆบ€ๆฏใซใชใ‚Œใฐใ€็ซ‹ๆดพใชใƒ›ใƒƒใƒˆใ‚นใƒใƒƒใƒˆใจใชใ‚‹ใฎใ ใ‚ใ†ใ€‚่ฆ‹ใฆใ„ใ‚‹ใ ใ‘ใงใ€้ฆ–ใฎ่…ซใ‚ŒใŒ็—›ใฟๅ‡บใ—ใฆใใŸใ€‚(-_-) http://twitter.com/hitsuji44/status/482031745961717762/photo/1\n",
'https://twitter.com/hitsuji44/status/482031745961717762 (Japanese)',
);
stdout_is_eq(
[ $cmd, 'https://twitter.com/jaqque/status/484759521420922880' ],
( "Multiball!\n" .
"Multiline!\n" .
"https://www.youtube.com/watch?v=iq1d07gYl8o\n" .
"(This is me testing Prospero)\n"
),
'https://twitter.com/jaqque/status/484759521420922880 (Multi ball^Wline)',
);
stdout_is_eq(
[ $cmd, 'https://twitter.com/paleofuture/status/593496008232800256' ],
qq("A Doctor Oz Investigation: What Happens When You Die?"\n),
'https://twitter.com/paleofuture/status/593496008232800256 (Reply)',
);
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment