Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: perteus 27 Ledna 2012, 19:49:19
-
Ahojky vsem,
jsem zacatecnik v pythonu a jen bych potreboval jednu vec. Nejak nechapu jak udelat nasledujici.
Mejme soubor soubor a v tomto souboru mejme toto
radio : http://stream.radio.com
prave toto mi vrta hlavou. Jakym zpusobem udelat, abych pokud zadam
stanice=input('zadejte nazev stanice')
tak aby misto radio byl soucasti promenne odkaz.
Asi je to blbost omlouvam se za to... treba to jde udelat i pomoci seznamu, ale dost jsem to nepochopil neb, vsude jsou priklady jen s cisly a nikde se neobjevilo presne to co potrebuji :/ Takze bych poprosil o schovyvost a slusne vysvetlit treba jak to udelat nebo ze to udelat nejde ... dekuji.
-
Ahoj,
rád pomůžu, ale moc tomu nerozumím.
Máš soubor, který obsahuje odkazy na různá rádia ve formátu "název:odkaz". Jedno rádio na řádek.
Pak se zeptáš uživatele na jméno stanice.
Program vybere ze souboru řádek s tímto jménem stanice a vypíše příslušný odkaz na tuto stanici. Je to tak?
-
Omlouvám se za spatne polozeny dotaz. V Badoo jemného udělal skript kdy jsem do složky Radio uložil playlist a podle zadaného názvu se spustil mplayer s tím playlistem.
Ted chci podobně tonudelat v pythonu3
Pro zjednoduseni chci mit třeba soubor radia a v tom by byl na každém řádku název radia a odkaz streamu.
Logický si říkám ze bych si měl vytvořit seznam kde první hodnota by byl název radia a duha ten odkaz asi takto?
stanice={'radio':'http://stream.radia.com'}
Tedy Omlouvám se z hlavy teď nevim jak se ty seznamy tvoří Každopádně mi jde o to jak zajistit abych zadal název rádio ale do příkazu na spuštění mplayeru se přidal ten stream.
-
Tak to je hračka:
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
radio_files = open("a.txt")
radios = dict(map(lambda x: x.split(":",1), radio_files.readlines()))
radio_files.close()
## Priklad...
print radios["cyril"]
Do souboru a.txt si dej třeba:
adam:www.dadadam.cz
barbora:www.bar.bora.com
cyril:geocities.com/~cyril
-
Děkuji už to začíná dělat pomalu to co potřebuji. Řeším ale jeden problém
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# Pokusný kód o vytvoření rádia v pythonu
import os
radio_files = open("stanice")
radios = dict(map(lambda x: x.split(":",1), radio_files.readlines()))
radio_files.close()
print('Dostupné stanice')
print (radios)
stanice=input('Zadej název stanice')
os.spawnvp(os.P_WAIT,"/usr/bin/mplayer",["-cache 1021 ","http://",radios[stanice]])
problém je v tom, že pokud se pokusím volat mplayer tak zaboha tam nejsem schopen dát http:// nevím kde by mohla být chyba
když tam to http není tak se příkaz provede, ale nespustí se přehrávání odkazu, protože mpalyer si myslí, že má spustit soubor
pokud do souboru stanice ulozim adresu ve tvaru http:// tak je jasne, ze nastale reseni nejak nefunguje :/ myslel jsem si, ze proste staci tam dat do tohoo prikazu http:// jako retezec ale nejde :-( ... Jeste nad tim dumam.
Kazdopadne dekuji za prvotni nasmerovani
-
Odpovím si zatím sám nový kód je tento
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# Pokusný kód o vytvoření rádia v pythonu
import os
radio_files = open("stanice")
radios = dict(map(lambda x: x.split(";",1), radio_files.readlines()))
radio_files.close()
print('Dostupné stanice')
print (radios)
stanice=input('Zadej název stanice: ')
os.spawnvp(os.P_WAIT,"/usr/bin/mplayer",["-cache 1021 ",radios[stanice]])
v textovem souboru jsem misto : dal ;
problem nastava v okamziku noveho radku. haze mi to tam znak \n takze se prikaz neprovede a pokud je tam vicero radii tak se neprovede taky radia se vypisou na jednom radku
-
Opět ti nerozumím.
Co se má prosím stát, pokud je v souboru prázdný řádek?
Ono má 1 rádio více adres?
-
pokud mam v souboru stanice.txt dve radia
diskoc;http://radiodisko.cz
music;http://radiomusic.cz
na volani vypisu seznamu radii v tom souboru se objevi toto
http://radiodiskoc.cz\n http://radiomusic.cz
a v tom \n je problem, protoze takhle se to pridava i do promenne pro spusteni mplayeru
pokud mam v souboru jen jedno radio bez odradkovani je to v poradku a vse se spusti, ale jakmile si pridam do souboru vic radii tak to uz nefunguje.
-
A cílem je to \n ze souboru odmazat?
http://stackoverflow.com/questions/511204/how-to-print-a-string-without-including-n-in-python
Kdybychom jen uměli přesněji definovat, co je cílem. No pořád to úplně nechápu, pravděpodobně se ptáš na něco složitějšího...
-
podivam se na ten odkaz... a budu dal zkouset, jen nechapu co je k nepochopeni k tomu, ze python vklada za tu adresu \n a diky tomu se mi nespusti spravne mplayer
cilem je mit v jednom souboru seznam radii a s okdazama a z tohoto seznamu si vyberu radio a spustim si ho. Nicmene jsi mi vic nez dost pomohl abych se nad tim poradne zamyslel a zkusil to nejak upravit. Diky.
-
spis bych rek, ze je problem v tom, ze se to splituje podle : takze ti to odstipne podle : a ne ; (proto tam taky cpes to http)
#edit:
nicmene - nedalo mi to:
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import os, sys, subprocess
FILE = "stanice" if len(sys.argv) < 2 else sys.argv[1]
try:
radio_file = open(FILE)
radios = [one.rstrip('\n').split(';') for one in radio_file.readlines()]
radio_file.close()
except Exception, e:
sys.exit('Nepodarilo se nacist stanice ze souboru "%s": %s'%(FILE, e))
print 'Dostupné stanice:'
for i, one in enumerate(radios, 1):
print '[%d]\t %s'%(i, one[0])
input = 0
while input > len(radios) or input < 1:
try:
input = int(raw_input('Vyber radio: '))
except:
pass
#subprocess.call(['/usr/bin/mplayer', 'cache 1021', radios[input-1][1]])
subprocess.call(['/usr/bin/mplayer', radios[input-1][1]])
Je to trosku robustnejsi - nespadne to na hubu, kdyz tam zadas blbost (vybiras cislama), nebo neexistuje vstupni soubor. Taky si muzes jako parametr predat jinej soubor. Parametr -cache muj mplayer nezere. Je to v 2.x pythonu. Mej se.