Advertisement
Guest User

Untitled

a guest
May 13th, 2016
783
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.92 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require 'net/http'
  3. require 'json'
  4. require 'openssl'
  5. require 'securerandom'
  6. require 'mechanize'
  7.  
  8. stationid = ARGV[0].to_i
  9.  
  10. $fbuser = "herp"
  11. $fbpass = "derp"
  12. $fbloginurl = 'https://m.facebook.com/'
  13. $fbauthurl = 'https://www.facebook.com/dialog/oauth?client_id=2058545547617751&redirect_uri=http://tvair.swisscom.ch/beta/oauthRedirect?provider=facebook&scope=public_profile,user_birthday,user_location'
  14. $agent = "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
  15. $host = "services.sg2.etvp01.sctv.ch"
  16. $auth = ""
  17. $free = ["3+","3+ HD","3sat CH","3sat HD","4+","4+ HD","5+ HD","Alpenland TV","ARD","ARD HD","Arte Deutsch","Arte D HD","Arte Français","Arte HD Français","BBC News HD","BBC One","BBC World News","Bliss","Bodensee TV HD","BR","BR HD","Canal 9","Canal 9 HD","Canal Alpha JU","Canal Alpha JU HD","Canal Alpha NE","Canal Alpha NE HD","Canale 5","Capital TV","chilled tv","Clubland TV","CNBC Europe","CNN","Comedy Central CH","Comedy Central CH HD","Disney Channel D","Energy TV HD","Euronews D/E","Eurosport D","Flava","France 2","France 3","Heart TV","Info TV Davos Klosters HD","Italia 1","joiz","joiz HD","Kabel eins CH","Kabel eins CH HD","Kanal 9","Kanal 9 HD","KiKa","KiKa HD","Kiss TV","La Télé","La Télé HD","Léman Bleu Télévision","M6 CH","M6 CH HD","MDR","MDR HD","MTV CH HD","MTV Schweiz","musig24 HD","n-tv CH","n-tv CH HD","N24 CH","N24 CH HD","NDR","NDR HD","Nickelodeon CH","Nickelodeon CH HD","NRJ12","ORF 2","ORF 2 HD","ORF eins","ORF eins HD","Phoenix TV","Phoenix TV HD","Pro7 CH","Pro 7 CH HD","Pro7 Maxx CH","Puls 8 HD","Rai 1","Rai 2","Rai HD","Rete 4","Rouge TV","Rouge TV HD","RSI La 1","RSI La 1 HD","RSI La 2","RSI La 2 HD","RTL 2 CH","RTL 2 CH HD","RTL CH","RTL CH HD","RTL Nitro CH","RTL Nitro CH HD","RTS deux","RTS deux HD","RTS un","RTS un HD","S1 HD","Sat.1 CH","Sat.1 CH HD","Servus TV CH","Sixx CH","Sixx CH HD","Sport1 CH","Sport1 CH HD","Sport Szene Fernsehen","SRF 1","SRF 1 HD","SRF info","SRF info HD","SRF zwei","SRF zwei HD","Star TV","Super RTL CH","Super RTL CH HD","SWR","SWR HD","TC Flash HD D","TC Flash HD F","TC Live 1","TC Live 2","TC Live 3","TC Live 4","TC Live 5","TC Live 6","TC Live 7","TC Live 8","TC Live 9","TC Live 10","TC Live 11","TC Live 12","TC Live 13","TC Live 14","TC Live 15","TC Live 16","TC Live 17","TC Live 18","TC Live 19","TC Live 20","TC Live 21","TC Live 22","TC Live 23","TC Live 24","TC Live 25","TC Live 26","TC Live 27","TC Live 28","TC Live 29","TC Live 30","TC Live 31","TC Sport Flash D","TC Sport Flash F","Tele 1","Tele 1 HD","Telebasel","Telebasel HD","Telebasel HD2","Tele Bielingue","TeleBärn","Tele Bärn HD","Tele M1","Tele M1 HD","Tele Ticino","Tele Ticino HD","Tele Top HD","Tele Top ZH","Tele Züri","Tele Züri HD","TF1 CH","The Box","TMC CH","TV5 MONDE EUROPE","TV24 HD","TVM3","TVO","TV Rheintal","TV Südostschweiz","TV Südostschweiz HD","Télé Versoix","VIVA CH","VIVA CH HD","VOX CH","VOX CH HD","WDR","WDR HD","Welt der Wunder CH TV HD","ZDF","ZDF.kultur","ZDF.kultur HD","ZDF HD","ZDFinfo","ZDFinfo HD","ZDFneo","ZDFneo HD"]
  18.  
  19.  
  20. def get_oauth
  21.     mechanize = Mechanize.new
  22.     page = mechanize.get($fbloginurl)
  23.     form = page.form_with(:method => 'POST')
  24.     form.email = $fbuser
  25.     form.pass = $fbpass
  26.     page = form.submit
  27.  
  28.     page = mechanize.get($fbauthurl)
  29.     page.uri.to_s.match("code=(.*)#")[1]
  30. end
  31.  
  32. def get_header
  33.         {       'Host' => $host,
  34.                 'Authorization' => "Bearer #{$auth}",
  35.                 'User-Agent' => $agent,
  36.                 'Content-type' => 'application/json;charset=utf-8' }
  37. end
  38.  
  39. def get_http(base)
  40.         http = Net::HTTP.new(base, 443)
  41.         http.use_ssl = true
  42.         http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  43.     http
  44. end
  45.  
  46. def get(base, path)
  47.         get_http(base).get(path, get_header)
  48. end
  49.  
  50. def post(base, path, data)
  51.         get_http(base).post(path, data, get_header)
  52. end
  53.  
  54. data = get($host, "/portfolio/tv/channels")
  55. channels = JSON.parse(data.body)
  56.  
  57. hash = {}
  58. channels.select{|c| $free.include?(c['Title'])}.each_with_index do |c, i|
  59.     hash[i+1] = c['Identifier']
  60.     if stationid.zero?
  61.         print "%3d: %-20.20s |" % [i+1, c['Title']]
  62.         puts "" if (i+1) % 4 == 0
  63.     end
  64. end
  65.  
  66. unless stationid.zero?
  67.     fbauth = get_oauth
  68.     facebook = {    'Application' => { 'Identifier' => '6dffc904-1d70-414c-88aa-697dee2ef054' },
  69.                     'Device' =>  {'DeviceType' => 'Computer', 'Name' => 'My_PC'},
  70.                     'Language' => 'de',
  71.                     'OAuth2' => {'Code' => fbauth, 'Provider' => 'facebook', 'RedirectUri' => 'http://tvair.swisscom.ch/beta/oauthRedirect?provider=facebook' }
  72.                }.to_json
  73.  
  74.  
  75.     data = post($host, "/account/login", facebook)
  76.     $auth = JSON.parse(data.body)["Identifier"]
  77.     data = get($host, "/streaming/LiveTV/#{hash[stationid]}/HLS/0/None")
  78.     url = JSON.parse(data.body)["Address"]
  79.     puts url
  80. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement