Added geoLocation code

This commit is contained in:
Luca 2020-10-22 13:47:30 +02:00
parent d62e2ea036
commit bf2737b947
4 changed files with 47 additions and 6 deletions

8
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "freetube",
"version": "0.9.0",
"version": "0.9.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -8552,7 +8552,7 @@
},
"humanize-plus": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"resolved": "http://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=",
"dev": true
},
@ -13899,7 +13899,7 @@
},
"safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@ -15070,7 +15070,7 @@
},
"strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},

View File

@ -1,5 +1,6 @@
import Vue from 'vue'
import $ from 'jquery'
import FS from 'fs'
import { mapActions } from 'vuex'
import FtCard from '../ft-card/ft-card.vue'
import FtSelect from '../ft-select/ft-select.vue'
@ -24,6 +25,8 @@ export default Vue.extend({
instanceNames: [],
instanceValues: [],
currentLocale: '',
currentGeoLocation: '',
geoLocationArray: [],
backendValues: [
'invidious',
'local'
@ -535,6 +538,9 @@ export default Vue.extend({
}
},
computed: {
isDev: function () {
return process.env.NODE_ENV === 'development'
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
@ -584,6 +590,12 @@ export default Vue.extend({
return names
},
geoLocationOptions: function () {
return this.geoLocationArray.map((entry) => { return entry.code })
},
geoLocationNames: function () {
return this.geoLocationArray.map((entry) => { return entry.name })
},
backendNames: function () {
return [
@ -639,6 +651,8 @@ export default Vue.extend({
this.updateInvidiousInstanceBounce = debounce(this.updateInvidiousInstance, 500)
this.currentLocale = this.$i18n.locale
this.currentGeoLocation = this.$i18n.geoLocation
this.updateGeoLocationNames(this.currentLocale)
},
beforeDestroy: function () {
if (this.invidiousInstance === '') {
@ -664,6 +678,26 @@ export default Vue.extend({
this.$i18n.locale = locale
this.currentLocale = locale
localStorage.setItem('locale', locale)
this.updateGeoLocationNames(locale)
},
updateGeoLocation: function (location) {
this.$i18n.geoLocation = location
this.currentGeoLocation = location
localStorage.setItem('geoLocation', location)
},
updateGeoLocationNames: function (locale) {
let fileData
const fileLocation = this.isDev ? '.' : `${__dirname}`
if (FS.existsSync(`${fileLocation}/static/geolocations/${locale}`)) {
fileData = FS.readFileSync(`${fileLocation}/static/geolocations/${locale}/countries.json`)
} else {
fileData = FS.readFileSync(`${fileLocation}/static/geolocations/en-US/countries.json`)
}
const countries = JSON.parse(fileData).map((entry) => { return { id: entry.id, name: entry.name, code: entry.alpha2 } })
countries.sort((a, b) => { return a.id - b.id })
this.geoLocationArray = countries
},
...mapActions([

View File

@ -85,6 +85,13 @@
:select-values="localeOptions"
@change="updateLocale"
/>
<ft-select
:placeholder="$t('Settings.General Settings.Region for Trending')"
:value="currentGeoLocation"
:select-names="geoLocationNames"
:select-values="geoLocationOptions"
@change="updateGeoLocation"
/>
</div>
<ft-flex-box class="generalSettingsFlexBox">
<ft-input

View File

@ -65,8 +65,8 @@ export default Vue.extend({
this.isLoading = true
console.log('getting local trending')
ytrend.scrape_trending_page().then((result) => {
console.log(localStorage.geoLocation)
ytrend.scrape_trending_page(localStorage.geoLocation.toUpperCase()).then((result) => {
const returnData = result.filter((item) => {
return item.type === 'video' || item.type === 'channel' || item.type === 'playlist'
})