Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require 'net/http'
- require 'json'
- require 'openssl'
- require 'securerandom'
- require 'mechanize'
- stationid = ARGV[0].to_i
- $fbuser = "herp"
- $fbpass = "derp"
- $fbloginurl = 'https://m.facebook.com/'
- $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'
- $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"
- $host = "services.sg2.etvp01.sctv.ch"
- $auth = ""
- $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"]
- def get_oauth
- mechanize = Mechanize.new
- page = mechanize.get($fbloginurl)
- form = page.form_with(:method => 'POST')
- form.email = $fbuser
- form.pass = $fbpass
- page = form.submit
- page = mechanize.get($fbauthurl)
- page.uri.to_s.match("code=(.*)#")[1]
- end
- def get_header
- { 'Host' => $host,
- 'Authorization' => "Bearer #{$auth}",
- 'User-Agent' => $agent,
- 'Content-type' => 'application/json;charset=utf-8' }
- end
- def get_http(base)
- http = Net::HTTP.new(base, 443)
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- http
- end
- def get(base, path)
- get_http(base).get(path, get_header)
- end
- def post(base, path, data)
- get_http(base).post(path, data, get_header)
- end
- data = get($host, "/portfolio/tv/channels")
- channels = JSON.parse(data.body)
- hash = {}
- channels.select{|c| $free.include?(c['Title'])}.each_with_index do |c, i|
- hash[i+1] = c['Identifier']
- if stationid.zero?
- print "%3d: %-20.20s |" % [i+1, c['Title']]
- puts "" if (i+1) % 4 == 0
- end
- end
- unless stationid.zero?
- fbauth = get_oauth
- facebook = { 'Application' => { 'Identifier' => '6dffc904-1d70-414c-88aa-697dee2ef054' },
- 'Device' => {'DeviceType' => 'Computer', 'Name' => 'My_PC'},
- 'Language' => 'de',
- 'OAuth2' => {'Code' => fbauth, 'Provider' => 'facebook', 'RedirectUri' => 'http://tvair.swisscom.ch/beta/oauthRedirect?provider=facebook' }
- }.to_json
- data = post($host, "/account/login", facebook)
- $auth = JSON.parse(data.body)["Identifier"]
- data = get($host, "/streaming/LiveTV/#{hash[stationid]}/HLS/0/None")
- url = JSON.parse(data.body)["Address"]
- puts url
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement