refactor(nvim): better dir structure
This commit is contained in:
parent
3c81fd59fe
commit
59b5bdce99
@ -174,11 +174,11 @@ font:
|
|||||||
#draw_bold_text_with_bright_colors: false
|
#draw_bold_text_with_bright_colors: false
|
||||||
|
|
||||||
# Colors (Tomorrow Night)
|
# Colors (Tomorrow Night)
|
||||||
#colors:
|
colors:
|
||||||
# Default colors
|
# Default colors
|
||||||
#primary:
|
primary:
|
||||||
# background: '#1d1f21'
|
background: '#000000'
|
||||||
# foreground: '#c5c8c6'
|
foreground: '#c5c8c6'
|
||||||
|
|
||||||
# Bright and dim foreground colors
|
# Bright and dim foreground colors
|
||||||
#
|
#
|
||||||
@ -205,9 +205,9 @@ font:
|
|||||||
#
|
#
|
||||||
# Allowed values are CellForeground/CellBackground, which reference the
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
# affected cell, or hexadecimal colors like #ff00ff.
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
#vi_mode_cursor:
|
vi_mode_cursor:
|
||||||
# text: CellBackground
|
text: CellBackground
|
||||||
# cursor: CellForeground
|
cursor: CellForeground
|
||||||
|
|
||||||
# Search colors
|
# Search colors
|
||||||
#
|
#
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.direnv.enable = true;
|
|
||||||
programs.direnv.nix-direnv.enable = true;
|
|
||||||
programs.direnv.nix-direnv.enableFlakes = true;
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
pkgs.zsh
|
|
||||||
pkgs.direnv
|
|
||||||
|
|
||||||
pkgs.tmux
|
|
||||||
pkgs.tmuxPlugins.yank
|
|
||||||
pkgs.tmuxPlugins.cpu
|
|
||||||
|
|
||||||
pkgs.nodejs_latest
|
|
||||||
|
|
||||||
pkgs.nodePackages.pnpm
|
|
||||||
pkgs.nodePackages.typescript-language-server
|
|
||||||
pkgs.nodePackages.svelte-language-server
|
|
||||||
pkgs.nodePackages.diagnostic-languageserver
|
|
||||||
];
|
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(import (builtins.fetchTarball {
|
|
||||||
url = https://github.com/nix-community/neovim-nightly-overlay/archive/master.tar.gz;
|
|
||||||
}))
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.neovim = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.neovim-nightly;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
|
||||||
# paths it should manage.
|
|
||||||
home.username = "jim";
|
|
||||||
home.homeDirectory = "/home/jim";
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".zshrc".source = ./.zshrc;
|
|
||||||
".bashrc".source = ./.bashrc;
|
|
||||||
".p10k.zsh".source = ./.p10k.zsh;
|
|
||||||
".tmux.conf".source = ./.tmux.conf;
|
|
||||||
".dircolors".source = ./.dircolors;
|
|
||||||
# ".local/share/nvim/site/pack/paqs/start/paq-nvim".source = pkgs.fetchzip {
|
|
||||||
# url = "https://github.com/savq/paq-nvim/archive/refs/heads/master.zip";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"nvim/init.lua".source = ./init.lua;
|
|
||||||
};
|
|
||||||
|
|
||||||
# This value determines the Home Manager release that your
|
|
||||||
# configuration is compatible with. This helps avoid breakage
|
|
||||||
# when a new Home Manager release introduces backwards
|
|
||||||
# incompatible changes.
|
|
||||||
#
|
|
||||||
# You can update Home Manager without changing this value. See
|
|
||||||
# the Home Manager release notes for a list of state version
|
|
||||||
# changes in each release.
|
|
||||||
home.stateVersion = "21.11";
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
# i3status configuration file.
|
|
||||||
# see "man i3status" for documentation.
|
|
||||||
|
|
||||||
# It is important that this file is edited as UTF-8.
|
|
||||||
# The following line should contain a sharp s:
|
|
||||||
# ß
|
|
||||||
# If the above line is not correctly displayed, fix your editor first!
|
|
||||||
|
|
||||||
general {
|
|
||||||
colors = true
|
|
||||||
interval = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
# order += "ipv6"
|
|
||||||
# order += "wireless _first_"
|
|
||||||
order += "ethernet _first_"
|
|
||||||
# order += "battery all"
|
|
||||||
order += "disk /"
|
|
||||||
# order += "load"
|
|
||||||
order += "memory"
|
|
||||||
order += "tztime local"
|
|
||||||
|
|
||||||
wireless _first_ {
|
|
||||||
format_up = "W: (%quality at %essid) %ip"
|
|
||||||
format_down = "W: down"
|
|
||||||
}
|
|
||||||
|
|
||||||
ethernet _first_ {
|
|
||||||
format_up = "E: %ip (%speed)"
|
|
||||||
format_down = "E: down"
|
|
||||||
}
|
|
||||||
|
|
||||||
battery all {
|
|
||||||
format = "%status %percentage %remaining"
|
|
||||||
}
|
|
||||||
|
|
||||||
disk "/" {
|
|
||||||
format = "%avail"
|
|
||||||
}
|
|
||||||
|
|
||||||
load {
|
|
||||||
format = "%1min"
|
|
||||||
}
|
|
||||||
|
|
||||||
memory {
|
|
||||||
format = "%used | %available"
|
|
||||||
threshold_degraded = "1G"
|
|
||||||
format_degraded = "MEMORY < %available"
|
|
||||||
}
|
|
||||||
|
|
||||||
tztime local {
|
|
||||||
format = "%Y-%m-%d %H:%M"
|
|
||||||
}
|
|
@ -5,6 +5,7 @@ local u = require("utils")
|
|||||||
local o = vim.o
|
local o = vim.o
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
local cmd = vim.cmd
|
local cmd = vim.cmd
|
||||||
|
local opt = vim.opt
|
||||||
|
|
||||||
require ("plugins")
|
require ("plugins")
|
||||||
|
|
||||||
@ -19,18 +20,41 @@ if u.has_plugin("cmp") then
|
|||||||
o.showmatch = true -- show matching brackets
|
o.showmatch = true -- show matching brackets
|
||||||
o.swapfile = false
|
o.swapfile = false
|
||||||
|
|
||||||
|
o.autoread = true
|
||||||
|
|
||||||
|
o.lazyredraw = true
|
||||||
|
|
||||||
g.hidden = true --unload buffers when hidden
|
g.hidden = true --unload buffers when hidden
|
||||||
g.filetype = true -- execute autocommands based on filetype
|
g.filetype = true -- execute autocommands based on filetype
|
||||||
|
|
||||||
|
-- Search
|
||||||
|
o.inccommand = 'nosplit' -- show substitutions incrementally
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
opt.wildignore:append('.git/*', 'node_modules/*')
|
||||||
|
o.wildignorecase = true
|
||||||
|
o.lazyredraw = true
|
||||||
|
|
||||||
|
opt.listchars:append({
|
||||||
|
extends = "#",
|
||||||
|
eol = '↴',
|
||||||
|
space = '⋅',
|
||||||
|
tab = '▸ ',
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Shortmess
|
||||||
|
cmd [[set shortmess+=F]]
|
||||||
|
g.loaded_netrw = 1
|
||||||
|
g.loaded_netrwPlugin = 1
|
||||||
|
g.loaded_zipPlugin = 1
|
||||||
|
g.loaded_zip = 1
|
||||||
|
|
||||||
cmd [[set mouse=a]] -- enable mouse interaction
|
cmd [[set mouse=a]] -- enable mouse interaction
|
||||||
cmd [[set undofile]]
|
cmd [[set undofile]]
|
||||||
cmd [[set fcs=eob:\ ]] --disable showing ~ in empty lines
|
cmd [[set fcs=eob:\ ]] --disable showing ~ in empty lines
|
||||||
|
|
||||||
cmd [[command Format :lua vim.lsp.buf.formatting()]]
|
|
||||||
|
|
||||||
cmd [[set noshowmode]] --to get rid of thing like --INSERT--
|
cmd [[set noshowmode]] --to get rid of thing like --INSERT--
|
||||||
cmd [[set noshowcmd]] --to get rid of display of last command
|
cmd [[set noshowcmd]] --to get rid of display of last command
|
||||||
cmd [[set shortmess+=F]] --to get rid of the file name displayed in the command line bar
|
|
||||||
cmd [[set noruler]]
|
cmd [[set noruler]]
|
||||||
|
|
||||||
g.ale_fixers = {"prettier", "eslint"}
|
g.ale_fixers = {"prettier", "eslint"}
|
||||||
@ -129,6 +153,7 @@ if u.has_plugin("cmp") then
|
|||||||
-- Toggleterm / Lazygit setup
|
-- Toggleterm / Lazygit setup
|
||||||
require "lazy-git"
|
require "lazy-git"
|
||||||
|
|
||||||
|
require "autocommands"
|
||||||
|
|
||||||
-- Setup rest.vim
|
-- Setup rest.vim
|
||||||
require("rest-nvim").setup(
|
require("rest-nvim").setup(
|
13
configs/nvim/lua/autocommands.lua
Normal file
13
configs/nvim/lua/autocommands.lua
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
local cmd = vim.cmd;
|
||||||
|
|
||||||
|
cmd [[
|
||||||
|
augroup auto_format
|
||||||
|
au!
|
||||||
|
au BufWritePre * silent! lua vim.lsp.buf.formatting_sync(nil, 300)<CR>
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup highlight_yank
|
||||||
|
au!
|
||||||
|
au TextYankPost * silent! lua vim.highlight.on_yank { timeout = 150 }
|
||||||
|
augroup END
|
||||||
|
]]
|
@ -18,8 +18,10 @@ local function on_attach(client)
|
|||||||
|
|
||||||
-- Set some keybinds conditional on server capabilities
|
-- Set some keybinds conditional on server capabilities
|
||||||
if client.resolved_capabilities.document_formatting then
|
if client.resolved_capabilities.document_formatting then
|
||||||
|
vim.cmd [[command Format :lua vim.lsp.buf.formatting()<CR>]]
|
||||||
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
||||||
elseif client.resolved_capabilities.document_range_formatting then
|
elseif client.resolved_capabilities.document_range_formatting then
|
||||||
|
vim.cmd [[command Format :lua vim.lsp.buf.range_formatting()<CR>]]
|
||||||
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.range_formatting()<CR>", opts)
|
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.range_formatting()<CR>", opts)
|
||||||
end
|
end
|
||||||
|
|
@ -20,6 +20,8 @@ return require("packer").startup(function()
|
|||||||
use "lukas-reineke/indent-blankline.nvim"
|
use "lukas-reineke/indent-blankline.nvim"
|
||||||
use "karb94/neoscroll.nvim"
|
use "karb94/neoscroll.nvim"
|
||||||
|
|
||||||
|
use "tpope/vim-fugitive"
|
||||||
|
|
||||||
-- Code Navigation
|
-- Code Navigation
|
||||||
use "dense-analysis/ale"
|
use "dense-analysis/ale"
|
||||||
use "nathanmsmith/nvim-ale-diagnostic"
|
use "nathanmsmith/nvim-ale-diagnostic"
|
||||||
@ -53,7 +55,7 @@ return require("packer").startup(function()
|
|||||||
use "ellisonleao/glow.nvim"
|
use "ellisonleao/glow.nvim"
|
||||||
|
|
||||||
-- Autoformat
|
-- Autoformat
|
||||||
use "sbdchd/neoformat"
|
--use "sbdchd/neoformat"
|
||||||
|
|
||||||
-- General Popup Window
|
-- General Popup Window
|
||||||
use "akinsho/nvim-toggleterm.lua"
|
use "akinsho/nvim-toggleterm.lua"
|
@ -33,8 +33,8 @@ input * {
|
|||||||
}
|
}
|
||||||
|
|
||||||
smart_gaps off
|
smart_gaps off
|
||||||
gaps inner 0
|
gaps inner 5
|
||||||
gaps outer 10
|
gaps outer 5
|
||||||
|
|
||||||
default_border none
|
default_border none
|
||||||
|
|
||||||
@ -130,17 +130,17 @@ output * bg `find ~/.customization/background -type f | shuf -n 1` fill
|
|||||||
#
|
#
|
||||||
# Workspaces:
|
# Workspaces:
|
||||||
#
|
#
|
||||||
set $ws1 " Code"
|
set $ws1 "1: Code"
|
||||||
assign [class="Alacritty"] $ws1
|
assign [class="Alacritty"] $ws1
|
||||||
set $ws2 " Browser"
|
set $ws2 "2: Browser"
|
||||||
assign [class="Firefox"] $ws2
|
assign [class="Firefox"] $ws2
|
||||||
assign [class="Chromium"] $ws2
|
assign [class="Chromium"] $ws2
|
||||||
assign [class="Google-chrome-beta"] $ws2
|
assign [class="Google-chrome-beta"] $ws2
|
||||||
assign [class="Google-chrome"] $ws2
|
assign [class="Google-chrome"] $ws2
|
||||||
set $ws3 " Music"
|
set $ws3 "3: Music"
|
||||||
assign [class="Spotify"] $ws3
|
assign [class="Spotify"] $ws3
|
||||||
assign [class="spotify"] $ws3
|
assign [class="spotify"] $ws3
|
||||||
set $ws4 " Chat"
|
set $ws4 "4: Chat"
|
||||||
|
|
||||||
# Switch to workspace
|
# Switch to workspace
|
||||||
bindsym $mod+1 workspace $ws1
|
bindsym $mod+1 workspace $ws1
|
||||||
|
20
configs/waybar/capture_mp3.sh
Executable file
20
configs/waybar/capture_mp3.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
arecord -f cd -t raw -d 4 -q | lame -r -q - output.mp3 2>/dev/null
|
||||||
|
|
||||||
|
if [ ! -f "./output.mp3" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
JSON=$(songrec audio-file-to-recognized-song output.mp3)
|
||||||
|
|
||||||
|
RETRYMS=$(echo $JSON | jq '.retryms')
|
||||||
|
|
||||||
|
if [ $RETRYMS != null ]; then
|
||||||
|
echo $(expr $RETRYMS / 1000)
|
||||||
|
else
|
||||||
|
SONG=$(echo $JSON | tr '\r\n' ' ' | jq '.track.share.subject')
|
||||||
|
echo $SONG
|
||||||
|
rm -rf output.mp3
|
||||||
|
fi
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css"
|
CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/*.css $HOME/.config/waybar/*.sh"
|
||||||
|
|
||||||
killall waybar;
|
killall waybar;
|
||||||
|
|
||||||
|
34
configs/waybar/mediaplayer.py
Normal file → Executable file
34
configs/waybar/mediaplayer.py
Normal file → Executable file
@ -3,20 +3,23 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
|
import time
|
||||||
import gi
|
import gi
|
||||||
import json
|
import json
|
||||||
gi.require_version('Playerctl', '2.0')
|
gi.require_version('Playerctl', '2.0')
|
||||||
from gi.repository import Playerctl, GLib
|
from gi.repository import Playerctl, GLib
|
||||||
|
import subprocess
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
playerVisible = False
|
||||||
|
|
||||||
def write_output(text, player):
|
def write_output(text, player_name):
|
||||||
logger.info('Writing output')
|
logger.info('Writing output')
|
||||||
|
|
||||||
output = {'text': text,
|
output = {'text': text.replace("&", "&"),
|
||||||
'class': 'custom-' + player.props.player_name,
|
'class': 'custom-' + player_name,
|
||||||
'alt': player.props.player_name}
|
'alt': player_name}
|
||||||
|
|
||||||
sys.stdout.write(json.dumps(output) + '\n')
|
sys.stdout.write(json.dumps(output) + '\n')
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
@ -43,18 +46,32 @@ def on_metadata(player, metadata, manager):
|
|||||||
|
|
||||||
if player.props.status != 'Playing' and track_info:
|
if player.props.status != 'Playing' and track_info:
|
||||||
track_info = ' ' + track_info
|
track_info = ' ' + track_info
|
||||||
write_output(track_info, player)
|
write_output(track_info, player.props.player_name)
|
||||||
|
|
||||||
|
|
||||||
|
def update_song():
|
||||||
|
global playerVisible
|
||||||
|
while not playerVisible:
|
||||||
|
result = subprocess.run("./capture_mp3.sh",stdout=subprocess.PIPE)
|
||||||
|
resultString = result.stdout.decode("utf-8")
|
||||||
|
print(resultString);
|
||||||
|
write_output(resultString, "Spotify")
|
||||||
|
time.sleep(6)
|
||||||
|
|
||||||
def on_player_appeared(manager, player, selected_player=None):
|
def on_player_appeared(manager, player, selected_player=None):
|
||||||
|
global playerVisible
|
||||||
if player is not None and (selected_player is None or player.name == selected_player):
|
if player is not None and (selected_player is None or player.name == selected_player):
|
||||||
|
playerVisible = True
|
||||||
init_player(manager, player)
|
init_player(manager, player)
|
||||||
else:
|
else:
|
||||||
logger.debug("New player appeared, but it's not the selected player, skipping")
|
logger.debug("New player appeared, but it's not the selected player, skipping")
|
||||||
|
|
||||||
|
|
||||||
def on_player_vanished(manager, player):
|
def on_player_vanished(manager, player):
|
||||||
|
global playerVisible
|
||||||
logger.info('Player has vanished')
|
logger.info('Player has vanished')
|
||||||
|
playerVisible = False
|
||||||
|
update_song()
|
||||||
sys.stdout.write('\n')
|
sys.stdout.write('\n')
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
@ -64,6 +81,7 @@ def init_player(manager, name):
|
|||||||
player = Playerctl.Player.new_from_name(name)
|
player = Playerctl.Player.new_from_name(name)
|
||||||
player.connect('playback-status', on_play, manager)
|
player.connect('playback-status', on_play, manager)
|
||||||
player.connect('metadata', on_metadata, manager)
|
player.connect('metadata', on_metadata, manager)
|
||||||
|
update_song()
|
||||||
manager.manage_player(player)
|
manager.manage_player(player)
|
||||||
on_metadata(player, player.props.metadata, manager)
|
on_metadata(player, player.props.metadata, manager)
|
||||||
|
|
||||||
@ -72,7 +90,7 @@ def signal_handler(sig, frame):
|
|||||||
logger.debug('Received signal to stop, exiting')
|
logger.debug('Received signal to stop, exiting')
|
||||||
sys.stdout.write('\n')
|
sys.stdout.write('\n')
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
# loop.quit()
|
loop.quit()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
@ -89,6 +107,7 @@ def parse_arguments():
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
arguments = parse_arguments()
|
arguments = parse_arguments()
|
||||||
|
|
||||||
# Initialize logging
|
# Initialize logging
|
||||||
@ -98,6 +117,7 @@ def main():
|
|||||||
# Logging is set by default to WARN and higher.
|
# Logging is set by default to WARN and higher.
|
||||||
# With every occurrence of -v it's lowered by one
|
# With every occurrence of -v it's lowered by one
|
||||||
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
|
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
|
||||||
|
logger.setLevel(0)
|
||||||
|
|
||||||
# Log the sent command line arguments
|
# Log the sent command line arguments
|
||||||
logger.debug('Arguments received {}'.format(vars(arguments)))
|
logger.debug('Arguments received {}'.format(vars(arguments)))
|
||||||
@ -120,8 +140,8 @@ def main():
|
|||||||
|
|
||||||
init_player(manager, player)
|
init_player(manager, player)
|
||||||
|
|
||||||
|
update_song()
|
||||||
loop.run()
|
loop.run()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
2
configs/waybar/recognize-song.sh
Normal file
2
configs/waybar/recognize-song.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
249
configs/waybar/song.json
Normal file
249
configs/waybar/song.json
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
{
|
||||||
|
"location": {
|
||||||
|
"altitude": 300.0,
|
||||||
|
"latitude": 45.0,
|
||||||
|
"longitude": 2.0
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
{
|
||||||
|
"channel": "0",
|
||||||
|
"frequencyskew": 0.00008058548,
|
||||||
|
"id": "341270538",
|
||||||
|
"offset": 148.84515625,
|
||||||
|
"timeskew": -0.0023667216
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tagid": "68982327-bef9-4ff3-a426-7fea39f7997f",
|
||||||
|
"timestamp": 95912955,
|
||||||
|
"timezone": "Europe/Paris",
|
||||||
|
"track": {
|
||||||
|
"albumadamid": "1477092467",
|
||||||
|
"artists": [
|
||||||
|
{
|
||||||
|
"adamid": "827504058",
|
||||||
|
"id": "44445618"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"genres": {
|
||||||
|
"primary": "Alternative"
|
||||||
|
},
|
||||||
|
"highlightsurls": {
|
||||||
|
"artisthighlightsurl": "https://cdn.shazam.com/video/v3/en/US/android/827504058/highlights?affiliate=mttnagencyid%3D769459046716559743%26mttnsiteid%3D125115%26mttn3pid%3Da_custom_779816081798873874%26mttnsub1%3DShazam_android_am%26mttnsub2%3D5348615A-616D-3235-3830-44754D6D5973%26itscg%3D30201%26app%3Dmusic%26itsct%3DShazam_android_am",
|
||||||
|
"relatedhighlightsurl": "https://cdn.shazam.com/video/v3/en/US/android/44445618/artist-similarities-id-44445618/relatedhighlights?max_artists=5&affiliate=mttnagencyid%3D769459046716559743%26mttnsiteid%3D125115%26mttn3pid%3Da_custom_779816081798873874%26mttnsub1%3DShazam_android_am%26mttnsub2%3D5348615A-616D-3235-3830-44754D6D5973%26itscg%3D30201%26app%3Dmusic%26itsct%3DShazam_android_am"
|
||||||
|
},
|
||||||
|
"hub": {
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"id": "1477092472",
|
||||||
|
"name": "apple",
|
||||||
|
"type": "applemusicplay"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "apple",
|
||||||
|
"type": "uri",
|
||||||
|
"uri": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview115/v4/17/c4/ff/17c4ff80-8823-5ce9-fa5a-0c1892129e3b/mzaf_15603304596709002890.plus.aac.ep.m4a"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"displayname": "APPLE MUSIC",
|
||||||
|
"explicit": false,
|
||||||
|
"image": "https://images.shazam.com/static/icons/hub/android/v5/applemusic_{scalefactor}.png",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"name": "hub:applemusic:deeplink",
|
||||||
|
"type": "intent",
|
||||||
|
"uri": "intent://music.apple.com/us/album/nothings-older-than-yesterday/1477092467?i=1477092472&mttnagencyid=769459046716559743&mttnsiteid=125115&mttn3pid=a_custom_779816081798873874&mttnsub1=Shazam_android_am&mttnsub2=5348615A-616D-3235-3830-44754D6D5973&itscg=30201&app=music&itsct=Shazam_android_am#Intent;scheme=http;package=com.apple.android.music;action=android.intent.action.VIEW;end"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1477092472",
|
||||||
|
"name": "hub:applemusic:connect",
|
||||||
|
"type": "applemusicconnect",
|
||||||
|
"uri": "https://unsupported.shazam.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hub:applemusic:androidstore",
|
||||||
|
"type": "uri",
|
||||||
|
"uri": "https://play.google.com/store/apps/details?id=com.apple.android.music&referrer=utm_source=https%3A%2F%2Fmusic.apple.com%2Fsubscribe%3Fmttnagencyid%3D769459046716559743%26mttnsiteid%3D125115%26mttn3pid%3Da_custom_779816081798873874%26mttnsub1%3DShazam_android_am%26mttnsub2%3D5348615A-616D-3235-3830-44754D6D5973%26itscg%3D30201%26app%3Dmusic%26itsct%3DShazam_android_am"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"beacondata": {
|
||||||
|
"providername": "applemusic",
|
||||||
|
"type": "open"
|
||||||
|
},
|
||||||
|
"caption": "OPEN",
|
||||||
|
"colouroverflowimage": false,
|
||||||
|
"image": "https://images.shazam.com/static/icons/hub/android/v5/overflow-open-option_{scalefactor}.png",
|
||||||
|
"listcaption": "Open in Apple Music",
|
||||||
|
"overflowimage": "https://images.shazam.com/static/icons/hub/android/v5/applemusic-overflow_{scalefactor}.png",
|
||||||
|
"providername": "applemusic",
|
||||||
|
"type": "open"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"providers": [
|
||||||
|
{
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"name": "hub:spotify:searchdeeplink",
|
||||||
|
"type": "uri",
|
||||||
|
"uri": "spotify:search:Nothing%27s%20Older%20Than%20Yesterday%20Cari%20Cari"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"caption": "Open in Spotify",
|
||||||
|
"images": {
|
||||||
|
"default": "https://images.shazam.com/static/icons/hub/android/v5/spotify_{scalefactor}.png",
|
||||||
|
"overflow": "https://images.shazam.com/static/icons/hub/android/v5/spotify-overflow_{scalefactor}.png"
|
||||||
|
},
|
||||||
|
"type": "SPOTIFY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"name": "hub:youtubemusic:androiddeeplink",
|
||||||
|
"type": "uri",
|
||||||
|
"uri": "https://music.youtube.com/search?q=Nothings+Older+Than+Yesterday+Cari+Cari&feature=shazam"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"caption": "Open in YouTube Music",
|
||||||
|
"images": {
|
||||||
|
"default": "https://images.shazam.com/static/icons/hub/android/v5/youtubemusic_{scalefactor}.png",
|
||||||
|
"overflow": "https://images.shazam.com/static/icons/hub/android/v5/youtubemusic-overflow_{scalefactor}.png"
|
||||||
|
},
|
||||||
|
"type": "YOUTUBEMUSIC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"name": "hub:deezer:searchdeeplink",
|
||||||
|
"type": "uri",
|
||||||
|
"uri": "deezer-query://www.deezer.com/play?query=%7Btrack%3A%27Nothing%5C%27s+Older+Than+Yesterday%27%20artist%3A%27Cari+Cari%27%7D"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"caption": "Open in Deezer",
|
||||||
|
"images": {
|
||||||
|
"default": "https://images.shazam.com/static/icons/hub/android/v5/deezer_{scalefactor}.png",
|
||||||
|
"overflow": "https://images.shazam.com/static/icons/hub/android/v5/deezer-overflow_{scalefactor}.png"
|
||||||
|
},
|
||||||
|
"type": "DEEZER"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "APPLEMUSIC"
|
||||||
|
},
|
||||||
|
"images": {
|
||||||
|
"background": "https://is3-ssl.mzstatic.com/image/thumb/Music114/v4/62/5c/d7/625cd78a-6d55-3128-1a55-894d244800c9/pr_source.png/800x800cc.jpg",
|
||||||
|
"coverart": "https://is1-ssl.mzstatic.com/image/thumb/Music125/v4/b8/c5/3c/b8c53c9c-489f-3bec-1b25-c232368a1fac/rls00069784.jpg/400x400cc.jpg",
|
||||||
|
"coverarthq": "https://is1-ssl.mzstatic.com/image/thumb/Music125/v4/b8/c5/3c/b8c53c9c-489f-3bec-1b25-c232368a1fac/rls00069784.jpg/400x400cc.jpg",
|
||||||
|
"joecolor": "b:031827p:fdf0dfs:f7831et:cbc5baq:c66e1f"
|
||||||
|
},
|
||||||
|
"isrc": "ATT801713001",
|
||||||
|
"key": "341270538",
|
||||||
|
"layout": "5",
|
||||||
|
"relatedtracksurl": "https://cdn.shazam.com/shazam/v3/en/US/android/-/tracks/track-similarities-id-341270538?startFrom=0&pageSize=20&connected=",
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"metadata": [
|
||||||
|
{
|
||||||
|
"text": "Anaana",
|
||||||
|
"title": "Album"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "recordJet",
|
||||||
|
"title": "Label"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "2017",
|
||||||
|
"title": "Released"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metapages": [
|
||||||
|
{
|
||||||
|
"caption": "Cari Cari",
|
||||||
|
"image": "https://is3-ssl.mzstatic.com/image/thumb/Music114/v4/62/5c/d7/625cd78a-6d55-3128-1a55-894d244800c9/pr_source.png/800x800cc.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caption": "Nothing's Older Than Yesterday",
|
||||||
|
"image": "https://is1-ssl.mzstatic.com/image/thumb/Music125/v4/b8/c5/3c/b8c53c9c-489f-3bec-1b25-c232368a1fac/rls00069784.jpg/400x400cc.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tabname": "Song",
|
||||||
|
"type": "SONG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"beacondata": {
|
||||||
|
"commontrackid": "70387093",
|
||||||
|
"lyricsid": "19307144",
|
||||||
|
"providername": "musixmatch"
|
||||||
|
},
|
||||||
|
"footer": "Writer(s): Stephanie Widmer, Alexander Koeck
|
||||||
|
Lyrics powered by www.musixmatch.com",
|
||||||
|
"tabname": "Lyrics",
|
||||||
|
"text": [
|
||||||
|
"Waves are rolling on the beach",
|
||||||
|
"Sunlight is striking through the trees",
|
||||||
|
"Heads up, don't look back",
|
||||||
|
"On the coast of Jamaica, there ain't no looking back",
|
||||||
|
"",
|
||||||
|
"Move, nothing's older than yesterday",
|
||||||
|
"'Cause we're riding, it's just the streets and you and me",
|
||||||
|
"Heads up, don't look back!",
|
||||||
|
"On the streets of Tokyo, no looking back",
|
||||||
|
"C'mon baby, we can stay up all night",
|
||||||
|
"I stay here till sunrise",
|
||||||
|
"Come on, don't miss this ride"
|
||||||
|
],
|
||||||
|
"type": "LYRICS",
|
||||||
|
"url": "https://cdn.shazam.com/lyrics/v1/en/US/android/musixmatch/subtitles/70387093/202/1?token=d3fe124c5cfcec867f24caddbb4fb700"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tabname": "Video",
|
||||||
|
"type": "VIDEO",
|
||||||
|
"youtubeurl": "https://cdn.shazam.com/video/v3/-/US/android/341270538/youtube/video?q=Cari+Cari+%22Nothing's+Older+Than+Yesterday%22&c=UCiL526VL2ZWT9pUuUQP52uw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"id": "44445618",
|
||||||
|
"type": "artistposts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "44445618",
|
||||||
|
"type": "artist"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"avatar": "https://is3-ssl.mzstatic.com/image/thumb/Music114/v4/62/5c/d7/625cd78a-6d55-3128-1a55-894d244800c9/pr_source.png/800x800cc.jpg",
|
||||||
|
"id": "44445618",
|
||||||
|
"name": "Cari Cari",
|
||||||
|
"tabname": "Artist",
|
||||||
|
"toptracks": {
|
||||||
|
"url": "https://cdn.shazam.com/shazam/v3/en/US/android/-/tracks/artisttoptracks_44445618?startFrom=0&pageSize=20&connected="
|
||||||
|
},
|
||||||
|
"type": "ARTIST",
|
||||||
|
"url": "https://cdn.shazam.com/digest/v1/en/US/android/artist/44445618/recentpost",
|
||||||
|
"verified": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tabname": "Related",
|
||||||
|
"type": "RELATED",
|
||||||
|
"url": "https://cdn.shazam.com/shazam/v3/en/US/android/-/tracks/track-similarities-id-341270538?startFrom=0&pageSize=20&connected="
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"share": {
|
||||||
|
"avatar": "https://is3-ssl.mzstatic.com/image/thumb/Music114/v4/62/5c/d7/625cd78a-6d55-3128-1a55-894d244800c9/pr_source.png/800x800cc.jpg",
|
||||||
|
"href": "https://www.shazam.com/track/341270538/nothings-older-than-yesterday",
|
||||||
|
"html": "https://www.shazam.com/snippets/email-share/341270538?lang=en&country=US",
|
||||||
|
"image": "https://is1-ssl.mzstatic.com/image/thumb/Music125/v4/b8/c5/3c/b8c53c9c-489f-3bec-1b25-c232368a1fac/rls00069784.jpg/400x400cc.jpg",
|
||||||
|
"snapchat": "https://www.shazam.com/partner/sc/track/341270538",
|
||||||
|
"subject": "Nothing's Older Than Yesterday - Cari Cari",
|
||||||
|
"text": "I used Shazam to discover Nothing's Older Than Yesterday by Cari Cari.",
|
||||||
|
"twitter": "I used @Shazam to discover Nothing's Older Than Yesterday by Cari Cari."
|
||||||
|
},
|
||||||
|
"subtitle": "Cari Cari",
|
||||||
|
"title": "Nothing's Older Than Yesterday",
|
||||||
|
"type": "MUSIC",
|
||||||
|
"url": "https://www.shazam.com/track/341270538/nothings-older-than-yesterday",
|
||||||
|
"urlparams": {
|
||||||
|
"{trackartist}": "Cari+Cari",
|
||||||
|
"{tracktitle}": "Nothing%27s+Older+Than+Yesterday"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user