2017-02-12 2 views
0

Я отредактировал этот код первоначально из ссылок youtube. Раньше у него был маленький экран, который появляется с видео трейлерами с youtube. Сейчас код просто появляется маленький пустой экран. Как я могу открыть новые ссылки amazon? Спасибо!Почему мои ссылки Amazon не открываются? using bootstrap modal python

import webbrowser 
import os 
import re 

# Styles and scripting for the page 
main_page_head = ''' 
<head> 
    <meta charset="utf-8"> 
    <title>Gold Pineapples!</title> 

    <!-- Bootstrap 3 --> 
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap-theme.min.css"> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script> 
    <style type="text/css" media="screen"> 
     body { 
      padding-top: 80px; 
     } 
     #link .modal-dialog { 
      margin-top: 200px; 
      width: 640px; 
      height: 480px; 
     } 
     .hanging-close { 
      position: absolute; 
      top: -12px; 
      right: -12px; 
      z-index: 9001; 
     } 
     #link-popup { 
      width: 100%; 
      height: 100%; 
     } 
     .item-name { 
      margin-bottom: 20px; 
      padding-top: 20px; 
     } 
     .item-name:hover { 
      background-color: #EEE; 
      cursor: pointer; 
     } 
     .scale-media { 
      padding-bottom: 56.25%; 
      position: relative; 
     } 
     .scale-media iframe { 
      border: none; 
      height: 100%; 
      position: absolute; 
      width: 100%; 
      left: 0; 
      top: 0; 
      background-color: white; 
     } 
    </style> 
    <script type="text/javascript" charset="utf-8"> 
     // Pause the popup when the modal is closed 
     $(document).on('click', '.hanging-close, .modal-backdrop, .modal', function (event) { 
      // Remove the src so the player itself gets removed, as this is the only 
      // reliable way to ensure the popup stops playing in IE 
      $("#link-popup-container").empty(); 
     }); 
     // Start playing the popup whenever the link modal is opened 
     $(document).on('click', '.item-name', function (event) { 
      var linkAmazonId = $(this).attr('data-link-amazon-id') 
      var sourceUrl = 'http://www.amazon.com/embed/' + linkAmazonId + '?autoplay=1&html5=1'; 
      $("#link-popup-container").empty().append($("<iframe></iframe>", { 
       'id': 'link-popup', 
       'type': 'text-html', 
       'src': sourceUrl, 
       'frameborder': 0 
      })); 
     }); 
     // Animate in the items when the page loads 
     $(document).ready(function() { 
      $('.item-name').hide().first().show("fast", function showNext() { 
      $(this).next("div").show("fast", showNext); 
      }); 
     }); 
    </script> 
</head> 
''' 

# The main page layout and title bar 
main_page_content = ''' 
<!DOCTYPE html> 
<html lang="en"> 
    <body> 
    <!-- Link Popup Modal --> 
    <div class="modal" id="link"> 
     <div class="modal-dialog"> 
     <div class="modal-content"> 
      <a href="#" class="hanging-close" data-dismiss="modal" aria-hidden="true"> 
      <img src="https://lh5.ggpht.com/v4-628SilF0HtHuHdu5EzxD7WRqOrrTIDi_MhEG6_qkNtUK5Wg7KPkofp_VJoF7RS2LhxwEFCO1ICHZlc-o_=s0#w=24&h=24"/> 
      </a> 
      <div class="scale-media" id="link-popup-container"> 
      </div> 
     </div> 
     </div> 
    </div> 

    <!-- Main Page Content --> 
    <div class="container"> 
     <div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header"> 
      <a class="navbar-brand" href="#">Suggested Items: </a> 
      </div> 
     </div> 
     </div> 
    </div> 
    <div class="container"> 
     {item_tiles} 
    </div> 
    </body> 
</html> 
''' 

# A single item entry html template 
item_tile_content = ''' 
<div class="col-md-6 col-lg-4 item-name text-center" data-link-amazon-id="{link_amazon_id}" data-toggle="modal" data-target="#link"> 
    <img src="{item_image_url}" width="220" height="342"> 
    <h2>{item_name}</h2> 
</div> 
''' 

def create_item_names_content(items): 
    # The HTML content for this section of the page 
    content = '' 
    for item in items: 
     # Extract the youtube ID from the url 
     amazon_id_match = re.search(r'(?<=v=)[^&#]+', item.link_amazon_url) 
     amazon_id_match = amazon_id_match or re.search(r'(?<=be/)[^&#]+', item.link_amazon_url) 
     link_amazon_id = amazon_id_match.group(0) if amazon_id_match else None 

     # Append the namefor the item with its content filled in 
     content += item_tile_content.format(
      item_name=item.name, 
      item_image_url=item.item_image_url, 
      link_amazon_id=link_amazon_id 
     ) 
    return content 

def open_items_page(items): 
    # Create or overwrite the output file 
    output_file = open('gold_pineapples.html', 'w') 

    # Replace the placeholder for the item names with the actual dynamically generated content 
    rendered_content = main_page_content.format(item_tiles=create_item_names_content(items)) 

    # Output the file 
    output_file.write(main_page_head + rendered_content) 
    output_file.close() 

    # open the output file in the browser 
    url = os.path.abspath(output_file.name) 
    webbrowser.open('file://' + url, new=2) # open in a new tab, if possible 

Вот мой код, который я изначально начал с:

