Jump to content


Photo

gstreamer passing cookie http header via URI


  • Please log in to reply
33 replies to this topic

#1 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 7 July 2013 - 20:13

Hi All,
We are trying to create a vod plugin for enigma2 but have an issue,

our play code is below, which is working w/o any problem for many vod streams,
but some links requires special http header like custom user-agent and also cookie.

 

self.reference = eServiceReference(4097, 0, self.vod_url)
self.reference.setName(self.title)
self.session.nav.playService(self.reference)

http headers are below for the player;

 

Hypertext Transfer Protocol
	GET /hv/42520740.mp4?sign=9445ae0ee23498b992450b38ac3ee4ca8133ede7&slave[]=s%3Ahttp%3A%2F%2F127.0.0.1%3A5010%2F42520740-hv.mp4&p=0&expire_at=1372967538|video_key=88265 HTTP/1.1
 
	Request Version: HTTP/1.1
	Host: cdn9.video.mail.ru
	Connection: close
	icy-metadata: 1
	transferMode.dlna.org: Streaming
	User-Agent: Dream Multimedia Dreambox Enigma2 Mediaplayer
   
	[Full request URI: http://cdn9.video.mail.ru/hv/42520740.mp4?sign=9445ae0ee23498b992450b38ac3ee4ca8133ede7&slave[]
=s%3Ahttp%3A%2F%2F127.0.0.1%3A5010%2F42520740-hv.mp4&p=0&expire_at=1372967538 cookies=video_key=88265]
	[HTTP request 1/1]

But I want to add a cookie header to the http request which will be send via URl (video_key=88265).

Is there any way of altering http headers for the player?

Many thanks in advance for any help.


Edited by msenoz, 7 July 2013 - 20:14.


Re: gstreamer passing cookie http header via URI #2 pieterg

  • PLi® Core member
  • 32,766 posts

+245
Excellent

Posted 7 July 2013 - 20:19

the agent is easy, you can configure it with the e2 config option config.mediaplayer.useAlternateUserAgent=Yes and config.mediaplayer.alternateUserAgent=some agent

Any other headers you'd need to implement yourself, have a look at servicemp3.cpp
eServiceMP3::gstHTTPSourceSetAgent, to see how the user-agent property is set.

if you're lucky, the http source you're using has some other properties you could use for your cookie

Re: gstreamer passing cookie http header via URI #3 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 7 July 2013 - 21:31

Hi, I modified servicemp3 for my plugin and now it's possible to set also extra http headers.

 

You just need to download modified servicemp3 version:

http://archivy-czsk....s/servicemp4.so

 

Then your can set extra headers like this:

import servicemp4
SERVICEMP4_ID = 4113

config.plugins.archivCZSK = ConfigSubsection()
config.plugins.archivCZSK.videoPlayer = ConfigSubsection()
config.plugins.archivCZSK.videoPlayer.extraHeaders = NoSave(ConfigText(default=""))

def setExtraHeaders(dictHeaders):
        headersString = '#'.join([(key + ':' + value) for key, value in dictHeaders.iteritems()])
        config.plugins.archivCZSK.videoPlayer.extraHeaders.setValue(headersString)

def playWithHeaders(session, url, headers):
        setExtraHeaders(url, headers)
        sref = eServiceReference(SERVICEMP4_ID,0,url)
        session.nav.playService(sref)

testPlay():
        session = getSession()
        headers={"video_key":"88265"}
        url = "http://somevideourl.com"
        playWithHeaders(session,url,headers)


Edited by mx3L, 7 July 2013 - 21:33.


Re: gstreamer passing cookie http header via URI #4 pieterg

  • PLi® Core member
  • 32,766 posts

+245
Excellent

Posted 7 July 2013 - 23:00

Where can we find the sourcecode?

Re: gstreamer passing cookie http header via URI #5 radxnl

  • Senior Member
  • 1,527 posts

+57
Good

Posted 8 July 2013 - 00:05

https://code.google..../servicemp4.cpp

 



Re: gstreamer passing cookie http header via URI #6 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 8 July 2013 - 06:01

@pieterg

This is source of latest version http://code.google.c...ce/detail?r=355



Re: gstreamer passing cookie http header via URI #7 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 8 July 2013 - 08:00

Hi, I modified servicemp3 for my plugin and now it's possible to set also extra http headers.

 

You just need to download modified servicemp3 version:

http://archivy-czsk....s/servicemp4.so

 

Then your can set extra headers like this:

import servicemp4
SERVICEMP4_ID = 4113

config.plugins.archivCZSK = ConfigSubsection()
config.plugins.archivCZSK.videoPlayer = ConfigSubsection()
config.plugins.archivCZSK.videoPlayer.extraHeaders = NoSave(ConfigText(default=""))

