{"id":12393,"date":"2022-12-29T18:38:20","date_gmt":"2022-12-29T17:38:20","guid":{"rendered":"https:\/\/pythonprogramming.altervista.org\/?p=12393"},"modified":"2022-12-29T18:39:12","modified_gmt":"2022-12-29T17:39:12","slug":"how-to-make-an-audio-book-reader-with-python","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/how-to-make-an-audio-book-reader-with-python\/","title":{"rendered":"How to make an audio book reader with Python"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"313\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-14.png\" alt=\"\" class=\"wp-image-12399\"\/><\/a><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/red1-1.mp3\"><\/audio><figcaption>Chapter 1<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/red2.mp3\"><\/audio><figcaption>Chapter 2<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Welcome to the tale of Red Riding Hood! This classic story has been reimagined and given a fun twist, and I&#8217;m excited to share it with you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before we begin, I want to let you know that this tale was created using a program written in Python. That&#8217;s right, a computer was used to generate this story, just for you to enjoy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So sit back, relax, and get ready for an exciting journey through the forest with Red Riding Hood. Who knows what dangers and adventures await her on the path to her grandmother&#8217;s house? Let&#8217;s find out together!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/replit.com\/@EducationalChan\/speak#main.py\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"409\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-13-960x409.png\" alt=\"\" class=\"wp-image-12394\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-13-960x409.png 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-13-320x136.png 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-13-768x327.png 768w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2022\/12\/image-13.png 1442w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re interested in seeing the code that was used to generate this tale, you can find it on repl.it. Repl.it is a online platform that allows users to write, run, and share code in a variety of programming languages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To view the code, simply visit repl.it and search for the program by name. From there, you can see how the code was written and how it was used to create this fun and exciting story.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope you enjoyed this tale and the unique way in which it was created. Whether you&#8217;re a seasoned programmer or new to the world of coding, I hope this story has inspired you to explore the possibilities of what can be achieved with a little bit of creativity and some clever code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from io import BytesIO\nimport pygame\nimport tkinter as tk\nfrom gtts import gTTS\n\npygame.init()\npygame.mixer.init()\npygame.display.set_caption(\"Write and play to speak (activate sound on bottom right)\")\ndef speak(text, language='en'):\n    mp3_fo = BytesIO()\n    tts = gTTS(text, lang=language)\n    tts.write_to_fp(mp3_fo)\n    pygame.mixer.music.load(mp3_fo, 'mp3')\n    pygame.mixer.music.play()\n\ndef speak_clear(event):\n  for line in tx.get('0.0', tk.END).split(\".\"):\n    speak(line)\n\ndef change_text(text):\n  tx.delete('0.0', tk.END)\n  tx.insert(tk.END, text)\nroot = tk.Tk()\n\ntx = tk.Text(root)\ntx.pack()\ntx.bind(\"&lt;Return>\", speak_clear)\ntext1 = \"\"\"\nOnce upon a time, in a small village nestled in the heart of a dense forest, there lived a young girl named Red. Red was known for her bright red hooded cloak, which she wore everywhere she went.\n\nOne day, Red's mother asked her to take a basket of goodies to her grandmother, who lived on the other side of the forest. Red eagerly accepted the task and set off early the next morning, determined to make it to her grandmother's house before noon.\n\nAs Red walked through the forest, she couldn't help but notice how quiet and still everything seemed. No birds sang, no animals rustled in the underbrush, and no breeze stirred the leaves on the trees.\n\nDespite the eerie silence, Red remained undaunted and continued on her way. She had always been a brave and adventurous girl, and she was determined to reach her grandmother's house no matter what.\nBut little did Red know, danger lurked around every corner. A sly and cunning wolf, who had been watching Red from afar, had set his sights on her and was determined to make her his next meal.\n\nAs Red walked deeper into the forest, the wolf began to follow her, waiting for the perfect moment to strike. But little did he know, Red was no ordinary girl. She was clever and resourceful, and she would not be taken down so easily.\n\nStay tuned for chapter 2 to see what happens next!\n\"\"\"\ntx.insert(tk.END, text1)\n\ntext2 = \"\"\"\nAs Red continued her journey through the forest, she began to sense that she was being followed. She turned around to see if anyone was there, but all she saw was a dense wall of trees and bushes.\n\nRed shrugged it off and continued walking, but the feeling of being watched only grew stronger. She quickened her pace, hoping to reach her grandmother's house as soon as possible.\n\nBut the wolf was not far behind. He had been stalking Red for miles, waiting for the perfect opportunity to strike. And as Red rounded a bend in the path, he saw his chance.\n\nWith a growl, the wolf sprang from the bushes and lunged at Red. But the quick-thinking girl was ready for him. She grabbed her basket of goodies and swung it at the wolf, knocking him to the ground.\n\nThe wolf yelped in surprise and scrambled to his feet, ready to attack again. But Red was not about to let him get the upper hand. She grabbed a rolling pin from her basket and swung it at the wolf, sending him running back into the forest.\n\nRed breathed a sigh of relief and continued on her way, more determined than ever to reach her grandmother's house. And as she walked, she couldn't help but feel a sense of pride and accomplishment. She had faced danger and emerged victorious, and she knew that she was more than capable of taking care of herself.\n\nWhen Red finally reached her grandmother's house, she was greeted with open arms and a warm meal. And as she sat down to eat, she couldn't help but smile at the thought of the adventure she had just experienced.\n\nRed knew that she would always be ready to face any challenge that came her way, and she was grateful for the strength and courage that she had discovered within herself. The end\n\"\"\"\n\n\nframe1 = tk.Frame(root).pack()\ntk.Button(frame1, text=\"Chapter 1\", command=lambda:change_text(text1)).pack(side=\"left\")\n\ntk.Button(frame1, text=\"Chapter 2\", command=lambda:change_text(text2)).pack(side=\"left\")\n\n\n\n# buttons = []\n# for num, letter in enumerate(\"abcdefghilmnopqrstuvz\"):\n#   buttons.append(tk.Button(frame1, text=letter, command=lambda:tx.insert(tk.END, buttons[num]['text'])).pack(side=\"left\"))\n\n\nbt = tk.Button(root, text=\"PLAY (write something and activate sound on the right)\",\n    command=lambda: speak(tx.get('0.0', tk.END)))\nbt.pack()\nroot.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><!-- se vuoi mettere un testo scorrevole\r\n[hoops name=\"typeWriterGen\"]\r\n\r\npoi metti un id diverso per ogni testo nella stessa pagina\r\n\r\n<div id=\"div01\">\r\n<script>\r\n\r\ntypeWriterGen(\"div01\",\"Esempio di testo scorrevole\");\r\n<\/script>\r\n\r\n-->\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n<hr>\r\n\r\n<!-- NEWSLETTER LINK -->\r\n<a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7TniIPCWHDzCSGh2dYZaCwDvi9yLKS5ovFdKuK1sdfOvwEg\/viewform\">\r\n<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-13.png\" class=\"avatar\">\r\nSubscribe to the <b>newsletter<\/b> for updates<\/a><br>\r\n\r\n<!-- TKINTER TEMPLATE LINK -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/tkinter-templates\/\">\r\n<img decoding=\"async\" src=\"https:\/\/i0.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/07\/image-26.png\" class=\"avatar\">\r\nTkinter templates<\/a><br>\r\n\r\n<!-- MY AVATAR PUT A LINK TO YOUTUBE CHANNEL-->\r\n<iframe loading=\"lazy\" frameborder=\"0\" src=\"https:\/\/itch.io\/embed\/711828\" width=\"552\" height=\"167\"><a href=\"https:\/\/pythonprogrammi.itch.io\/pysnake\">PySnake by PythonProgrammi<\/a><\/iframe>\r\n<br>\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n\r\n<a href=\"https:\/\/www.youtube.com\/channel\/UCzbxq5e9gLiY-je2-br1rvg\">\r\n\t<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/10\/avatar64x64.png\" alt=\"Avatar\" class=\"avatar\">\r\n\t My youtube channel<\/a><br>\r\n\r\n<br>\r\n\r\nTwitter: <a href=\"https:\/\/twitter.com\/pythonprogrammi\">@pythonprogrammi - python_pygame<\/a>\r\n<h3>Claude's Games<\/h3>\r\n<p><a href=\"https:\/\/pythonprogramming.altervista.org\/random-daily-game-1-arkanoid\/\">Arkanoid<\/a><br>\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/platform-2d-with-pygame-made-with-claude\/\">Platform 2d<\/a><\/p> <!-- videogames made with claude -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/artifacts-games-day-1-memory-game\/\">1. Memory game<\/a>\r\n<h4>Videos<\/h4>\r\n<a href=\"https:\/\/youtu.be\/ciLjWWw5pLY\">Speech recognition game<\/a>\r\n<h3>Pygame's Platform Game<\/h3>\r\n\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\"><img decoding=\"async\" src=\"https:\/\/i1.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/01\/climbercover.png?w=557&ssl=1\"\/ width=\"50%\"><\/a>\r\n<script>\r\nvar title = \"Platform Pygame\";\r\n\t\tvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animation-of-a-sprite-v-1-3\/\",\"Animation 1.3\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-v-2-better-coding-test-it-checking-fps-on-the-screen\/\",\"Animation 1.2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-how-to-display-the-frame-rate-fps-on-the-screen\/\",\"Display Frame rate\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-update\/\",\"Animation 1.1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Pygame Platform Game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-platform-game-2\/\",\"Pygame Platform 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-3-recap-cheatsheet\/\",\"Pygame PLatform 3 - recap and some Cheat Sheet\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-4-background-and-stuffs\/\",\"Pygame Platform 4 - Background & organizing code\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\",\"Pygame Platform 5 - Sounds\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/platform-game-in-detail-part-1\/\",\"Game in detail part 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/map-maker-1-2\/\", \"Map maker 1.2\"]\r\n\t\t];\r\n\t\t<\/script>\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script>\r\n\r\n<h3>Other Pygame's posts<\/h3>\r\n\r\n<script>\r\nvar title = \"Pygame's Posts\"\r\nvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Platform game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/make-a-platform-game-with-pygame-dafluffypotato\/\",\"DaFluffyPotato Platform Tutorials\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-and-classic-arcade-games-pong\/\",\"Pong Game Full\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-draws-in-colors-app-to-draw-with-pygame\/\",\"PyGameGIF 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-draw-app-with-animation\/\",\"PyGameGIF 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pydraw-2-0-app-to-draw-gif\/\",\"PyDraw 2.0\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-drawing-2\/\",\"Draw with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-with-pygame\",\"Sprite animation 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-on-pygame-2-free-characters-and-more-actions\/\",\"Sprite animation 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/starting-with-pygame\/\",\"Starting movements with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-3-move-sprite\/\", \"Move a Sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-4-fonts\/\",\"Text and Fonts\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animate-a-sprite\/\", \"Animate a sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-and-mouse-events\/\",\"Mouse events\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pgp-aka-pygamepresentation-project\/\",\"Pygame presentation\"],\r\n\t[\"https:\/\/pythonprogramming.altervista.org\/moving-the-player-in-pygame-with-key-get_pressed\/\",\"How to use key.get_pressed()\"]\r\n]\r\n<\/script>\r\n\r\n\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"Welcome to the tale of Red Riding Hood! This classic story has been reimagined and given a fun twist, and I&#8217;m excited to \n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/how-to-make-an-audio-book-reader-with-python\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":12399,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[191,483],"tags":[1040,31,194,4],"class_list":["post-12393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pygame","category-python","tag-audiobook","tag-gtts","tag-pygame","tag-python"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":true,"av_sharing_on":{"fb":[],"tw":[]},"av_allow_affiliate_banner":false,"av_allow_affiliate_multi_banner":false,"av_show_affiliation_buy_button":false,"av_post_rating":true,"av_have_post_rating_value":false,"av_is_artificial_intelligence_content":false,"_links":{"self":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/12393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/comments?post=12393"}],"version-history":[{"count":2,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/12393\/revisions"}],"predecessor-version":[{"id":12401,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/12393\/revisions\/12401"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/12399"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=12393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=12393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=12393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}