import webbrowser 
import os 
import re 

# Styles and scripting for the page 
main_page_head = ''' 
<head> 
    <meta charset="utf-8"> 
    <title>Fresh Tomatoes!</title> 

    <!-- Bootstrap 3 --> 
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap-theme.min.css"> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script> 
    <style type="text/css" media="screen"> 
     body { 
      padding-top: 80px; 
     } 
     #trailer .modal-dialog { 
      margin-top: 200px; 
      width: 640px; 
      height: 480px; 
     } 
     .hanging-close { 
      position: absolute; 
      top: -12px; 
      right: -12px; 
      z-index: 9001; 
     } 
     #trailer-video { 
      width: 100%; 
      height: 100%; 
     } 
     .movie-tile { 
      margin-bottom: 20px; 
      padding-top: 20px; 
     } 
     .movie-tile:hover { 
      background-color: #EEE; 
      cursor: pointer; 
     } 
     .scale-media { 
      padding-bottom: 56.25%; 
      position: relative; 
     } 
     .scale-media iframe { 
      border: none; 
      height: 100%; 
      position: absolute; 
      width: 100%; 
      left: 0; 
      top: 0; 
      background-color: white; 
     } 
    </style> 
    <script type="text/javascript" charset="utf-8"> 
     // Pause the video when the modal is closed 
     $(document).on('click', '.hanging-close, .modal-backdrop, .modal', function (event) { 
      // Remove the src so the player itself gets removed, as this is the only 
      // reliable way to ensure the video stops playing in IE 
      $("#trailer-video-container").empty(); 
     }); 
     // Start playing the video whenever the trailer modal is opened 
     $(document).on('click', '.movie-tile', function (event) { 
      var trailerYouTubeId = $(this).attr('data-trailer-youtube-id') 
      var sourceUrl = 'http://www.youtube.com/embed/' + trailerYouTubeId + '?autoplay=1&html5=1'; 
      $("#trailer-video-container").empty().append($("<iframe></iframe>", { 
       'id': 'trailer-video', 
       'type': 'text-html', 
       'src': sourceUrl, 
       'frameborder': 0 
      })); 
     }); 
     // Animate in the movies when the page loads 
     $(document).ready(function() { 
      $('.movie-tile').hide().first().show("fast", function showNext() { 
      $(this).next("div").show("fast", showNext); 
      }); 
     }); 
    </script> 
</head> 
''' 

# The main page layout and title bar 
main_page_content = ''' 
<!DOCTYPE html> 
<html lang="en"> 
    <body> 
    <!-- Trailer Video Modal --> 
    <div class="modal" id="trailer"> 
     <div class="modal-dialog"> 
     <div class="modal-content"> 
      <a href="#" class="hanging-close" data-dismiss="modal" aria-hidden="true"> 
      <img src="https://lh5.ggpht.com/v4-628SilF0HtHuHdu5EzxD7WRqOrrTIDi_MhEG6_qkNtUK5Wg7KPkofp_VJoF7RS2LhxwEFCO1ICHZlc-o_=s0#w=24&h=24"/> 
      </a> 
      <div class="scale-media" id="trailer-video-container"> 
      </div> 
     </div> 
     </div> 
    </div> 

    <!-- Main Page Content --> 
    <div class="container"> 
     <div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header"> 
      <a class="navbar-brand" href="#">Stephanie's Suggested Movie Trailers</a> 
      </div> 
     </div> 
     </div> 
    </div> 
    <div class="container"> 
     {movie_tiles} 
    </div> 
    </body> 
</html> 
''' 

# A single movie entry html template 
movie_tile_content = ''' 
<div class="col-md-6 col-lg-4 movie-tile text-center" data-trailer-youtube-id="{trailer_youtube_id}" data-toggle="modal" data-target="#trailer"> 
    <img src="{poster_image_url}" width="220" height="342"> 
    <h2>{movie_title}</h2> 
</div> 
''' 

def create_movie_tiles_content(movies): 
    # The HTML content for this section of the page 
    content = '' 
    for movie in movies: 
     # Extract the youtube ID from the url 
     youtube_id_match = re.search(r'(?<=v=)[^&#]+', movie.trailer_youtube_url) 
     youtube_id_match = youtube_id_match or re.search(r'(?<=be/)[^&#]+', movie.trailer_youtube_url) 
     trailer_youtube_id = youtube_id_match.group(0) if youtube_id_match else None 

     # Append the tile for the movie with its content filled in 
     content += movie_tile_content.format(
      movie_title=movie.title, 
      poster_image_url=movie.poster_image_url, 
      trailer_youtube_id=trailer_youtube_id 
     ) 
    return content 

def open_movies_page(movies): 
    # Create or overwrite the output file 
    output_file = open('fresh_tomatoes.html', 'w') 

    # Replace the placeholder for the movie tiles with the actual dynamically generated content 
    rendered_content = main_page_content.format(movie_tiles=create_movie_tiles_content(movies)) 

    # Output the file 
    output_file.write(main_page_head + rendered_content) 
    output_file.close() 

    # open the output file in the browser 
    url = os.path.abspath(output_file.name) 
    webbrowser.open('file://' + url, new=2) # open in a new tab, if possible 

ответ

0

Попробуйте это:

<a href="http://the-website-address.com" target="_blank">This will open in another tab</a> 
Смежные вопросы