{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts = {}" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "src=u\"\"\"Je m'baladais sur l'avenue \n", "Le coeur ouvert à l'inconnu \n", "J'avais envie de dire bonjour \n", "À n'importe qui\n", "N'importe qui ce fut toi\n", "Je t'ai dit n'importe quoi\n", "Il suffisait de te parler\n", "Pour t'apprivoiser\n", "\n", "Aux Champs-Élysées\n", "Aux Champs-Élysées\n", "Au soleil, sous la pluie\n", "À midi ou à minuit\n", "Il y a tout ce que vous voulez\n", "Aux Champs-Élysées\n", "\n", "Tu m'as dit \"J'ai rendez-vous\n", "Dans un sous-sol avec des fous\n", "Qui vivent la guitare à la main\n", "Du soir au matin\"\n", "Alors je t'ai accompagnée\n", "On a chanté, on a dansé\n", "Et l'on n'a même pas pensé\n", "À s'embrasser\n", "\n", "Aux Champs-Élysées\n", "Aux Champs-Élysées\n", "Au soleil, sous la pluie\n", "À midi ou à minuit\n", "Il y a tout ce que vous voulez\n", "Aux Champs-Élysées\n", "\n", "Hier soir deux inconnus\n", "Et ce matin sur l'avenue\n", "Deux amoureux tout étourdis\n", "Par la longue nuit\n", "Et de l'Étoile à la Concorde\n", "Un orchestre à mille cordes\n", "Tous les oiseaux du point du jour\n", "Chantent l'amour\n", "\n", "Aux Champs-Élysées\n", "Aux Champs-Élysées\n", "Au soleil, sous la pluie\n", "À midi ou à minuit\n", "Il y a tout ce que vous voulez\n", "Aux Champs-Élysées\"\"\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "songtexts[u'Aux Champs Elysées'] = src" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Post-traitement :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lines = src.split('\\n')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lines = filter(lambda s: s != '', lines)\n", "lines" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "src = u\"\"\"I've been a wild rover for many's the year \n", "I've spent all me money on whiskey and beer \n", "But now I'm returning with gold in great store \n", "And I never will play the wild rover no more \n", "\n", "And it's No, Nay, never, \n", "No, nay never no more \n", "Will I play the wild rover, \n", "No never no more \n", "\n", "I went in to an alehouse I used to frequent \n", "And I told the landlady me money was spent \n", "I asked her for credit, she answered me nay \n", "Such a customer as you I can have any day \n", "\n", "And it's No, Nay, never, \n", "No, nay never no more \n", "Will I play the wild rover, \n", "No never no more \n", "\n", "I took from my pocket ten sovereigns bright \n", "And the landlady's eyes opened wide with delight. \n", "She said \"I have whiskey and wines of the best \n", "And the words that I spoke sure were only in jest.\"\n", "\n", "And it's No, Nay, never, \n", "No, nay never no more \n", "Will I play the wild rover, \n", "No never no more \n", "\n", "I'll go home to my parents, confess what I've done \n", "And I'll ask them to pardon their prodigal son. \n", "And if they caress (forgive) me as ofttimes before \n", "Sure I never will play the wild rover no more. \n", "\n", "And it's No, Nay, never, \n", "No, nay never no more \n", "Will I play the wild rover, \n", "No never no more\"\"\"" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['The Wild Rover'] = src" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "src = \"\"\"Ooh I need your love babe\n", "Guess you know it's true\n", "Hope you need my love babe\n", "Just like I need you\n", "Hold me, love me, hold me, love me\n", "Ain't got nothing but love babe\n", "Eight days a week\n", "\n", "Love you every day girl\n", "Always on my mind\n", "One thing I can say girl\n", "Love you all the time\n", "Hold me, love me, hold me, love me\n", "Ain't got nothing but love babe\n", "Eight days a week\n", "\n", "Eight days a week\n", "I love you\n", "Eight days a week\n", "Is not enough to show I care\n", "\n", "Ooh I need your love babe\n", "Guess you know it's true\n", "Hope you need my love babe\n", "Just like I need you\n", "Hold me, love me, hold me, love me\n", "Ain't got nothing but love babe\n", "Eight days a week\n", "\n", "Eight days a week\n", "I love you\n", "Eight days a week\n", "Is not enough to show I care\n", "\n", "Love you every day girl\n", "Always on my mind\n", "One thing I can say girl\n", "Love you all the time\n", "Hold me, love me, hold me, love me\n", "Ain't got nothing but love babe\n", "Eight days a week\n", "Eight days a week\n", "Eight days a week\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Eight days a week'] = src" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "src = \"\"\"Yesterday, all my troubles seemed so far away\n", "Now it looks as though they're here to stay\n", "oh, I believe in yesterday\n", "\n", "Suddenly, I'm not half the man I used to be\n", "There's a shadow hanging over me\n", "Oh, yesterday came suddenly.\n", "\n", "Why she had to go?\n", "I don't know, she wouldn't say\n", "I said something wrong\n", "Now I long for yesterday.\n", "\n", "Yesterday love was such an easy game to play\n", "Now I need a place to hide away\n", "Oh, I believe in yesterday.\n", "\n", "Why she had to go?\n", "I don't know, she wouldn't say\n", "I said something wrong\n", "Now I long for yesterday.\n", "\n", "Yesterday love was such an easy game to play\n", "Now I need a place to hide away\n", "Oh, I believe in yesterday...\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Yesterday'] = src" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Pour la peine'] = \"\"\"Quand la peur s'immisce dans nos illusions, \n", "on abandonne, \n", "abandonne,\n", "le ciel pardonne,\n", "\n", "quand l'esprit s'enlise dans la déraison,\n", "les cannons tonnent,\n", "cannons tonnent,\n", "les cris résonnent,\n", "\n", "pour la peine,\n", "je t'emmène,\n", "\n", "on veut des rêves,\n", "qui nous soulèvent,\n", "on veut des fleurs,\n", "a nos douleurs,\n", "on veut du sens,\n", "de l'innocence,\n", "au nom de nos libres penseurs,\n", "au nom des larmes,\n", "qui nous désarment,\n", "on doit pouvoir,\n", "changer l'histoire,\n", "\n", "pour la peine,\n", "\n", "au nom de nos pères qui nous ont appris le prix d'un homme,\n", "prix d'un homme,\n", "ce que nous sommes,\n", "\n", "au nom de nos frères tombés dans l'oubli des droits de l'homme,\n", "droits de l'homme,\n", "droit des hommes,\n", "\n", "on veut des rêves,\n", "qui nous soulèvent,\n", "on veut des fleurs,\n", "a nos douleurs,\n", "on veut du sens,\n", "de l'innocence,\n", "au nom de nos libres penseurs,\n", "au nom des larmes,\n", "qui nous désarment,\n", "on doit pouvoir,\n", "changer l'histoire,\n", "\n", "pour la peine (x 2)\n", "\n", "je veux sourire à tes erreurs,\n", "embrasser tes blessures,\n", "nous apprendrons par coeur,\n", "la démesure,\n", "\n", "car nos peines sont les mêmes, \n", "\n", "on veut des rêves,\n", "qui nous soulèvent,\n", "on veut des fleurs,\n", "a nos douleurs,\n", "on veut du sens,\n", "de l'innocence,\n", "au nom de nos libres penseurs,\n", "au nom des larmes,\n", "qui nous désarment,\n", "on doit pouvoir,\n", "changer l'histoire,\n", "\n", "pour la peine (x 2)\"\"\"" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['And it stoned me'] = \"\"\"Half a mile from the county fair\n", "And the rain came fallin' down\n", "Me and Billy standin' there\n", "With a silver half a crown\n", "Hands full of a fishin' rods\n", "And the tackle on our backs\n", "We just stood there gettin' wet\n", "With our backs against the fence\n", "\n", "Oh, the water\n", "Oh, the water\n", "Oh, the water\n", "Hope it don't rain all day\n", "\n", "[Chorus:]\n", "And it stoned me to my soul\n", "Stoned me just like Jelly Roll\n", "And it stoned me\n", "And it stoned me to my soul\n", "Stoned me just like goin' home\n", "And it stoned me\n", "\n", "Then the rain let up and the sun came up\n", "And we were gettin' dry\n", "Almost let a pick-up truck nearly pass us by\n", "So we jumped right in and the driver grinned\n", "And he dropped us up the road\n", "We looked at the swim and we jumped right in\n", "Not to mention fishing poles\n", "\n", "Oh, the water\n", "Oh, the water\n", "Oh, the water\n", "Let it run all over me\n", "\n", "[Chorus:]\n", "\n", "On the way back home we sang a song\n", "But our throats were getting dry\n", "Then we saw the man from across the road\n", "With the sunshine in his eyes\n", "Well he lived all alone in his own little home\n", "With a great big gallon jar\n", "There were bottles too, one for me and you\n", "And he said Hey! There you are\n", "\n", "Oh, the water\n", "Oh, the water\n", "Oh, the water\n", "Get it myself from the mountain stream\"\"\"" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Junimond'] = \"\"\"Die Welt schaut rauf\n", "Zu meinem Fenster.\n", "Mit müden Augen\n", "Ganz staubig und scheu\n", "Ich bin hier oben, auf meiner Wolke.\n", "Ich seh dich kommen, aber du gehst vorbei.\n", "Doch jetzt tuts nicht mehr weh,\n", "Jetzt tuts nicht mehr weh...\n", "Und alles bleibt stumm und kein Sturm kommt auf wenn ich dich seh\n", "Es ist vorbei, byebye Junimond!\n", "Es ist vorbei, byebye!\n", "Es ist vorbei, byebye Junimond!\n", "Es ist vorbei, byebye!\n", "2000 Stunden hab ich gewartet,\n", "Ich hab sie alle gezählt und verflucht.\n", "Ich hab getrunken, geraucht und gebetet.\n", "Hab dich flussauf - und flussabwärts gesucht\n", "Doch jetzt tuts nicht mehr weh,\n", "Jetzt tuts nicht mehr weh!\n", "Und alles bleibt stumm und kein Sturm kommt auf wenn ich dich seh!\n", "Es ist vorbei, byebye Junimond!\n", "Es ist vorbei, byebye!\n", "Es ist vorbei, byebyejunimond!\n", "Es ist vorbei, byeye!\"\"\"" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Sunny afternoon'] = \"\"\"The taxman's taken all my dough\n", "And left me in my stately home\n", "Lazing on a sunny afternoon\n", "\n", "And I can't sail my yacht\n", "He's taken everything I've got\n", "All I've got's this sunny afternoon\n", "\n", "Save me, save me\n", "Save me from this squeeze\n", "I've got a big fat momma trying to break me\n", "\n", "And I love to live so pleasantly\n", "Live this life of luxury\n", "Lazing on a sunny afternoon\n", "In the summertime, in the summertime\n", "In the summertime\n", "\n", "My girlfriend's run off with my car\n", "And gone back to her ma and pa\n", "Telling tales of drunkenness and cruelty\n", "\n", "Now I'm sitting here\n", "Sipping at my ice cold beer\n", "Lazing on a sunny afternoon\n", "\n", "Help me, help me, help me sail away\n", "Well give me two good reasons\n", "Why I ought to stay\n", "\n", "'Cause I love to live so pleasantly\n", "Live this life of luxury\n", "Lazing on a sunny afternoon\n", "In the summertime, in the summertime\n", "In the summertime\n", "\n", "Ah save me, save me\n", "Save me from this squeeze\n", "I've got a big fat momma tryin' to break me\n", "\n", "And I love to live so pleasantly\n", "Live this life of luxury\n", "Lazing on a sunny afternoon\n", "\n", "In the summertime, in the summertime\n", "In the summertime, in the summertime\n", "In the summertime\"\"\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Ticket to ride'] = \"\"\"I think I'm gonna be sad\n", "I think it's today, yeah\n", "The girl that's driving me mad\n", "Is going away\n", "\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "But she don't care\n", "\n", "She said that living with me\n", "Is bringing her down, yeah\n", "For she would never be free\n", "When I was around\n", "\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "But she don't care\n", "\n", "I don't know why she's riding so high\n", "She ought to think twice\n", "She ought to do right by me\n", "Before she gets to saying goodbye\n", "She ought to think twice\n", "She ought to do right by me\n", "\n", "I think I'm gonna be sad\n", "I think it's today, yeah\n", "The girl that's driving me mad\n", "Is going away, yeah\n", "\n", "Oh, she's got a ticket to ride\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "But she don't care\n", "\n", "I don't know why she's riding so high\n", "She ought to think twice\n", "She ought to do right by me\n", "Before she gets to saying goodbye\n", "She ought to think twice\n", "She ought to do right by me\n", "\n", "She said that living with me\n", "Is bringing her down, yeah\n", "For she would never be free\n", "When I was around\n", "\n", "Ah, she's got a ticket to ride\n", "She's got a ticket to ride\n", "She's got a ticket to ride\n", "But she don't care\n", "\n", "My baby don't care, my baby don't care\n", "My baby don't care, my baby don't care\n", "My baby don't care, my baby don't care (fade out)\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Un bon site Karaoke.ru : [http://www.karaoke.ru/catalog/song/24051/](http://www.karaoke.ru/catalog/song/24051/)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Kogda tvoja devushka bolna'] = \"\"\"День как день, только ты почему-то грустишь.\n", "И вокруг все поют, только ты один молчишь.\n", "Потерял аппетит и не хочешь сходить в кино.\n", "Ты идешь в магазин, чтобы купить вино.\n", "\n", "Солнце светит, и растет трава,\n", "Но тебе она не нужна.\n", "Все не так, и все не то,\n", "Когда твоя девушка больна,\n", "Когда больна...\n", "\n", "Ты идешь в магазин, головою поник,\n", "Как будто иссяк чистый горный родник.\n", "Она где-то лежит, ест мед и пьет аспирин,\n", "И вот ты идешь на вечеринку один.\n", "\n", "Солнце светит, и растет трава,\n", "Но тебе она не нужна.\n", "Все не так, и все не то,\n", "Когда твоя девушка больна,\n", "Когда больна...\"\"\"" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Ahiro no Warutsu'] = \"\"\"ここはとあるアヒル町\n", "若いふたりおりました\n", "古い家の古い部屋\n", "古い庭にざくろの木\n", "好きなものはクロワッサン\n", "きらいなのは北京ダック\n", "ふたりいつかあこがれの\n", "パリに行くのを夢見てる\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "ノートルダムにシャンゼリゼ\n", "サンジェルマンに凱旋門\n", "モンマルトルにカルチェラタン\n", "エッフェル塔にクリニャンクール\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "月月火水木金土\n", "来る日も来る日も働いた\n", "満員電車の窓の外\n", "雨に霞むアヒル町\n", "仕事もきらい上司もきらい\n", "アヒル町も大きらい\n", "休みはいつも寝て過ごし\n", "パリのパの字も忘れてた\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "とある晴れた日曜日\n", "雨がやんで日が差した\n", "遠くで鳥が鳴いている\n", "小さな花が咲いている\n", "カフェオレ入れて朝ごはん\n", "庭で食べようクロワッサン\n", "ここにふたりいるだけで\n", "足りないものは何もない\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "アヒルンルン アヒルンルン\n", "ぼくたちは一生いっしょさ\n", "アヒルンルンルンルン\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "大家さんの金木犀\n", "毎年秋を教えてくれる\n", "花屋さんの黒い犬\n", "行くたびいつも飛んでくる\n", "小川の横の桜の並木\n", "線路ぞいの名も知らぬ花\n", "アヒル町にゃカフェもある\n", "アヒル町じゃ映画も見れる\n", "見た目はかなり地味だけど\n", "アヒル町はふたりのパリ\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\n", "\n", "アヒルンルン アヒルンルン\n", "アヒルンルンルンルン\n", "アヒルンルン アヒルンルン\n", "アヒルンルンルンルン\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "クウェ、クウェ、クウェ\n", "クワッ、クワッ、クワッ\n", "アヒルのワルツ\"\"\"" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "songtexts['Radioactive'] = \"\"\"I'm waking up to ash and dust\n", "I wipe my brow and I sweat my rust\n", "I'm breathing in the chemicals\n", "\n", "I'm breaking in, shaping up, then checking out on the prison bus\n", "This is it, the apocalypse\n", "Whoa\n", "\n", "I'm waking up, I feel it in my bones\n", "Enough to make my systems blow\n", "Welcome to the new age, to the new age\n", "Welcome to the new age, to the new age\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\n", "\n", "I raise my flags, don my clothes\n", "It's a revolution, I suppose\n", "We paint it red to fit right in\n", "Whoa\n", "\n", "I'm breaking in, shaping up, then checking out on the prison bus\n", "This is it, the apocalypse\n", "Whoa\n", "\n", "I'm waking up, I feel it in my bones\n", "Enough to make my systems blow\n", "Welcome to the new age, to the new age\n", "Welcome to the new age, to the new age\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\n", "\n", "All systems go, the sun hasn't died\n", "Deep in my bones, straight from inside\n", "\n", "I'm waking up, I feel it in my bones\n", "Enough to make my systems blow\n", "Welcome to the new age, to the new age\n", "Welcome to the new age, to the new age\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\n", "Whoa, oh, oh, oh, oh, whoa, oh, oh, oh, I'm radioactive, radioactive\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut créer un widget Python :" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from IPython.html.widgets import interact, interactive, Button, Box\n", "from IPython.display import display, clear_output\n", "\n", "class TextWidget:\n", " def __init__(self, src):\n", " lines = src.split('\\n')\n", " self.lines = list(filter(lambda s: s != '', lines))\n", " self.cursor = -1\n", "\n", " def print_current_line(self):\n", " print(self.lines[self.cursor])\n", " \n", " def increment_cursor(self):\n", " if self.cursor != len(self.lines) - 1:\n", " self.cursor += 1\n", " \n", " def reset_cursor(self):\n", " self.cursor = -1\n", "\n", "\n", "# main instance \n", "txt_widget = TextWidget(src) \n", "\n", "# layout and widgets\n", "container = Box()\n", "ok_button = Button(description=\"Prochaine ligne\")\n", "nok_button = Button(description=u\"Je me suis trompé\")\n", "container.children = [ok_button, nok_button]\n", "\n", "# interaction\n", "def ok_click(b):\n", " txt_widget.increment_cursor()\n", " txt_widget.print_current_line()\n", "\n", "def nok_click(b):\n", " clear_output()\n", " txt_widget.reset_cursor()\n", "\n", "ok_button.on_click(ok_click)\n", "nok_button.on_click(nok_click)\n", "\n", "# display\n", "display(container)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "En fait, on peut faire mieux : un widget interactif dans lequel on peut choisir la chanson." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class song_library:\n", " def __init__(self):\n", " self.widget = None\n", " \n", " def select_song(self, song_title):\n", " if self.widget != None:\n", " self.widget.close()\n", " \n", " # main instance \n", " txt_widget = TextWidget(songtexts[song_title]) \n", "\n", " # layout and widgets\n", " container = Box()\n", " ok_button = Button(description=\"Prochaine ligne\")\n", " nok_button = Button(description=u\"Je me suis trompé\")\n", " container.children = [ok_button, nok_button]\n", "\n", " # interaction\n", " def ok_click(b):\n", " txt_widget.increment_cursor()\n", " txt_widget.print_current_line()\n", "\n", " def nok_click(b):\n", " clear_output()\n", " txt_widget.reset_cursor()\n", "\n", " ok_button.on_click(ok_click)\n", " nok_button.on_click(nok_click)\n", "\n", " # display\n", "\n", " display(container)\n", " self.widget = container\n", " " ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "I'm waking up to ash and dust\n", "I wipe my brow and I sweat my rust\n", "I'm breathing in the chemicals\n", "I'm breaking in, shaping up, then checking out on the prison bus\n", "This is it, the apocalypse\n", "Whoa\n", "I'm waking up, I feel it in my bones\n", "Enough to make my systems blow\n" ] } ], "source": [ "lib = song_library()\n", "interactive(lib.select_song,\n", " song_title=list(songtexts.keys()))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }