sramsay64 / python-iview

Alternative frontend for ABC iView that can cache TV
GNU General Public License v3.0
11 stars 6 forks source link

When attempting retrieval of some articles (not all), we get a stack trace. #2

Closed mvanderkolff closed 9 years ago

mvanderkolff commented 9 years ago

//TODO Download Button 7 0 Exception in thread Thread-3: Traceback (most recent call last): File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner self.run() File "C:\sbsnapper\iview\iview\fetch.py", line 259, in run abort=self.abort, _self.kw) File "C:\sbsnapper\iview\iview\fetch.py", line 284, in hds_open_file return hds.fetch(_pos, dest_file=dest_file, _kw) File "C:\sbsnapper\iview\iview\hds.py", line 46, in fetch manifest = get_manifest(url, session) <=== This line File "C:\sbsnapper\iview\iview\hds.py", line 530, in get_manifest with http_get(session, url, ("video/f4m",)) as response: File "C:\sbsnapper\iview\iview\utils.py", line 228, in http_get response = session.open(req) File "C:\Python34\lib\urllib\request.py", line 469, in open response = meth(req, response) File "C:\Python34\lib\urllib\request.py", line 579, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python34\lib\urllib\request.py", line 507, in error return self._call_chain(_args) File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain result = func(*args) File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found

I printed out the url associated with that line, and got http://iviewmetered-vh.akamaihd.net/z/playback/_definst_/news/7PMs_Tx_1304.mp4/m anifest.f4m?hdcore=&hdnea=st=1428964875~exp=1428974874~acl=/*~hmac=53154135b93ab ed72fac1564eaaefc7856e1d2c7e232ddcbd69971de83cae289

Which upon retrieval indeed gave a 404.

I was looking through upstream's patches, but one that touched that area only seems to be making it cleaner, not fixing this issue.

mvanderkolff commented 9 years ago

When going through the iview interface with chrome logging, I noticed that it retrieved chunks like this: http://iviewmetered-vh.akamaihd.net/z/playback/_definst_/_video/news_7PMs_Tx_1304_,650000,494000,205000,40772,.mp4.csmil/0_e68d223eb3b2d7e4_Seg1-Frag61?pvtoken=exp%3D9999999999%7Eacl%3D%252f%252a%7Edata%3DZXhwPTE0MjkwNTIzMjN+YWNsPSUyZip+ZGF0YT1wdmMsc35obWFjPTk5YjA1NmRkZWVjYjM4ZjUzNjIyMTYwNDU0MTc2Y2U0NjhlYmQwMDBjYmQ0ZjI2MTVkOTZlMzllMTJkMTM0ZmY%3D%21JcOmp/+8TJ9xOWqc00wwHa8eNHAGGmEDqJlXNJ44PWc%3D%7Ehmac%3D910AF874BD71EA35F4D10619EDB28DE653DDB14A3CAEA27BF5658E51BC506098&hdntl=exp=1429052323~acl=%2f*~data=hdntl~hmac=dbd7c0301511b145d1a4898b7d255ffd2a8c8300e2590e29e1bc9e1d2eab23c3&hdcore=true&als=299.09,300,17.17,3,755,9211,24.96,0,0,79,f,62.91,1802.57,f,full,WYFVQNGHYYNN,2.11.3,79&hdcore=2.11.3

Don't know significance, but hey....

sramsay64 commented 9 years ago

This is semi fixed for iview-ng.py. It doesn't work on shows with only one episode though. I will get around to patching iview-tk.py. Once the parent repo for python iview fixes the 'shows with one episode' issue I will should be able to patch it to my repo as well.

mvanderkolff commented 9 years ago

Well, not quite: I tried to download Poldark using it:

C:\sbsnapper\python-iview-master>iview-ng.py iView $ find ounter iView $ help

            Basic Usage:
                    #Find a show by searching with the find command
                    iView $ find <name of show>
                    #The epesodes for a show can be listed using eps and the

number in the []'s from the output of the last find command iView $ eps 0

Inside the second []'s is the rating (G, PG, M, etc.) i

f there is one

Get the show using get and the number in the []'s from

the output of the last eps command iView $ get 1 Basic Usage Example: iView $ find 7 [0] 7.30 9 eps [1] That '70s Show 10 eps iView $ eps 0 7.30: [0] [None] 7.30 12/12/2014 [1] [None] 7.30 11/12/2014 [2] [None] 7.30 10/12/2014 [3] [None] 7.30 9/12/2014 --- extra entries have been removed --- iView $ get 1

iView $ find oldark [0] Poldark 2 eps iView $ eps 0 Poldark: [0] [PG] Poldark Series 1 Episode 3 [1] [PG] Poldark Series 1 Episode 2 iView $ get 1 {'id': '102191638', 'episode': '2', 'livestream': '', 'duration': 3498, 'home': '', 'broadcast': datetime.datetime(2015, 4, 19, 20, 45), 'rating': 'PG', 'date': datetime.datetime(2015, 4, 19, 21, 40), 'description': 'Ross, having repaired N ampara, now sets his sights on resurrecting his family mine to bring prosperity to the area. Verity makes an unsuitable match and Elizabeth sets tongues wagging . CAST: Aidan Turner, Eleanor Tomlinson.', 'series': '1', 'size': 292000000.0, ' url': 'poldark_01_02.mp4', 'expires': datetime.datetime(2015, 5, 3, 21, 40), 'ti tle': 'Poldark Series 1 Episode 2', 'thumb': 'http://cdn.iview.abc.net.au/thumbs /i/388/ZW0042A002S00552f3f6d134004.99684144_1280.jpg'} Traceback (most recent call last): File "C:\sbsnapper\python-iview-master\iview-ng.py", line 86, in main() File "C:\sbsnapper\python-iview-master\iview-ng.py", line 43, in main prompt(input(promptText)) File "C:\sbsnapper\python-iview-master\iview-ng.py", line 79, in prompt getEp(int(args[0])) File "C:\sbsnapper\python-iview-master\iview-ng.py", line 35, in getEp iview.fetch.fetch_program(ep.get('url')) File "C:\sbsnapper\python-iview-master\iview\fetch.py", line 177, in fetch_pro gram quiet=quiet, frontend=frontend) File "C:\sbsnapper\python-iview-master\iview\fetch.py", line 243, in fetch key=config.akamaihd_key, _kw) File "C:\sbsnapper\python-iview-master\iview\fetch.py", line 284, in hdsopen file return hds.fetch(_pos, dest_file=dest_file, _kw) File "C:\sbsnapper\python-iview-master\iview\hds.py", line 46, in fetch manifest = get_manifest(url, session) File "C:\sbsnapper\python-iview-master\iview\hds.py", line 530, in get_manifes t with http_get(session, url, ("video/f4m",)) as response: File "C:\sbsnapper\python-iview-master\iview\utils.py", line 228, in http_get response = session.open(req) File "C:\Python34\lib\urllib\request.py", line 469, in open response = meth(req, response) File "C:\Python34\lib\urllib\request.py", line 579, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python34\lib\urllib\request.py", line 507, in error return self._call_chain(_args) File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain result = func(*args) File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found

mvanderkolff commented 9 years ago

This appears to work perfectly with the present HEAD. I'm guessing that something in 8cf72ecd6b13d34fb61fef9abbe71513c8dbcba5 fixes it.