def setExtraHeaders(dictHeaders):
        headersString = '#'.join([(key + ':' + value) for key, value in dictHeaders.iteritems()])
        config.plugins.archivCZSK.videoPlayer.extraHeaders.setValue(headersString)

def playWithHeaders(session, url, headers):
        setExtraHeaders(url, headers)
        sref = eServiceReference(SERVICEMP4_ID,0,url)
        session.nav.playService(sref)

testPlay():
        session = getSession()
        headers={"video_key":"88265"}
        url = "http://somevideourl.com"
        playWithHeaders(session,url,headers)

Many thanks for your great support I will test soon,

just to clarify, as I want to send the "video_key=88265" as cookie, my code should be below, right?

testPlay():
        session = getSession()
        headers={"Cookies":"video_key=88265"}
        url = "http://somevideourl.com"
        playWithHeaders(session,url,headers)


Re: gstreamer passing cookie http header via URI #8 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 8 July 2013 - 14:48

You're welcome,

It's correct but for videomail should be header "Cookie" instead "Cookies":

headers={"Cookie":"video_key=88265"}

Edited by mx3L, 8 July 2013 - 14:51.


Re: gstreamer passing cookie http header via URI #9 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 8 July 2013 - 20:57

@mx3L, I have tried but got below error;

Currently I have mipsel (oe1.6) image is this the reason of the error?

If yes can you please advise how to compile for this version or if you have compiled for mipsel would be great.

import servicemp4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./servicemp4.so)


Re: gstreamer passing cookie http header via URI #10 Erik Slagter

  • PLi® Core member
  • 46,960 posts

+541
Excellent

Posted 12 July 2013 - 10:36

@pieterg

This is source of latest version http://code.google.c...ce/detail?r=355

Or even better a diff against current OpenPLi git.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: gstreamer passing cookie http header via URI #11 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 15 July 2013 - 08:59

@pieterg

This is source of latest version http://code.google.c...ce/detail?r=355

Or even better a diff against current OpenPLi git.

Would be great to add the current OpenPli git



Re: gstreamer passing cookie http header via URI #12 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 15 July 2013 - 09:29

Can we get a clear patch then?


WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: gstreamer passing cookie http header via URI #13 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 15 July 2013 - 13:46

Can we get a clear patch then?

 

@mx3L may check and advise.



Re: gstreamer passing cookie http header via URI #14 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 16 July 2013 - 20:02

Attached File  servicemp3_extraheaders_support.patch.txt   5.39KB   17 downloads

 

client code:

config.mediaplayer.extraHeaders = NoSave(ConfigText(default=""))

def setExtraHeaders(dictHeaders):
        headersString = '|'.join([(key + ':' + value) for key, value in dictHeaders.iteritems()])
        config.mediaplayer.extraHeaders.setValue(headersString)

def resetExtraHeaders()
        config.mediaplayer.extraHeaders.setValue("")

def play(session, url, headers=None):
        resetExtraHeaders()
        if headers:
                setExtraHeaders(headers)
        sref = eServiceReference(4097,0,url)
        session.nav.playService(sref)

testPlay():
        session = getSession()
        headers={"Cookie":"video_key=88265"}
        url = "http://somevideourl.com"
        play(session,url,headers)


Re: gstreamer passing cookie http header via URI #15 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 16 July 2013 - 20:54

This patch is not useable.... It does not have the right format.

 

FYI: http://openpli.org/f...64/#entry356986


Edited by littlesat, 16 July 2013 - 20:57.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: gstreamer passing cookie http header via URI #16 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 16 July 2013 - 21:15

Thanks, hope it's allright now.

 

Attached File  0001-servicemp3-added-extra-headers-support.patch.txt   6.09KB   10 downloads



Re: gstreamer passing cookie http header via URI #17 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 16 July 2013 - 21:22

Sorry....

 

the patch is full of white spaces (empty lines with only spaces or tabs) and a block of code is using spaces instead of tabs to indent.


WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: gstreamer passing cookie http header via URI #18 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 16 July 2013 - 22:18

Sorry, my IDE is using spaces instead of tabs. I removed all white spaces.

Attached File  0001-servicemp3-added-extra-headers-support.patch.txt   4.78KB   20 downloads



Re: gstreamer passing cookie http header via URI #19 msenoz

  • Member
  • 16 posts

0
Neutral

Posted 18 July 2013 - 11:42

@littlesat, has the patch been added to the current pli git?



Re: gstreamer passing cookie http header via URI #20 Erik Slagter

  • PLi® Core member
  • 46,960 posts

+541
Excellent

Posted 21 July 2013 - 09:11

Apparently not. Littlesat, are you going to commit this?

* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.



0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users