Halo CE MCC: Looking for players! We're playing by majority vote come join us GT: xXxSkySkyxXx

#dc comics#dc#batman#batfam#bruce wayne#dick grayson#tim drake#batfamily#dc fanart



seen from Greece
seen from United States
seen from United States

seen from United States
seen from Germany
seen from Malaysia
seen from Egypt

seen from United States

seen from United States
seen from Yemen
seen from United States

seen from Maldives
seen from Germany
seen from United States
seen from Colombia

seen from Latvia

seen from United States
seen from Germany

seen from Netherlands
seen from United States
Halo CE MCC: Looking for players! We're playing by majority vote come join us GT: xXxSkySkyxXx

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
So long Halo 3 Players...
Due to a general lack of interest (I'm assuming most players of Halo 3 have moved on to Halo: Reach by now) and a lack of resources, time and money, I've decided to discontinue Halo 3 Players in it's present form. I would really love to rewrite the whole thing for Halo: Reach at some point in the future but I am not sure when I will be able to get this done so I'm not going to tease anyone by saying "soon". I appreciate all the support from Halo 3 Players. We started out as the underdog and slowly but surely ended up being the most used Halo 3 stats app on Facebook. Halo 3 Players was my first "large" project and I had a lot of fun writing it. I hope to have just as much fun writing every else in my near and far future. I apologize for the lack of notice to the few active users Halo 3 Players still has.
Stay tuned here for more info on what I'm working on and if Halo: Reach Players ever does materialize, I'll post about it here first.
It's been a fun ride!
XMonline in Ruby!
Who wants to log in and go through the hassle of navigating a website when you can type a simple command to get the same thing? Not me! I usually use the MediaPlayerConnectivity Extension which lets me launch streaming media outside of the browser, but I wanted to go a step further and remove the browser completely from my XM Radio listening when Iâm outside of my car. I created a nice little Ruby script for doing just that. With the wonderful Mechanize gem itâs quite easy to traverse websites without every looking at them.
The first thing (I mean, you obviously need Ruby, so go get that if you donât have it yet) your going to want to do, is install the mechanize gem.
gem install mechanize -y
If you get permission errors, you probably need to run sudo gem install mechanize -y instead.
After that, you can copy the code below and paste it into your own xmradio.rb file. Itâs pretty easy to use too. The first time you run the script, it will ask you a few questions about your login information and what type of media player you want to use. After this, you wonât see that message again unless you delete your ~/.xmradio file. Youâll probably need to make sure to chmod a+x xmradio.rb and you may want to throw the file somewhere like /usr/bin or somewhere thatâs in your PATH so that you can execute it easily. The rest is easy!
xmradio.rb 202
The above command will launch the script, connect to listen.xmradio.com, log you in and start your preferred player. The number you specify after the xmradio.rb is the channel you wish to listen to. If you donât specify a channel, it will play whatever default channel you chose when you first configured. If you ever want to reconfigure the script, either edit ~/.xmradio or just delete it and the next time you launch xmradio.rb, youâll be asked the same questions again.
In the near future, I think it will be cool to add a couple of features, such as the ability to change channels while the script is running, or maybe the ability to save the stream with certain players. The recommended player is mplayer right now, but I also tested it a little bit with xine. Code is after the jump! Go get it!
#!/usr/bin/env ruby
Filename : xmradio.rm
Author : Steve Ehrenberg
URL : http://blog.dnite.org
listen to xmonline from your command line #
Make sure you install the mechanize gem. This is the only gem
required by this script.
configuration is stored in ~/.xmradio #
This file is a yaml file and needs to stay correctly formatted.
If you edit the file by hand, donât add any extra spaces or tabs.
You can always just delete ~/.xmradio and this script will prompt
you for all the information again. #
usage: xmradio [channel]
require âfileutilsâ require ânet/httpâ require âuriâ require âyamlâ require ârubygemsâ require âmechanizeâ
def main
load and parse configuration config = load_config config[âchannelâ] = ARGV0 unless ARGV0 == ââ || ARGV0.nil?
log in to your xmonline account with Mechanize. agent = WWW::Mechanize.new page = agent.get âhttp://listen.xmradio.comâ login_form = page.form(âloginâ) login_form.user_id = config[âemailâ] login_form.pword = config[âpasswordâ] page = agent.submit(login_form)
exit if the email and password were invalid. exit_now âYou entered a wrong email and password.â if page.body =~ /Invalid email and\/or password\./
Display the userâs name just to show we care. puts ââ, page.search("//td[@class=âtBlackâ]//span[@class=âtDkRedâ]").innerHTML, ââ
Weâll find the stream URL below. page = agent.get âhttp://player.xmradio.com/player/2ft/playMedia.jsp?ch=#{config[âchannelâ]}&speed=#{config[âqualityâ]}â stream = page.at(â//object[id='xmmediaplayer']//param[name=âFileNameâ]â)[âvalueâ].gsub(/\&/, â\\\\&â) puts âStreaming from #{stream}âŚâ, ââ
Start a new thread with the player in it player = Thread.new(config[âplayerâ]) do |player| `#{player} #{stream} 2> /dev/null` end
Display the initial information puts âNow Listening ToâŚâ print âArtist ::\nTitle ::\nAlbum ::\nChannel ::\nâ
Loop while the script stays running and keep fetching song info while true info = now_playing_info( agent.get(âhttp://player.xmradio.com/padData/pad_data_servlet.jsp?channel=#{config[âchannelâ]}â) ) channel = â#{info[âch_nameâ]} | #{info[âch_numâ]}â print â#{ansi_esc channel} #{ansi_esc info[âalbumâ]} #{ansi_esc info[âtitleâ]} #{ansi_esc info[âartistâ]} #{reset_cursor}â $stdout.sync = true sleep 2 trap(âSIGINTâ) { exit_now âXM online stoppedâŚâ } end end
adds the ansi escape sequences to move up 1 line, go to character 12,
erase the line after character 12, and turn on and off bright. def ansi_esc(string) â\e[A\e[12G\e[K\e[1m#{string}\e[0mâ end
turns off bright, moves the cursor down 4 lines and jumps to beginning of line. def reset_cursor â\e[0m\e[4B\e[1Gâ end
Parse the page and throw the information into a hash def now_playing_info(page) info = { âtitleâ => page.at(âsongtitleâ).innerHTML, âartistâ => page.at(âartistâ).innerHTML, âalbumâ => page.at(âalbumâ).innerHTML, âch_numâ => page.at(âchannelnumberâ).innerHTML, âch_nameâ => page.at(âchannelnameâ).innerHTML } end
Load the config from ~/.xmradio or start creation of a new config. def load_config new_config unless FileTest.exist?(â#{ENV[âHOMEâ]}/.xmradioâ) config = open(â#{ENV[âHOMEâ]}/.xmradioâ) { |f| YAML.load(f) } rescue exit_now âProblem loading your config..â end
Save the configuration to ~/.xmradio def save_config(config) config.to_yaml return true if open(â#{ENV[âHOMEâ]}/.xmradioâ, âwâ) { |f| YAML.dump(config, f) } false end
A very user friendly configuration method. Asks the user all the
questions it needs very nicely and sends the information over to
be saved. def new_config puts âLooks like this is your first time running this script. I needâ,âa few small bits of information to get your started.â,ââ,âYou need to have a valid account for listen.xmradio.com to useâ,âthis. What\âs the email address you use to login? [REQUIRED]â email = $stdin.gets.chomp exit_now âYou have to enter an email address to continueâ if email == ââ puts ââ, âOk, how about the password? [REQUIRED]â password = $stdin.gets.chomp exit_now âYou need to enter your password to continueâ if password == ââ puts ââ, âGreat. XMonline allows you to listen to either a lowâ,âquality stream, or high. Which one would you like? high/low? [default: high]â quality = $stdin.gets.chomp quality = quality =~ /^l/i ? âlowâ : âhighâ puts ââ, âAlmost done. What media player would you like to use toâ,âstream XMonline? [mplayer/xine/xmms/alsaplayer] [default: mplayer]â player = $stdin.gets.chomp exit_now âYou need to specify a valid player.\nSupported played are mplayer, xine, xmms and alsaplayer.â unless player =~ /^m/i || player =~ /^xi/i || player =~ /^xm/i || player =~ /^a/i || player == ââ player = âmplayer -msglevel all=-1 -playlistâ if player =~ /^m/i || player == ââ player = âxine -I âno-logoâ if player =~ /^xi/i player = âxmmsâ if player =~ /^xm/i player = âalsaplayerâ if player =~ /^a/i puts ââ, âLast question. This script allows you to use a default channelâ,âthat will always start when you don\ât enter a different channelâ,âat the command line. What\âs your favorite XM channel? [default: 202]â channel = $stdin.gets.chomp channel = â202â if channel == ââ config = {âemailâ => email, âpasswordâ => password, âqualityâ => quality, âplayerâ => player, âchannelâ => channel} return puts(ââ,âAll done with your setup! Enjoy XMonline!â) if save_config config exit_now âThere was a problem saving your config.â end
Display an error message and exit. def exit_now(message=âerror!â) puts ââ,message,ââ exit end
main
Leave comments with any sort of problems or suggestions you might have.