commit eb3b76b46fdeb68a365cd2a123ec8206ed64c844 Author: Dominika Date: Thu Jul 16 23:10:31 2020 +0200 importing hacked code from old bashtube diff --git a/README.md b/README.md new file mode 100644 index 0000000..fed33cf --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# bashtube [name temporary] + +a shitty youtube frontend written in Bash, WIP (this will be my first project that I actually finish because Heck, proton UI suxx and I'm not going to use it) + +## installation instructions [temporary] + +1. Download [HTTP.sh](https://github.com/redspl/http.sh) +2. Delete `webroot` and `storage` directories +3. Copy contents of this repo to the HTTP.sh directory +4. `./http.sh` + +## contributing + +~~You don't~~ If you wish, write to me (reds at laura.pm) or selfisekai (laura at sakamoto.pl), and we'll be in contact :P \ No newline at end of file diff --git a/storage/faves b/storage/faves new file mode 100644 index 0000000..e69de29 diff --git a/storage/subscribed b/storage/subscribed new file mode 100644 index 0000000..e69de29 diff --git a/webroot/login.shs b/webroot/login.shs new file mode 100755 index 0000000..63e818b --- /dev/null +++ b/webroot/login.shs @@ -0,0 +1,30 @@ +#!/bin/bash + +if [[ ${post_data[login]} != '' && ${post_data[password]} != '' ]]; then + login ${post_data[login]} ${post_data[password]} + status=$? + if [[ $status == 0 ]]; then + echo ${get_data[r]} > /dev/stderr + if [[ ${get_data[r]} == '' ]]; then + meta[redirect]='/' + else + meta[redirect]="$(echo ${get_data[r]} | sed -s 's/Log in... +
+ +
+ +
+ +
+(please make sure that you're connecting over SSL)" diff --git a/webroot/logout.shs b/webroot/logout.shs new file mode 100755 index 0000000..538ef39 --- /dev/null +++ b/webroot/logout.shs @@ -0,0 +1,7 @@ +#!/bin/bash + +logout +meta[redirect]='/' +source templates/head.sh + +echo "Logged out successully. Redirecting.." diff --git a/webroot/register.shs b/webroot/register.shs new file mode 100755 index 0000000..4913367 --- /dev/null +++ b/webroot/register.shs @@ -0,0 +1,25 @@ +#!/bin/bash + +if [[ ${post_data[login]} != '' && ${post_data[password]} != '' ]]; then + register ${post_data[login]} ${post_data[password]} + status=$? + if [[ $status == 0 ]]; then + meta[redirect]='/' + fi +fi + +source templates/head.sh + +if [[ $status == 1 && $reason != '' ]]; then + echo $reason +fi + +echo "

Register

+
+ +
+ +
+ +
+(please make sure that you're connecting over SSL)" diff --git a/webroot/yt/channel.shs b/webroot/yt/channel.shs new file mode 100644 index 0000000..e5acca3 --- /dev/null +++ b/webroot/yt/channel.shs @@ -0,0 +1,23 @@ +#!/bin/bash +title=$(curl https://www.youtube.com/feeds/videos.xml?channel_id=${get_data[id]} | grep title | head -n 1 | sed -s 's/ //;s/<\/title>//') +meta[title]=$title +source templates/head.sh + +if [[ ${get_data[id]} ]]; then + data=$(youtube-dl -j --flat-playlist https://www.youtube.com/channel/${get_data[id]}) +elif [[ ${get_data[name]} ]]; then + data=$(youtube-dl -j --flat-playlist https://www.youtube.com/user/${get_data[name]}) +else + echo "Please specify either `id` or `name`" + return +fi + +IFS=$'\n' +video_title=($(jq -r '.title' <<< $data)) +video_id=($(jq -r '.id' <<< $data)) + +echo "<h1>$title</h1><a href='subscribe.shs?id=${get_data[id]}'>Subscribe!</a><br>" + +for (( i=0; i<${#video_id[@]}; i++ )); do + echo "<a href='watch.shs?v=${video_id[$i]}'><img src='http://i.ytimg.com/vi/${video_id[$i]}/mqdefault.jpg'><br>${video_title[$i]}</a><br>" +done \ No newline at end of file diff --git a/webroot/yt/fav.shs b/webroot/yt/fav.shs new file mode 100644 index 0000000..b6092c5 --- /dev/null +++ b/webroot/yt/fav.shs @@ -0,0 +1,22 @@ +#!/bin/bash + +if session_verify ${cookies[sh_session]} && [[ ${get_data[v]} != '' ]]; then + title=$(youtube-dl -e "https://youtube.com/watch?v=${get_data[v]}") + if [[ $(cat storage/faves | grep -F "$title" | grep "$(echo ${cookies[username]} | sed -E "s/\r//")") == '' ]]; then + echo "$(session_get_username ${cookies[sh_session]}):${get_data[v]}:$title" >> storage/faves + fi +fi + +source templates/head.sh + +echo "<a href='./'><--- back to main</a><br><h1>Your favourites</h1>" + +IFS=$'\n' +for i in $(tac storage/faves); do + IFS=':' + array=($i) + if [[ ${array[1]} == '' ]]; then + break + fi + echo "<div><a href='watch.shs?v=${array[1]}'><img src='https://i.ytimg.com/vi/${array[1]}/mqdefault.jpg'><br><b>${array[@]:2:999}</b></a><br></div>"; +done diff --git a/webroot/yt/feed.shs b/webroot/yt/feed.shs new file mode 100644 index 0000000..7cd5205 --- /dev/null +++ b/webroot/yt/feed.shs @@ -0,0 +1,24 @@ +#!/bin/bash + +source templates/head.sh + +if session_verify ${cookies[sh_session]}; then + for i in $(cat storage/subscribed); do + IFS=':' + y=($i) + IFS=$'\n' + data=$(curl -s "https://www.youtube.com/feeds/videos.xml?channel_id=${y[1]}"); + + video_id+=($(echo "$data" | grep "<link" | grep -Eoh "watch\?v\=[A-Za-z0-9_\-]+" | sed -s 's/watch?v=//')) + video_title+=($(echo "$data" | grep "<media:title>" | sed -E 's/[</ ]+media:title>//g')) + video_date+=($(echo "$data" | grep "<published>" | tail -n 15 | sed -E 's/[ </]+published>//g' | xargs -L1 date "+%s" -d)) + done + + queue=$(for (( i=0; i<${#video_id[@]}; i++ )); do echo "$i ${video_date[i]}"; done | sort -k2r | awk '{print $1}') + + for i in $queue; do + echo "<a href='watch.shs?v=${video_id[$i]}'><img src='http://i.ytimg.com/vi/${video_id[$i]}/mqdefault.jpg'><br>${video_title[$i]}</a>${video_date[$i]}<br>" + done +else + echo "gtfo" +fi \ No newline at end of file diff --git a/webroot/yt/index.shs b/webroot/yt/index.shs new file mode 100755 index 0000000..06adea2 --- /dev/null +++ b/webroot/yt/index.shs @@ -0,0 +1,19 @@ +#!/bin/bash +source templates/head.sh + +echo "<form action='${r[url]}/search.shs'> +<input name='q' type='text'> +<input type='submit' value='Search'> +</form> + +<h1>All user's favourites:</h1>" + +IFS=$'\n' +for i in $(tac storage/faves); do + IFS=':' + array=($i) + if [[ ${array[1]} == '' ]]; then + break + fi + echo "<div><a href='watch.shs?v=${array[1]}'><img src='https://i.ytimg.com/vi/${array[1]}/mqdefault.jpg'><br><b>${array[@]:2:999}</b></a><br>Favourited by ${array[0]}</div>"; +done diff --git a/webroot/yt/playlist.shs b/webroot/yt/playlist.shs new file mode 100644 index 0000000..118cc7c --- /dev/null +++ b/webroot/yt/playlist.shs @@ -0,0 +1,19 @@ +#!/bin/bash +title=$(curl https://www.youtube.com/feeds/videos.xml?playlist_id=${get_data[id]} | grep title | head -n 1 | sed -s 's/ <title>//;s/<\/title>//') +meta[title]=$title +source templates/head.sh + +if [[ ${get_data[id]} ]]; then + data=$(youtube-dl -j --flat-playlist https://www.youtube.com/playlist?list=${get_data[id]}) +else + echo "Please specify either `id`" + return +fi + +IFS=$'\n' +video_title=($(jq -r '.title' <<< $data)) +video_id=($(jq -r '.id' <<< $data)) + +for (( i=0; i<${#video_id[@]}; i++ )); do + echo "<a href='watch.shs?v=${video_id[$i]}'><img src='http://i.ytimg.com/vi/${video_id[$i]}/mqdefault.jpg'><br>${video_title[$i]}</a><br>" +done \ No newline at end of file diff --git a/webroot/yt/search.shs b/webroot/yt/search.shs new file mode 100755 index 0000000..f42ad3d --- /dev/null +++ b/webroot/yt/search.shs @@ -0,0 +1,49 @@ +#!/bin/bash +PREFIX='/yt' + +meta[title]="youtube but not really" +source templates/head.sh + +# GOOD LUCK FIXING IT WHEN GOOGLE BREAKS IT LOL + +cat webroot/yt/webarchive/search_top.htm + +#echo "<form action='${r[url]}/search.shs'> +#<input name='q' type='text'> +#<input type='submit' value='Search'> +#</form> +#" + +if [[ ${get_data[q]} ]]; then + query=${get_data[q]} + query_nice=$(echo ${get_data[q]} | sed -s 's/+/ /g') + + echo "<p>Searching for '$query_nice'</p>" + data='' + while [[ $data == '' ]]; do + data=$(curl -s "https://m.youtube.com/results?search_query=$query&app=m&hl=en" | sed 's/<!-- end of chunk 1 --><div id="initial-data">/\n/g;s/><\/div><script >/\n/' | grep -v div | grep "<\!--" | sed -s 's/<!--//') + done + + IFS=$'\n' + id=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.videoId) | .[]')) + if [[ ${id[0]} == '' ]]; then # I do not care, and neither should you + id=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.videoId) | .[]')) + title=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.title.runs[0].text) | .[]')) + runtime=($(echo $data | jq -r '.contents.sectionListRenderer.contents[1].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.thumbnailOverlays[0].thumbnailOverlayTimeStatusRenderer.text.runs[0].text) | .[]')) + else + title=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.title.runs[0].text) | .[]')) + runtime=($(echo $data | jq -r '.contents.sectionListRenderer.contents[0].itemSectionRenderer.contents[1:] | map(.compactVideoRenderer.thumbnailOverlays[0].thumbnailOverlayTimeStatusRenderer.text.runs[0].text) | .[]')) + fi + +# id=($(echo $data | grep -E "watch\?v\=[A-z0-9_-]{11}" -oh | sed -E 's/watch\?v\=//g;s/" class="yt-uix-tile-link(.*)//g' | uniq)) +# title=($( echo $data | sed -s 's/,"width":...,"height":...}]},"title":{"runs":\[{"text":"/TITLE_BEGIN/g;s/accessibility"/\n/g;s/"navigationEndpoint"/\n/g' | grep TITLE_BEGIN | sed -E 's/(.*)TITLE_BEGIN//g')) + unset IFS + + for (( i=0; i<${#id[@]}; i++ )); do +# echo "<a href='/yt/watch.shs?v=${id[$i]}'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg'><br>${title[$i]}</a> | ${runtime[$i]}<br>" + echo "<li><div class='yt-lockup yt-lockup-tile yt-lockup-video clearfix yt-uix-tile'><div class='yt-lockup-thumbnail'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='contains-addto yt-uix-sessionlink spf-link'><div class='video-thumb'><img src='https://i.ytimg.com/vi/${id[$i]}/mqdefault.jpg' width='185' height='104'/></div><span class='video-time'>${runtime[$i]}</span><button class='yt-uix-button yt-uix-button-size-small yt-uix-button-default yt-uix-button-empty yt-uix-button-has-icon addto-button video-actions spf-nolink hide-until-delayloaded addto-watch-later-button-sign-in yt-uix-tooltip' type='button' onclick=';return false;' title='Watch Later' role='button'><span class='yt-uix-button-icon-wrapper'><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' title='Watch Later' class='yt-uix-button-icon yt-uix-button-icon-addto yt-sprite'></span><img src='https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif' class='yt-uix-button-arrow yt-sprite'></button></a></div><div class='yt-lockup-content'><h3 class='yt-lockup-title'><a href='$PREFIX/watch.shs?v=${id[$i]}' class='yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link' dir='ltr'>${title[$i]}</a></h3><div class='yt-lockup-meta'><ul class='yt-lockup-meta-info'><li>by <b><a href='/user/PewDiePie' class='yt-uix-sessionlink spf-link g-hovercard'>PewDiePie</a></b></li><li>1 day ago</li><li>2,824,318 views</li></ul></div><div class='yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2' dir='ltr'>THE DESCRIPTION GOES HERE!</div><div class='yt-lockup-badges'><ul class='yt-badge-list'><li class='yt-badge-item'><span class='yt-badge'>New</span></li><li class='yt-badge-item'><span class='yt-badge'>HD</span></li></ul></div></div></div></li>" + done + cat webroot/yt/webarchive/search_bottom.htm +else + echo "search for something will 'ya?" +fi diff --git a/webroot/yt/subscribe.shs b/webroot/yt/subscribe.shs new file mode 100644 index 0000000..5021315 --- /dev/null +++ b/webroot/yt/subscribe.shs @@ -0,0 +1,22 @@ +#!/bin/bash + +if session_verify ${cookies[sh_session]} && [[ ${get_data[id]} != '' ]]; then + title=$(curl https://www.youtube.com/feeds/videos.xml?channel_id=${get_data[id]} | grep title | head -n 1 | sed -s 's/ <title>//;s/<\/title>//') + if [[ $(cat storage/subscribed | grep -F "$title" | grep "$(echo ${cookies[username]} | sed -E "s/\r//")") == '' ]]; then + echo "$(session_get_username ${cookies[sh_session]}):${get_data[id]}:$title" >> storage/subscribed + fi +fi + +source templates/head.sh + +echo "<a href='./'><--- back to main</a><br><h1>Channels you subscribe to</h1>" + +IFS=$'\n' +for i in $(tac storage/subscribed); do + IFS=':' + array=($i) + if [[ ${array[1]} == '' ]]; then + break + fi + echo "<div><a href='channel.shs?id=${array[1]}'>${array[@]:2:999}</a><br></div>"; +done diff --git a/webroot/yt/unfav.shs b/webroot/yt/unfav.shs new file mode 100644 index 0000000..6ed4337 --- /dev/null +++ b/webroot/yt/unfav.shs @@ -0,0 +1,10 @@ +#!/bin/bash + +if session_verify ${cookies[sh_session]} && [[ ${get_data[v]} != '' ]]; then + name=$(session_get_username ${cookies[sh_session]}) + vid=$(echo -n ${get_data[v]} | sed -E 's/\r//g') + sed -i "/^$name:$vid/d" storage/faves +fi +meta[redirect]='fav.shs' + +source templates/head.sh diff --git a/webroot/yt/unsubscribe.shs b/webroot/yt/unsubscribe.shs new file mode 100644 index 0000000..b7c31b6 --- /dev/null +++ b/webroot/yt/unsubscribe.shs @@ -0,0 +1,10 @@ +#!/bin/bash + +if session_verify ${cookies[sh_session]} && [[ ${get_data[id]} != '' ]]; then + name=$(session_get_username ${cookies[sh_session]}) + channel=$(echo -n ${get_data[id]} | sed -E 's/\r//g') + sed -i "/^$name:$channel/d" storage/subscribed +fi +meta[redirect]='subscribe.shs' + +source templates/head.sh diff --git a/webroot/yt/watch.shs b/webroot/yt/watch.shs new file mode 100755 index 0000000..63cc10d --- /dev/null +++ b/webroot/yt/watch.shs @@ -0,0 +1,66 @@ +#!/bin/bash + +# fetching recommended disabled for speed + +#for i in $(curl https://www.youtube.com/watch?v=${get_data[v]} | grep -ohE "watch\?v\=[A-zaz0-9]{11}" | uniq | cut -c 9-19); do +# echo "<div><img src='http://i.ytimg.com/vi/$i/hqdefault.jpg'><br><audio src='$(youtube-dl -g -f 251 $i)' controls></audio></div>"; +#done + +if [[ ${get_data[v]} ]]; then + video=$(youtube-dl -J "http://youtube.com/watch?v=${get_data[v]}") + if [[ $video == '' ]]; then + video=$(youtube-dl -J "http://youtube.com/watch?v=${get_data[v]}") + if [[ $video == '' ]]; then + return + fi + fi + #echo "http://youtube.com/watch?v=${get_data[v]}" > /dev/stderr + channel_id=$(echo $video | jq -r '.channel_url' | sed -s 's/http:\/\/www.youtube.com\/channel\///') + uploader=$(echo $video | jq -r '.uploader') + title=$(echo $video | jq -r '.title') + meta[title]=$title + source templates/head.sh + IFS=$'\n' + urls=($(echo $video | jq -r '.formats[] | select(.format_id == "22" or .format_id == "18").url')) + unset IFS + if [[ ${urls[1]} != '' ]]; then + url=${urls[1]} + else + url=${urls[0]} + fi + echo "<form action='search.shs'> + <input name='q' type='text'> + <input type='submit' value='Search'> + </form> + <div><br><video src='$url' controls></video> + <h2>$title</h2> + <div> + <div> + Uploaded by <b><a href='channel.shs?id=$channel_id'>$uploader</a></b> on <b>$(date -d "$(echo $video | jq -r '.upload_date' | sed -E 's/..../&-/;s/....-../&-/')" "+%d %B %Y")</b> + </div> + <div> + <b>$(echo $video | jq -r '.view_count')</b> views<br> + <b>$(echo $video | jq -r '.like_count')</b> likes, <b>$(echo $video | jq -r '.dislike_count')</b> dislikes.<br>" + if [[ ${cookies[sh_session]} ]]; then + if [[ $(cat storage/faves | grep $(echo -n ${cookies[username]} | sed -E 's/\r//g') | grep ${get_data[v]}) == '' ]]; then + echo "<a href='fav.shs?v=$(echo ${get_data[v]} | sed -s 's/<//g;')' target='_blank'>Add to favourites</a><br>" + else + echo "<a href='unfav.shs?v=$(echo ${get_data[v]} | sed -s 's/<//g;')' target='_blank'>Remove from favourites</a><br>" + fi + if [[ $(cat storage/subscribed | grep $(echo -n ${cookies[username]} | sed -E 's/\r//g') | grep $channel_id) == '' ]]; then + echo "<a href='subscribe.shs?id=$channel_id' target='_blank'>Subscribe to $uploader!</a><br>" + else + echo "<a href='unsubscribe.shs?id=$channel_id' target='_blank'>Unsubscribe from $uploader</a><br>" + fi + else + echo "<b><a href='/login.shs?r=$(echo ${r[url]} | sed -s 's/?/___/')'>Log in</a> to add this video to your favourites and/or subscribe to this channel!</b><br>" + fi + echo "<br><br> + </div> + </div> + <span><i>Description</i>:<br>$(echo $video | jq -r '.description' | sed -E 's/$/<br>/g')</span> + </div>"; +else + source templates/head.sh + echo "pls add ?v param i'm still WiP" +fi diff --git a/webroot/yt/webarchive/channel.htm b/webroot/yt/webarchive/channel.htm new file mode 100644 index 0000000..4a01429 --- /dev/null +++ b/webroot/yt/webarchive/channel.htm @@ -0,0 +1,7104 @@ + + <!DOCTYPE html><html lang="en" data-cast-api-enabled="true"><head><script>var ytcsi = {gt: function(n) {n = (n || '') + 'data_';return ytcsi[n] || (ytcsi[n] = {tick: {},span: {},info: {}});},tick: function(l, t, n) {ytcsi.gt(n).tick[l] = t || +new Date();},span: function(l, s, n) {ytcsi.gt(n).span[l] = (typeof s == 'number') ? s :+new Date() - ytcsi.data_.tick[l];},info: function(k, v, n) {ytcsi.gt(n).info[k] = v;}};ytcsi.perf = window.performance || window.mozPerformance ||window.msPerformance || window.webkitPerformance;ytcsi.tick('_start', ytcsi.perf ? ytcsi.perf.timing.responseStart : null);if (document.webkitVisibilityState == 'prerender') {ytcsi.info('prerender', 1);document.addEventListener('webkitvisibilitychange', function() {ytcsi.tick('_start');}, false);}</script> <script> + try {window.ytbuffer = {};ytbuffer.handleClick = function(e) {var element = e.target || e.srcElement;while (element.parentElement) {if (element.className.match(/(^| )yt-can-buffer( |$)/)) {window.ytbuffer = {bufferedClick: e};element.className += ' yt-is-buffered';break;}element = element.parentElement;}};if (document.addEventListener) {document.addEventListener('click', ytbuffer.handleClick);} else {document.attachEvent('onclick', ytbuffer.handleClick);}} catch(e) {} + (function(){function a(b,g,k){var h=document.getElementsByTagName("html")[0],e=[h.className];b&&1251<=(window.innerWidth||document.documentElement.clientWidth)&&(e.push("guide-pinned"),g&&e.push("show-guide"));k&&(b=(window.innerWidth||document.documentElement.clientWidth)-21-50,1251<=(window.innerWidth||document.documentElement.clientWidth)&&g&&(b-=230),e.push(" ",1262<=b?"content-snap-width-3":1056<=b?"content-snap-width-2":"content-snap-width-1"));h.className=e.join(" ")} +var c=["yt","www","masthead","sizing","runBeforeBodyIsReady"],d=this;c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var f;c.length&&(f=c.shift());)c.length||void 0===a?d[f]?d=d[f]:d=d[f]={}:d[f]=a;})(); +yt.www.masthead.sizing.runBeforeBodyIsReady(true,true,true); + </script> + + + + <script src="//s.ytimg.com/yts/jsbin/www-scheduler-vfltpmjOU/www-scheduler.js" type="text/javascript" name="www-scheduler"></script> + + + + <link rel="stylesheet" href="//s.ytimg.com/yts/cssbin/www-core-vfl5BoEuz.css" name="www-core"> +<script>if (window.ytcsi) {window.ytcsi.tick("ce", null, '');}</script> + + +<title>Lazy Game Reviews - YouTube + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
RU +
+ +
+ +
+
+
+
Upload
+
+ + Lazy Game Reviews + +
+ +
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ + + + + +
+ +
+
+
+ + + + +
+
+ + + + + +
+
+ + +
+
+
+
+ + + + + + + Lazy Game Reviews + + +
+ +
+ +
+
+
+ 194,302 + +
+ +
+
+ +
+
+
+

+ Subscription preferences + + +

+
+
+
+
Loading...
+
+ +
+
+
+
+

+ Loading icon + + +Loading... + +

+ +
+
+
+
+ +
+
+
+
+
+
Working...
+
+
+ +
+
+
+
+
+ + +
+ +
+ +
+

+ Lazy Game Reviews +

+
+ +
+ +
+ +
+ +
+ + +
+ +
+
+
+
+
+ + + +
+
+ +
+
+
+
+
+
+
+ +
+ +
+

+ + LGR - Thrifts [Ep.11] Disposable Curiosities + +

+
+ + 534 views + + + 1 hour ago + +
+
+
+ Join me as I go out thrifting, in search of games and interesting goodies at various discount shops! Visiting multiple Goodwills and other familiar thrift stores in this episode.

● Please consider supporting LGR on Patreon! http://www.patreon.com/Lazy...

● Twitter and Facebook:
https://twitter.com/lazygam...
http://www.facebook.com/Laz...

● Check out the Kodak's developed photos:
https://drive.google.com/fo...

● Thanks to Cheyanne for the intro artwork:
https://www.facebook.com/ph...

Music is all royalty-free, the titles are:
"Branches", "Mining By Moonlight", and "Spy Groove"
http://www.danosongs.com/#m...
https://www.youtube.com/aud... + +Show less + +
+ +Read more + +
+
+ + +
+
+ +
+ +
+
+ +
+
+

+ + + Uploads + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + The Sims 4 on LGR + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + The Sims 3 on LGR + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + The Sims 2 on LGR + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + The Sims 1 on LGR + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + LGR Plays + + + + Play + +

+ + +
+ Playing through various games, new and old. +
+ + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + MS-DOS Games on LGR + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + Popular uploads + + + + Play + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+

+ + + Created playlists + + + +

+ + + + +
+
+ +
+ + + + +
+ +
+ + + + +
+ + + + + + + + + +
+
+ +
+ + + +
+ +
+
+
+ + + + + + + + + +
+
+
+
+
+ + +
+
+ +
+
+
+
+
Loading...
+
+ +
+
+
+
+ +
+
+
+
+
+
Working...
+
+
+ +
+
+
+
+
+ + +
+ to add this to Watch Later + +
+
+
+

+Add to +

+
+
+
+
+
+ + + + + + + + diff --git a/webroot/yt/webarchive/channel_videos.htm b/webroot/yt/webarchive/channel_videos.htm new file mode 100644 index 0000000..f71700d --- /dev/null +++ b/webroot/yt/webarchive/channel_videos.htm @@ -0,0 +1,2550 @@ + + + + + + + + + + + + + +Lazy Game Reviews - YouTube + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
GB +
+ +
+ +
+
+
+
+ + +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ + + + + +
+ +
+
+
+ + + + +
+
+ + + + + +
+
+ + +
+
+
+
+ + + + + + + Lazy Game Reviews + + +
+ +
+ +
+
+
+ 194 974 + +
+ +
+
+ +
+
+
+

+ Préférences d'abonnement + + +

+
+
+
+
Chargement en cours…
+
+ +
+
+
+
+

+ Icône de chargement + + +Chargement… + +

+ +
+
+
+
+ +
+
+
+
+
+
Opération en cours…
+
+
+ +
+
+
+
+
+ + +
+ +
+ +
+

+ Lazy Game Reviews +

+
+ +
+ +
+ +
+ +
+ + +
+ +
+
+
+
+
+ +
+ + + + + +
+ +
+ + + + + + + + + + +
+ + + + + + + +
+
+ +
+ + + +
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
Chargement en cours…
+
+ +
+
+
+
+ +
+
+
+
+
+
Opération en cours…
+
+
+ +
+
+
+
+
+ + +
+ pour ajouter cette vidéo à la liste "À regarder plus tard". + +
+
+
+

+Ajouter à +

+
+
+
+
+
+ + + + + + + + diff --git a/webroot/yt/webarchive/main.htm b/webroot/yt/webarchive/main.htm new file mode 100644 index 0000000..0157ae2 --- /dev/null +++ b/webroot/yt/webarchive/main.htm @@ -0,0 +1,4845 @@ + + + + + + + + + + + + + + + +YouTube + + + + + +
+
+
Upload
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ +
+ + + + + + + + +
+ +
+ +
+
+
+ + + + +
+ +
+
+
+
+
+ +
+
+
+
+ +
+ + + +
+ +
+ +
+

+We were unable to complete the request, please try again later. +

+
+ +
+
+

+ Loading icon + + +Loading... + +

+ +
+
+ +
+ + +
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
Loading...
+
+ +
+
+
+
+ +
+
+
+
+
+
+
Working...
+
+
+ +
+
+
+
+
+ + + +
+ to add this to Watch Later + +
+ + + + + + + + + diff --git a/webroot/yt/webarchive/search.htm b/webroot/yt/webarchive/search.htm new file mode 100644 index 0000000..bac55b2 --- /dev/null +++ b/webroot/yt/webarchive/search.htm @@ -0,0 +1,1117 @@ + + + + + + + + + + + + +pewdiepie - YouTube + + + + + + +
+
+
+
+
+ +
+ +
+
+
+
Upload
+
+ +
+ + +
+
+ +
+
+
+
+
Loading...
+
+ +
+
+
+
+ +
+
+
+
+
+
Working...
+
+
+ +
+
+
+
+
+ + +
+ to add this to Watch Later + +
+
+
+

+Add to +

+
+
+
+
+
+ + + + + + + + + diff --git a/webroot/yt/webarchive/search_bottom.htm b/webroot/yt/webarchive/search_bottom.htm new file mode 100644 index 0000000..80c1d79 --- /dev/null +++ b/webroot/yt/webarchive/search_bottom.htm @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + +
+ + +
+ +
+ + + + + + +
+
+ +
+
+
+
+
Loading...
+
+ +
+
+
+
+ +
+
+
+
+
+
Working...
+
+
+ +
+
+
+
+
+ + +
+ to add this to Watch Later + +
+
+
+

+Add to +

+
+
+
+
+
+ + + + + + + + + diff --git a/webroot/yt/webarchive/search_top.htm b/webroot/yt/webarchive/search_top.htm new file mode 100644 index 0000000..baf4ae2 --- /dev/null +++ b/webroot/yt/webarchive/search_top.htm @@ -0,0 +1,865 @@ + + + + + + + + + + + + +pewdiepie - YouTube + + + + + + +
+
+
+
+
+ +
+ +
+
+
+
Upload
+
+ +