@pmav: Πρόσθεσα τον κώδικά σου.
Πρόσθεσα και .gitignore για τα παραγόμενα αρχεία (.pls, xspf).
https://github.com/ubuntu-gr/eradio-pla ... a412c0f92c
Συντονιστής: konnn


sv1jsb έγραψε:Χρησιμοποιώ τον κώδικα του pmav και για το δεύτερο url και συνεχώς παίρνω 404.
Το ίδιο συμβαίνει και άμα το ανοίξεις με τον browser.
Χρησιμοποίησα την urllib2 και πρόσθεσα στους headers τα Referer και User-agent, πάλι το ίδιο.
Με τον μόνο τρόπο που κατάφερα να κατεβάσω την δεύτερη url ήταν με wget -p.
Σίγουρα έχει να κάνει με το ότι είναι μέσα στο iframe και ότι είναι asp, το βλέπει μάλλον διαφορετικά ο IIS και με κανονικό GET επιστρέφει 404.
Για να δούμε αν θα βρούμε λύση και να μην καταφύγουμε σε wget, γιατί ο κώδικας του pmav δουλεύει άψογα.

class Spider(HTMLParser):
def __init__(self, url):
HTMLParser.__init__(self)
self.src = ""
self.url = ""
req = urllib.urlopen(url)
self.feed(req.read())
def handle_starttag(self, tag, attrs):
if tag == "iframe":
for attr in attrs:
if attr[0] == "src" and attr[1].startswith("playerX"):
self.src = attr[1]
elif tag == "embed":
for attr in attrs:
if attr[0] == "src" and attr[1].startswith("http"):
self.url = attr[1]

simosx έγραψε:Θέλει το δεύτερο URL; Ή το αποτέλεσμα είναι πάντα της μορφής «http://www.e-radio.gr/asx/$cn.asx»;
Μπορείς να το διαπιστώσεις;
έγραψε:commit b314d12e1850bf8584b613c4383f43357f336878
Author: Savvas Radevic
Date: Thu Jul 7 22:01:06 2011 +0200
* Moved docstrings to top of each method
* Created debug print(): Radio link retrieval
* Added weblink to stationname dictionary
:100755 100755 417aa7e... 3380b47... M playlist-generator.py

def get_radiostation_files(self):
url_main = u"http://www.e-radio.gr/player/player.el.asp?sid="
rxstr = r"playerX.asp\?sID=(?P<sid>\d+)&cn=(?P<cn>[^&]*)&weblink="
rx = re.compile(rxstr)
i = 0
for station in self.stations:
url_station = url_main + station["id"]
spider = Spider(url_station)
match = rx.search(spider.src)
if match:
station.update(match.groupdict())
else:
print("Error in parsing radio station:", src)
sys.exit(-1)
# Για 4 σταθμούς μόνο, για τη δοκιμή μας.
i = i + 1
if i > 3:
break
http://www.e-radio.gr/player/playerX.asp?sID=1197&cn=alfaserres&weblink=
http://www.e-radio.gr/asx/alfaserres.asx

pmav99 έγραψε:Χρειαζόμαστε και δεύτερο dictionary? Γιατί να έχουμε stationname και να μην τα προσθέσουμε στο stations?
[{'logo': u'/logos/gr/mini/nologo.gif', 'title': u'\u0386\u03bb\u03c6\u03b1 Radio 96', 'id': u'1197', 'city': u'\u03a3\u0395\u03a1\u03a1\u0395\u03a3'}, ...
['1197': { 'logo': u'/logos/gr/mini/nologo.gif', 'title': u'\u0386\u03bb\u03c6\u03b1 Radio 96', 'city': u'\u03a3\u0395\u03a1\u03a1\u0395\u03a3'}, ... ]
<ASX Version="3">
<TITLE>Alfa Radio 96 - SERRES</TITLE>
<ABSTRACT>Member of E-Radio.gr</ABSTRACT>
<ENTRY>
<REF HREF = "http://s2.onweb.gr:8624"/>
<REF HREF = "mms://s2.onweb.gr:8624"/>
</ENTRY>
</ASX>
