def get_spa_html(spa_url): if spa_url.startswith("/") or spa_url.startswith("../"): print("~~~ SPA: file", spa_url) with open(spa_url) as f: return f.read() print("~~~ SPA: url", spa_url) response = requests.get(join_url(spa_url, "index.html"), verify=False) response.raise_for_status() content = response.text return content
def get_default_head_tags(path): _config = Config.query.first() if not _config: return [] instance_name = _config.app_name short_description = _config.app_description app_name = "reel2bits" parts = [instance_name, app_name] return [ { "tag": "meta", "property": "og:type", "content": "website" }, { "tag": "meta", "property": "og:site_name", "content": " - ".join([p for p in parts if p]) }, { "tag": "meta", "property": "og:description", "content": short_description }, { "tag": "meta", "property": "og:image", "content": join_url(current_app.config["REEL2BITS_URL"], "/static/favicon.png"), }, { "tag": "meta", "property": "og:url", "content": join_url(current_app.config["REEL2BITS_URL"], path) }, ]
def provider(): """ OEmbed provider. --- tags: - OEmbed responses: 200: description: Returns the OEmbed thing """ format = request.args.get("format", "json") url = request.args.get("url", None) if not url: # yep it's awful, should get fixed in app.py:page_not_found()/app.py:render_tags() I guess url = request.args.get("amp;url", None) if not url: return jsonify("no url given"), 400 if format not in ["json"]: return jsonify("unsupported format"), 400 _config = Config.query.first() if not _config: return jsonify("application error: no config"), 500 url = urllib.parse.urlparse(url) view_info = get_view_info(url.path) if not view_info: return jsonify([]), 400 view_name, view_arguments = view_info data = { "version": "1.0", "type": "rich", "provider_name": _config.app_name, "provider_url": current_app.config["REEL2BITS_URL"], "height": 400, "width": 600, } embed_id = None embed_type = None def get_user(): return User.query.filter(User.name == view_arguments["username"], User.local.is_(True)).first() if view_name == "bp_spa.user_track": user = get_user() if not user: return jsonify("user not found"), 404 track = Sound.query.filter( Sound.slug == view_arguments["trackslug"], Sound.user_id == user.id, Sound.private.is_(False), Sound.transcode_state == Sound.TRANSCODE_DONE, ).first() if not track: return jsonify("track not found"), 404 embed_id = track.id embed_type = "track" data["title"] = f"{track.title} by {track.user.name}" if track.artwork_filename: url_artwork = url_for( "get_uploads_stuff", thing="artwork_sounds", stuff=track.path_artwork(), _external=True ) else: url_artwork = join_url(current_app.config["REEL2BITS_URL"], "/static/artwork_placeholder.png") data["thumbnail_url"] = url_artwork data["thumbnail_width"] = 112 data["thumbnail_height"] = 112 data["description"] = track.description data["author_name"] = track.user.name data["height"] = 150 data["author_url"] = url_for("bp_spa.user_profile", username=user.name, _external=True) elif view_name == "bp_spa.user_album": user = get_user() if not user: return jsonify("user not found"), 404 album = Album.query.filter( Album.slug == view_arguments["albumslug"], Album.private.is_(False), Album.user_id == user.id ).first() if not album: return jsonify("album not found"), 404 embed_id = album.id embed_type = "album" if album.artwork_filename: url_artwork = url_for( "get_uploads_stuff", thing="artwork_albums", stuff=album.path_artwork(), _external=True ) else: url_artwork = join_url(current_app.config["REEL2BITS_URL"], "/static/artwork_placeholder.png") data["thumbnail_url"] = url_artwork data["thumbnail_width"] = 112 data["thumbnail_height"] = 112 data["title"] = f"{album.title} by {album.user.name}" data["description"] = album.description data["author_name"] = album.user.name data["height"] = 400 data["author_url"] = url_for("bp_spa.user_profile", username=user.name, _external=True) elif view_name == "bp_spa.user_profile": user = get_user() if not user: return jsonify("user not found"), 404 embed_id = user.id embed_type = "user" if user.avatar_filename: url_avatar = url_for("get_uploads_stuff", thing="avatars", stuff=user.path_avatar(), _external=True) else: url_avatar = join_url(current_app.config["REEL2BITS_URL"], "/static/userpic_placeholder.png") data["thumbnail_url"] = url_avatar data["thumbnail_width"] = 112 data["thumbnail_height"] = 112 data["title"] = user.name data["description"] = user.actor[0].summary data["author_name"] = user.name data["height"] = 400 data["author_url"] = url_for("bp_spa.user_profile", username=user.name, _external=True) else: return jsonify("page not found"), 404 embed_url = url_for("bp_api_embed.iframe", kind=embed_type, id=embed_id, _external=True) data[ "html" ] = f'<iframe width="{data["width"]}" height="{data["height"]}" scrolling="no" frameborder="no" src="{embed_url}"></iframe>' return jsonify(data)
def get_user_profile_tags(view_name, view_arguments): user = get_user(view_arguments) if not user: return [] feed_url = url_for("bp_feeds.tracks", user_id=user.id, _external=True) musician_url = url_for("bp_spa.user_profile", username=user.name, _external=True) metas = [ { "tag": "link", "rel": "alternate", "type": "application/atom+xml", "href": feed_url }, { "tag": "meta", "property": "og:url", "content": musician_url }, { "tag": "meta", "property": "og:title", "content": user.name }, { "tag": "meta", "property": "og:type", "content": "profile" }, ] if user.avatar_filename: url_avatar = url_for("get_uploads_stuff", thing="avatars", stuff=user.path_avatar(), _external=True) else: url_avatar = join_url(current_app.config["REEL2BITS_URL"], "/static/userpic_placeholder.png") metas.append({ "tag": "meta", "property": "og:image", "content": url_avatar }) oembed_url = join_url( current_app.config["REEL2BITS_URL"], f"/api/oembed?format=json&url={urllib.parse.quote_plus(musician_url)}") metas.append({ "tag": "link", "rel": "alternate", "type": "application/json+oembed", "href": oembed_url }) metas += get_twitter_card_metas(type="user", id=user.id) return metas
def get_user_album_tags(view_name, view_arguments): user = get_user(view_arguments) if not user: return [] album = Album.query.filter( Album.user_id == user.id, Album.private.is_(False), Album.slug == view_arguments["albumslug"]).first() if not album: return [] album_url = url_for("bp_spa.user_album", username=user.name, albumslug=album.slug, _external=True) musician_url = url_for("bp_spa.user_profile", username=user.name, _external=True) feed_url = url_for("bp_feeds.album", user_id=album.user.id, album_id=album.id, _external=True) metas = [ { "tag": "meta", "property": "og:url", "content": album_url }, { "tag": "meta", "property": "og:title", "content": album.title }, { "tag": "meta", "property": "og:type", "content": "music.album" }, { "tag": "meta", "property": "music:musician", "content": musician_url }, { "tag": "link", "rel": "alternate", "type": "application/atom+xml", "href": feed_url }, ] if album.artwork_filename: url_artwork = url_for("get_uploads_stuff", thing="artwork_albums", stuff=album.path_artwork(), _external=True) else: url_artwork = join_url(current_app.config["REEL2BITS_URL"], "/static/artwork_placeholder.png") metas.append({ "tag": "meta", "property": "og:image", "content": url_artwork }) oembed_url = join_url( current_app.config["REEL2BITS_URL"], f"/api/oembed?format=json&url={urllib.parse.quote_plus(album_url)}") metas.append({ "tag": "link", "rel": "alternate", "type": "application/json+oembed", "href": oembed_url }) metas += get_twitter_card_metas(type="album", id=album.id) return metas
def get_user_track_tags(view_name, view_arguments): user = get_user(view_arguments) if not user: return [] track = Sound.query.filter( Sound.slug == view_arguments["trackslug"], Sound.user_id == user.id, Sound.private.is_(False), Sound.transcode_state == Sound.TRANSCODE_DONE, ).first() if not track: return [] track_url = url_for("bp_spa.user_track", username=user.name, trackslug=user.name, _external=True) musician_url = url_for("bp_spa.user_profile", username=user.name, _external=True) transcode_url = url_for("get_uploads_stuff", thing="sounds", stuff=track.path_sound(orig=False), _external=True) metas = [ { "tag": "meta", "property": "og:url", "content": track_url }, { "tag": "meta", "property": "og:title", "content": track.title }, { "tag": "meta", "property": "og:type", "content": "music.song" }, { "tag": "meta", "property": "music:musician", "content": musician_url }, ] if track.album: album_url = url_for("bp_spa.user_album", username=user.name, albumslug=track.album.slug, _external=True) metas.append({ "tag": "meta", "property": "music:album:disc", "content": 1 }) metas.append({ "tag": "meta", "property": "music:album:track", "content": track.album_order }) metas.append({ "tag": "meta", "property": "music:album", "content": album_url }) if track.artwork_filename: url_artwork = url_for("get_uploads_stuff", thing="artwork_sounds", stuff=track.path_artwork(), _external=True) else: url_artwork = join_url(current_app.config["REEL2BITS_URL"], "/static/artwork_placeholder.png") metas.append({ "tag": "meta", "property": "og:image", "content": url_artwork }) metas.append({ "tag": "meta", "property": "og:audio", "content": transcode_url }) oembed_url = join_url( current_app.config["REEL2BITS_URL"], f"/api/oembed?format=json&url={urllib.parse.quote_plus(track_url)}") metas.append({ "tag": "link", "rel": "alternate", "type": "application/json+oembed", "href": oembed_url }) metas += get_twitter_card_metas(type="track", id=track.id) return metas