Sound of beginning https://www.himiku.com/ zh-CN Listen to the original voice in your heart Mon, 01 Apr 2024 23:38:00 +0800 Mon, 01 Apr 2024 23:38:00 +0800 Steam Deck Preliminary Hands on Guide https://www.himiku.com/archives/steamdeck.html https://www.himiku.com/archives/steamdeck.html Mon, 01 Apr 2024 23:38:00 +0800 mikusa Initial startup

After unpacking, take out the machine body, gently press the top power button to start the machine, and there will be a beep when starting the machine, No need to connect to the power supply Then, after setting according to the process, you will enter the interface suspected of "System Update". But it can be updated without networking, so I guess it's actually Release the system and install it , so the waiting time is longer. Guess wrong when I didn't say.

Login account

Do everything possible to log in to the Steam account to perform subsequent operations.

Desktop mode

Enter the desktop

SteamOS of Steam Deck is a distribution version based on Arch Linux, with KDE Plasma desktop environment pre installed. You can use the STEAM button, or select Power in the STEAM menu, and then select Switch to Desktop.

You can enter a desktop mode whose operation logic is basically the same as that of Windows PC.

switch language

Click the Start button, select the purple Steam icon on the top, or click the setting icon on the taskbar to enter the setting interface.

Oh, sorry, I didn't know how to take screenshots when I switched languages, so I didn't take screenshots. I'll switch back to English first.

Then find Regional Settings , enter the language and regional settings.

Then, click the Modify button on the right side of the Language to change the language to simplified Chinese, and apply the change in the lower right corner.

The prompt says that it needs to be restarted to take effect. Click Restart now to restart immediately.

The desktop is in Chinese.

On screen keyboard

On the premise of opening Steam, press STEAM+X to call up the on-screen keyboard in Gaming mode or desktop mode.

Enable SSH

After searching around Station B, few people mentioned that they could use computers to connect to the SSH of Steam Deck. They all input a long string of commands on the small screen

However, in the video, everyone uses a docking station to connect the keyboard and mouse. I don't have a docking station, so I can only do this:

In fact, it can be operated on a PC like this:

After all, SteamOS is a distribution version based on Arch Linux. Of course, it must be able to connect with SSH!! (#`O′)

Because:

When shipping, no password is set for the default user "deck". This security setting can prevent access through ssh and cannot run commands through sudo. If you want to set the password to run the sudo command, open a terminal window and use the passwd command to set the security password. At this time, you can use sudo wherever you need to improve.

Therefore, under the "System" category, open the Konsole command line terminal.

Press STEAM+X to call up the on-screen keyboard. input passwd , press Enter to modify the password of the deck user.

When setting the password, the password will not be displayed, so you can set it as short as possible, such as twenty-three thousand three hundred and thirty-three

After password setting, execute the following command to start ssh Since I don't have a keyboard, I can only slowly rub the screen:

 systemctl enable sshd systemctl start sshd

Execute the following command to view after successful startup ssh Status:

 systemctl status sshd

If the following prompt appears, explain ssh Open successfully:

 (130)( deck@steamdeck  ~)$ systemctl status sshd ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled) Active: active (running) since Wed 2024-03-13 19:19:19 CST;  9min ago Main PID: 21770 (sshd) Tasks: 1 (limit: 17754) Memory: 4.1M CPU: 62ms CGroup: /system.slice/sshd.service └─21770 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups"

Then you can use your computer to connect. Windows 11 has a built-in Windows Terminal terminal. After opening it, assume that your Steam Deck IP address is 192.168.31.250 , just:

 ssh  deck@192.168.31.250

You can complete a series of subsequent operations of installing plug-in update software to replace store source on your computer!!

Beautify SSH

Turn off read-only:

 sudo steamos-readonly disable

Install zsh:

 sudo pacman -Sy --noconfirm zsh

Switch the shell to zsh:

 chsh -s /usr/bin/zsh

Install ohmyzsh and use the one click script:

 sh -c "$(curl -fsSL  https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh )"

Or use manual installation. If the network is poor, please use the image yourself, such as https://mirror.ghproxy.com/

 git clone  https://github.com/ohmyzsh/ohmyzsh.git  ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc source ~/.zshrc

Install the zsh plug-in:

 git clone  https://github.com/zsh-users/zsh-syntax-highlighting.git  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting git clone  https://github.com/zsh-users/zsh-autosuggestions  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Enable some plug-ins:

 sed -i.bak 's/plugins=(\(.*\))/plugins=(\zsh-autosuggestions zsh-syntax-highlighting z extract sudo cp aliases)/' ~/.zshrc source ~/.zshrc

install neofetch

 sudo pacman -Sy --noconfirm neofetch

Because the installed software may not be lost after the next system update, you can prepare an integrated installation command for next backup:

 sudo steamos-readonly disable sudo pacman -Sy --noconfirm zsh neofetch

The zsh plug-in and omz configuration are installed in the user's folder. I haven't updated the system yet. I'll have to wait for the next update to see if something will be lost.

Modify store software source

Steam Deck comes with Flathub Linux store, which can easily install some programs.

However, the domestic download is very slow, so the store software source is modified to the image source of SJTU:

 sudo flatpak remote-modify flathub --url= https://mirror.sjtu.edu.cn/flathub

If you want to switch back to the original software source, execute:

 sudo flatpak remote-modify flathub --url= https://flathub.org/repo/flathub.flatpakrepo

Installing plug-ins

Installing plug-ins means installing Decky Loader , an open source plug-in system.

Click the STEAM button to open the system ➡️ System settings, open developer mode.

Then, the STEAM menu will add a column of "Developer", slide to the bottom, open CEF remote debugging, and the system will prompt you to restart, waiting for restart.

After reboot, the PC connects to SSH and runs official One click installation script for:

 curl -L  https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh  | sh

However, the rate is probably not available for download, so the domestic forum image script:

 curl -L  http://dl.ohmydeck.net  | sh

Then press the shortcut buttons at the three points below the right rocker to see the plug-in panel button with the appearance of a plug. If this button is not available, restart Steam Deck.

You can refer to the plug-ins I installed in this screenshot and study them yourself. Station B also has relevant video tutorials (but I think they are too tedious, seeing is better than hearing, and I still have to try it myself).

Plug in recommendation

To Moon

After SSH connection, use one click script to install:

 curl -L  http://i.ohmydeck.net  | sh

After installation and configuration, enable it to solve a series of problems such as unable to access Steam. Please refer to Official Tutorial

Commonly known as: understand everything.

SteamGridDB

It has been localized and used to modify the picture of the game in the Steam library. It can be installed directly in the plug-in store.

ProronDB Badges

It has been translated into Chinese and used to display the running effect score on Steam Deck on the game page. The official website is: https://www.protondb.com/

It can be installed directly in the plug-in store.

Game Theme Music

It has been localized and used to play the theme music of the game in the Steam library. It can be installed directly in the plug-in store.

However, since the music is taken from YouTube, a self provided agent is required (a U accelerator cannot accelerate the tubing).

Screenshot

In the Gaming mode, use the STEAM+R1 trigger to take a screenshot.

But this screenshot is saved in unknown places by default. You need to switch to desktop mode, open Steam in desktop mode, and click Settings ➡️ In the game, find the settings of the screenshot, check "Save an uncompressed copy of my screenshot", and set the uncompressed screenshot folder.

In desktop mode, you can find the "perspective screenshot tool" in the tool, and click it to take a screenshot.

We can drag this tool to the bottom bar to quickly take a screenshot in desktop mode.

Installing Samba

There are many examples of using SSH or SFTP to access Steam Deck files in the LAN, but I think it is more convenient to install a Samba.

Here I found one on the Internet One click Samba installation script , and made changes to Chinese and shared folders.

Address of modified version: steamdeck-samba-server

After logging in to SSH, run the following script on the terminal:

 sh -c "$(curl -fsSL  https://raw.githubusercontent.com/mikusaa/steamdeck-samba-server/main/script.sh )"

After that, the script file will be automatically downloaded and run, and the operation will follow the prompts.

The complete installation process is as follows:

 $ sh -c "$(curl -fsSL  https://raw.githubusercontent.com/mikusaa/steamdeck-samba-server/main/script.sh )" Warning: This script will install the Samba server on your Steam Dek system. Do you change your password through passwd? [Y/N] y Please enter your password (the password will not be displayed): Samba server is being installed Disable steamos read only mode Edit pacman.conf file Install pacman key Import pacman key ==> Appending keys from archlinux.gpg... ==> Updating trust database... gpg: next trustdb check due at 2024-04-10 Install samba :: Synchronizing package databases... jupiter-3.5 is up to date holo-3.5 is up to date core-3.5 is up to date extra-3.5 is up to date community-3.5 is up to date multilib-3.5 is up to date warning: samba-4.18.3-1 is up to date -- reinstalling resolving dependencies... looking for conflicting packages... Packages (1) samba-4.18.3-1 Total Installed Size:  56.41 MiB Net Upgrade Size:       0.00 MiB :: Proceed with installation?  [Y/n] (1/1) checking keys in keyring                                           [########################################] 100% (1/1) checking package integrity                                         [########################################] 100% (1/1) loading package files                                              [########################################] 100% (1/1) checking for file conflicts                                        [########################################] 100% (1/1) checking available disk space                                      [########################################] 100% :: Processing package changes... (1/1) reinstalling samba                                                 [########################################] 100% :: Running post-transaction hooks... (1/3) Reloading system manager configuration... (2/3) Creating temporary files... /usr/lib/tmpfiles.d/steamos.conf:6: Duplicate line for path "/root", ignoring. /usr/lib/tmpfiles.d/steamos.conf:23: Duplicate line for path "/var/empty", ignoring. /usr/lib/tmpfiles.d/tmp.conf:12: Duplicate line for path "/var/tmp", ignoring. /usr/lib/tmpfiles.d/var.conf:19: Duplicate line for path "/var/cache", ignoring. (3/3) Arming ConditionNeedsUpdate... Write smb.conf configuration Add 'deck' user to samba user database New SMB password: Retype new SMB password: Enabling and starting smb service Warning: ALREADY_ENABLED: samba success success Restart smb service The file system is now restored to read-only mode Samba server has been installed successfully! Now, you can access the steamapps, downloads, pictures, documents and SD card mmcblk0p1 folder on Steam Deck from any device on the local network. Press any key to continue

The script shares the following folder:

  • /home/deck/Pictures/ : deck user picture folder
  • /home/deck/Documents/ : deck user document folder
  • /home/deck/Downloads/: Deck user download folder
  • /home/deck/.local/share/Steam/steamapps/ : deck user Steam game folder
  • /run/media/mmcblk0p1/ : SD card folder (it can be opened only after the SD card is inserted)

Enter in File Explorer \\steamdeck Enter and enter the user name as prompted deck And the password you just set, you can directly operate these shared folders on your computer! It is not convenient to copy games or screenshots 😊。

Or, you want to share directly deck User home folder, use the following script instead:

 sh -c "$(curl -fsSL  https://raw.githubusercontent.com/mikusaa/steamdeck-samba-server/main/script-home.sh )"

However, this will directly expose the entire user folder, so please set a slightly more complex password.

To be continued

reference resources

]]>
fourteen https://www.himiku.com/archives/steamdeck.html#comments https://www.himiku.com/feed/
Kill the built-in Nginx of Qunhui DSM. My NAS is my own choice! https://www.himiku.com/archives/use-your-own-nginx-in-synology-nas.html https://www.himiku.com/archives/use-your-own-nginx-in-synology-nas.html Sun, 24 Mar 2024 20:48:00 +0800 mikusa Qunhui DSM usage Nginx It is convenient to provide Web and reverse generation services, but there are many functional limitations. For example, batch replacement and fragment reuse are not allowed. This is not a big deal. Unfortunately, the built-in Nginx is extremely slow to respond. The time to change the configuration and wait for the overload to take effect is enough for me to finish cooking. Not to mention the low efficiency of supporting certificate application, even if acme.sh is used to issue a certificate, it is also very troublesome (for example This This )。 So in general, Not easy to use

I have already told Qunhui DSM Docker and Shell This time, he slapped Nginx in the face.

Now, let me teach you how to set up your own portal, install an additional Nginx, and take over Qunhui's network counter generation and even the internal web page functions of the entire DSM.

Or you can use caddy, so that even the SSL certificate can be handled directly. But I won't. I can only talk about Nginx.

⚠️ Please note that!
Modifying the system configuration is extremely dangerous. I am not responsible for NAS downtime due to misoperation!!

The following operations are carried out in the DS220+equipped with DSM 7.2.1-69057 Update 3. The Docker Compose version is 2.25.0.

Remove port occupation

Since we have started our own business, this built-in Nginx occupies four hundred and forty-three and eighty The port will be removed first.

If you don't want to perform this step, you can configure Nginx for self installation later eight thousand four hundred and forty-three and eight thousand and eighty Port. However, I think it is extremely troublesome to knock the port for local intranet access, so I suggest you remove the port occupation first.

use root The user logs in to ssh and uses the following command:

 sed -i -e 's/80/8080/' -e 's/443/8444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache

This command means that /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache All within the file eighty replace with eight thousand and eighty four hundred and forty-three replace with eight thousand four hundred and forty-three

Restart Nginx to make the changes take effect:

 synosystemctl restart nginx

If it is a DSM 6 system, restart it with the following command:

 synoservicecfg --restart nginx

You can change any port number in "Control Panel - Network - DSM Settings", save it and change it back, and the WEB service will be restarted automatically. Or you can restart NAS directly, but it takes a long time.

Restarting the system in actual use will not cause the configuration to be overwritten, but just in case, you can add a " Triggered Tasks ", user account selection root , select "Startup" for the event, and then fill in the following running commands in the "Task Settings":

 sed -i -e 's/80/8080/' -e 's/443/8444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache synosystemctl restart nginx

Then save it.

Turn off anti proxy service

If you are already using the built-in anti proxy service, please shut it down. That is, delete all the configurations in Control Panel Login Portal Reverse Proxy Server.

If you are a genuine Qunhui user, please close QuickConnect, otherwise you cannot use the Nginx installed by yourself to take over the system services, such as SYNOLOGY Photo and SYNOLOGY Drive.

Install Nginx and acme.sh

You need to connect to GitHub during installation. Please solve the connection problem by yourself, such as using an image service (such as mirror. ghproxy. com).

Use Docker to install Nginx and acme.sh.

Here we use the dnmp I prepared for the containerization of water blogs: https://github.com/mikusaa/dnmp Nginx uses QUIC HTTP/3 Google's brotli compression The unofficial version of Official Documents Acme.sh is the official version.

Non root user installation container is recommended

First, log in to SSH and enter the docker folder:

 cd /volume1/docker

Since installing Docker in Groupware requires creating folders first, let's clone the repository directly instead of creating folders manually:

 git clone  https://github.com/mikusaa/dnmp.git
If the Git suite is not installed, please refer to《 Optimize the shell experience of Qunhui NAS 》Install the relevant steps in!

Because the specified dnmp So we need to create a docker network first. Of course, you can also change it to any network name you want, but don't forget to change the compose network configuration at the same time.

Then, create a new network called nas!

 docker network create -d bridge nas

Re enter the directory:

 cd dnmp

Copy a configuration file:

 cp docker-compose.yml.example docker-compose.yml

Note the parts other than Nginx and acme.sh by yourself, because you should not use MySQL and PHP in NAS unless you want to build a site in NAS. Or, directly copy the following content to replace the docker-compose.yml file above:

 services: acme.sh: image: neilpang/acme.sh:latest container_name: acme.sh command: daemon environment: - DEPLOY_DOCKER_CONTAINER_LABEL=sh.acme.autoload.domain=dnmp # - DEPLOY_DOCKER_CONTAINER_KEY_FILE="" # - DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE="" - DEPLOY_DOCKER_CONTAINER_RELOAD_CMD=nginx -s reload - TZ=Asia/Shanghai volumes: - ./ acme.sh:/acme.sh - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped networks: - nas nginx: image: macbre/nginx-http3 container_name: nginx user: root:root ports: - 80:80 - 443:443/tcp #- 443: 443/udp # If you need to use quic, uncomment the port volumes: - ./ nginx/conf.d:/etc/nginx/conf.d:ro - ./ nginx/nginx.conf:/etc/nginx/nginx.conf:rw - ./ nginx/ssl:/etc/nginx/ssl:rw - ./ nginx/rewrite:/etc/nginx/rewrite:ro - ./ nginx/logs:/home/wwwlogs:rw - ./ nginx/cache:/home/wwwcache:rw - ./ www:/home/wwwroot:rw environment: - TZ=Asia/Shanghai labels: - sh.acme.autoload.domain=dnmp restart: unless-stopped networks: - nas networks: nas: external: true

Start to:

 docker compose up -d

If there is no Compose or the latest version causes an error, use the following command to quickly install or update:

 DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins COMPOSE_VERSION=$(curl -s  https://api.github.com/repos/docker/compose/releases/latest  | grep 'tag_name' | cut -d\" -f4) sh -c "curl -L  https://github.com/docker/compose/releases/download/ ${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > $DOCKER_CONFIG/cli-plugins/docker-compose" chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

Check version:

 docker compose version

output Docker Compose version v2.25.0 OK.

Please refer to《 It turns out that Qunhui can also use Docker Compose! 》Or search for documents yourself.

grant a certificate

Subsequent operations are executed in the container internal terminal of acme.sh by default. Otherwise, please add docker exec acme.sh Or use alias after installing ohmyzsh. For details, refer to《 Optimize the shell experience of Qunhui NAS 》。

Request SSL Certificate

acme.sh Is a script used to sign certificates. about ACME protocol You can find information by yourself. Here is a direct introduction to the use of acme.sh.

After starting the container, enter the terminal inside the acme.sh container sh

 docker exec -it acme.sh sh

This is a command for the internal terminal of the foreground container. You can directly type the command here.

For initial application, you need to first create a ZeroSSL account:

 acme.sh --register-account -m i@example.com

If the network fails to connect Ze ­ In the case of roSSL (specifically, it is stuck on the API connection when creating an account or issuing a certificate), the container can be configured with an agent HTTP_PROXY stay environment Add two lines to the environment variable:

 environment: - TZ=Asia/Shanghai -HTTP_PROXY=http://Proxy's IP: port -HTTPS_PROXY=http://Proxy's IP: Port

Assuming Tencent's DNSPOD is used DNSPOD Console After creating the key, import:

 export DP_Id="1234" export DP_Key="sADDsdasdgdsf"

If CloudFlare DNS is used, Create Token After, import CF_Token

 export CF_Token="Y_jpxxxxxxxxxx_qxxxxxxxxxxxxxxxxxxxxxxxxx"

If it is Alibaba Cloud, go to Console After obtaining the RAM API key AccessKey ID and AccessKey Secret Import:

 export Ali_Key="xxxxxxxx" export Ali_Secret="xxxxxxxxx"

Please refer to the DNS of other service providers Official Documents , I will not repeat it here.

After the preparatory work is completed, the formal application for certificate will be started. Prepare a domain name for NAS use in advance, whether the root domain or sub domain. For example, here I use example.com Apply for certificate and sub domain name at the same time *.example.com Universal domain name certificate for:

 acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Copy SSL Certificate

reference resources Official Documents To copy the certificate to Nginx's ssl Directory.

 export DEPLOY_DOCKER_CONTAINER_KEY_FILE="/etc/nginx/ssl/example.com/example.com.key" export DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE="/etc/nginx/ssl/example.com/fullchain.cer" acme.sh --deploy -d example.com --deploy-hook docker

stay nginx/ssl If you see the certificate file in the directory, it means that the certificate has been successfully copied to nginx.

Configure Nginx

Open the nginx folder. Currently, there are the following files in the folder:

 nginx ├── cache ├── conf.d │   └── default.conf ├── example │   └── enable-ssl.conf ├── logs ├── nginx.conf ├── rewrite ├── ssl │   ├── quic.conf │   └── ssl.conf └── temp

rewrite cache Folders should not be available, we only use ssl and conf.d These two folders.

Force HTTPS

First, modify nginx/conf.d/default.conf Files, canceling four hundred and forty-three Service, and set the example.com Change to the domain name used when issuing the certificate above, for example:

 server { listen 80 reuseport default_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 ssl reuseport default_server; server_name _; include ssl/ssl.conf; ssl_certificate_key ssl/example.com/example.com.key; ssl_certificate ssl/example.com/fullchain.cer; ssl_reject_handshake on; }

This configuration means (GPT says):

This is a Nginx server configuration. It contains two server Blocks, each of which defines a virtual host. The functions of these two blocks are as follows:

  1. first server The block listens to port 80 (HTTP) and redirects all requests to HTTPS (port 443). reuseport The parameter allows multiple sockets (that is, multiple Nginx worker processes) to listen on the same IP address and port, which can improve performance. default_server The parameter indicates that this server block will process requests that do not match in any other server block. server_name _; Indicates matching any server name not defined in other server blocks. return 301 https://$host$request_uri; Indicates sending a 301 redirect to the client. The redirect address is the current host and request URI of the HTTPS protocol.
  2. the second server The block listens on port 443 (HTTPS). The configuration of this block is similar to the first one, but it includes SSL configuration. ssl_certificate_key and ssl_certificate Point to the private key and full chain certificate of your SSL certificate. ssl_reject_handshake on; Indicates that if the SSL handshake fails, the connection is rejected.

In general, the purpose of this configuration is to force all HTTP connections to upgrade to HTTPS to ensure communication security.

Overload nginx to see if it works:

 docker exec nginx nginx -s reload

If it takes effect, it used to use IP directly, such as http://192.168.31.2/ Can automatically redirect to https://192.168.31.2:5000 , should not work now, and reported an error:

 Cannot access this website at https://192.168.31.2/ 's page may be temporarily unreachable, or it may have been permanently moved to a new URL. ERR_SSL_UNRECOGNIZED_NAME_ALERT

It indicates that the configuration is effective and nginx is running normally. Continue the SSL configuration in the next step.

SSL Configuration

get into ssl catalog:

 cd /volume1/docker/dnmp/nginx/ssl

Here I have pre created a ssl.conf The configuration file contains the basic general SSL configuration, including enabling http2 , but you still need to manually create two files, one is dhparam.pem , one is ticket.key

Use openssl to create these two files:

 openssl dhparam -out dhparam.pem 2048 openssl rand 80 > ticket.key

In this way, you can directly use the ssl Under directory ssl.conf and quic.conf Configure HTTPS and QUIC.

Reverse proxy service

Finally, you can add services, such as replacing an emby.

First, on nginx/conf.d Create a new one in the folder emby.conf File, fill in the following contents:

 server { listen 443 ssl; # Listen to port 443 and use ssl server_name emby.example.com; # Modify the domain name here #Introduce ssl configuration include ssl/ssl.conf;  ssl_certificate_key ssl/example.com/example.com.key; # And the domain name here ssl_certificate ssl/example.com/fullchain.cer; # And the domain name here #Reverse processing location / { proxy_pass  http://192.168.31.2:8096 ; # Change this to your emby address proxy_set_header X-Forwarded-For $remote_addr; # None of the following can be moved proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } access_log /home/wwwlogs/emby.log combined buffer=512k flush=1m;# log file }

If you have added emby to the nas network, here is a detailed configuration:

 services: emby: image: amilys/embyserver:beta container_name: emby #Network_mode: host # If the original mode is host, remember to comment it out and change it to use the NAS network #Ports: # If you want to retain port access, cancel the comment of this section and the following ports #   - 8096:8096  environment: - PUID=1026 - PGID=100 - TZ=Asia/Shanghai devices: - /dev/dri:/dev/dri volumes: - ./ emby:/config Networks: # Add - nas Networks: # Add nas:  external: true

Then, the configuration of the reverse generation part above can be modified as follows:

 location / { proxy_pass  http://emby:8096 ; # Change this to your emby address

In other words, if nginx and emby are in the same network, you can use Containers: ports Form instead of knowing the specific IP address!

The specific reasons can be seen in the following explanation (GPT):

In Docker, when you create a network (default or custom) and your containers are connected to the network, these containers can communicate with each other through their container names (or aliases) without knowing their IP addresses. This is because Docker has a built-in DNS server. When you try to access another container from one container, Docker's DNS server will automatically resolve the container name to its corresponding IP address.

In your example, http://emby:8096 In emby It should be the name (or alias) of your Emby container. When Nginx attempts to proxy a request to this address, the Docker's DNS server will emby Resolve to the IP address of the Embey container, and then Nginx can proxy requests to port 8096 of this IP address.

That's why you can proxy_pass Used in instructions http://emby:8096 ; , even if your Nginx and Embey are deployed using Docker. As long as they are connected to the same Docker network, they can use the container name for communication.

After saving, first test the configuration for errors:

 docker exec nginx nginx -t

Output:

 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

It indicates that there is no problem, and then reload nginx:

 docker exec nginx nginx -s reload

If there is no error and the following contents are output:

 2024/03/24 19:38:27 [notice] 1073#1073: signal process started

Try to access this address. If you can open it, it means that you have successfully replaced emby with Nginx installed by yourself!! Are you very happy? 😆

Later, as long as you draw other tigers according to this cat, you can easily reverse the projects and services in nas!!

Even, you can reverse the router in the same network with nas!
Suppose you use a Xiaomi router, and the router address is http://192.168.31.1 , then it can be reversed as follows:

 server { listen 443 ssl; server_name router.example.com; include ssl/ssl.conf; ssl_certificate_key ssl/example.com/example.com.key; ssl_certificate ssl/example.com/fullchain.cer; location / { proxy_pass  http://192.168.31.1:8080 ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } access_log /home/wwwlogs/router.log combined buffer=512k flush=1m; }

Add other ports

But now it can only be accessed from the intranet. If you are lazy like me and want to directly forward the NAS port through the router, then use the public network to access the NAS service, for example, use eight thousand four hundred and forty-three Port. So, just server Add a listening port in the segment:

 server { listen 443 ssl; listen 8443 ssl; # New 8443 port server_name emby.example.com; # Modify the domain name here #Do not change later, omit

Then, add a section of port mapping in the compose configuration:

 nginx: image: macbre/nginx-http3 container_name: nginx user: root:root ports: - 80:80 -8443:8443/tcp # Add #- 8443:8443/ucp # If you need to use quic, uncomment the port - 443:443/tcp #- 443: 443/udp # If you need to use quic, uncomment the port

use docker compose up -d The mapping takes effect when the container is restarted.

You will find that you can use https://emby.example.com:8443 Visit your emby!!

summary

Now, you should know how to kill the built-in Nginx of DSM? Hurry up!!

reference resources

]]>
eight https://www.himiku.com/archives/use-your-own-nginx-in-synology-nas.html#comments https://www.himiku.com/feed/
The Guide to Collapse: The Celestial Railway https://www.himiku.com/archives/honkai-star-rail-memes.html https://www.himiku.com/archives/honkai-star-rail-memes.html Sat, 23 Mar 2024 00:49:00 +0800 mikusa The Collapse: The Celestial Dome Railway can't be without a stem for a day, just as Zi once said, "The star iron is also a stem.".

comic

Take it easy, Icarus

Icarus is Water Without Moon Song Created cartoons《 Heavenly things 》The heroine in, Can fly

This is the following one (from そらおとししモカ # Pixiv ):

"Take it easy, Icarus" may be a line in the play, but I've only seen two episodes, and I don't know which one comes from.

Nailuo's treasure

"Nailuo's Treasure" is a cartoon created by local people《 From The Abyss 》。 There is an unfathomable "abyss" in the work Abis A series of artifacts discovered from Abyss are called "relics". Relics are divided into five levels according to their functions and values, and " Nailuo's treasure ( Aubade ) "It is a legendary" relic "beyond this level.

This achievement can be viewed in "Streaming Traces".

Dangerous things in my heart

The Dangerous Things in My Heart was created by Keixiong Sakurai in Japan cartoon , the second season of the animation of the same name is being broadcast.

This achievement can be viewed in "Orbit to Stars".

novel

Clara and the Sun

Clara and the Sun is a novel created by Akio Kuroshi, which tells the story of the artificial intelligence robot " Clara ". In her concept, "the sun" is a kind of omnipotent existence close to gods.

Dance! Dance! Dance!

Dance! Dance! Dance! A novel by Haruki Murakami, a Japanese writer.

I've seen it, but I forgot all about it.

Song of Ice and Fire

Song of Ice and Fire is an epic fantasy series written by American writer George R. R. Martin.

The cold winter is going to die

Maybe the title of the first season of Neta's TV series Game of Thrones, adapted from George R. R. Martin's Song of Ice and Fire, is " Winter is coming ( winter is coming ) 」。

Childhood on Earth My University

Childhood, On Earth and My University are three autobiographical novels of Maxim Gorky.

This achievement can be viewed in "I, Pioneer".

Can bionic snails dream of electronic trees

Neta, a science fiction novel "Do Android Dream of Electric Sheep?" written by Philip K. Dick, is literally translated as "Can a bionic man dream of an electronic sheep?". The novel is adapted from the film Blade Runner.

game

The world in the picture

Get 10 rewards through dream puzzles

From independent games《 The world in the picture ( Gorogoa ) 》, Steam Available for sale. In the game, players must manipulate the four pictures placed in the 2 × 2 square, explore the environment in each picture, and solve the puzzle by stacking pictures or adjusting the order of pictures. In the puzzle, the player must guide the hero boy to deal with a strange monster in his war-torn home and rebuild the world. At the end of the game, the little boy gradually grows up and eventually becomes an old man, recalling his past.

Trauma Team Platinum Package

The amount of treatment provided by our role in a single time exceeds 8000 points

The "Trauma Team" is a medical enterprise in the game Cyberpunk 2077 developed by CDPR. The "Platinum Package" is the top service package provided by the "Trauma Team". The first task that players received at the beginning of the game was to rescue a woman who was a platinum member of the trauma team.

Don't you have a platinum trophy in this game?

When passing "Simulated Universe" (difficulty 2 and above), the current HP of all our characters in each battle victory is equal to their respective maximum HP

"Platinum trophy" refers to the trophy obtained by players on the PlayStation platform after completing all other trophies (or achievements), which usually requires players to achieve certain achievements in the game, such as completing all levels, or achieving a specific score.

Where's my fairy ball?

Fairy ball is a prop in Nintendo's cross media series "Baoke Dream", which can be used to capture Baoke Dream.

This achievement can be viewed in "The Universe in the Shell".

Master Ball

Master Ball is a kind of fairy ball in Baokemeng, which can capture any Baokemeng that is not Boss 100%.

This achievement can be viewed in "The Universe in the Shell".

film

# 1 player

The Number One Player is an American sci-fi adventure film released in 2018, directed by Steven Spielberg, adapted from the novel of the same name by American Klein in 2011.

This achievement can be viewed in "The Universe in the Shell".

Great business tycoon

"The Great Business Tycoon", from "The Great Gatsby", is a novella written by the American writer Francis Scott Fitzgerald with the background of New York City and Long Island in the 1920s. It is regarded as the symbol of the "Jazz Age" in American literature.

This achievement can be viewed in "The Universe in the Shell".

Invincible Destroyer

The Invincible Destroyer is an American 3D computer animated comedy produced by Walt Disney Animation Studio.

This achievement can be viewed in "The Universe in the Shell".

City of Philharmonic

The City of Philharmonic is an American musical and romantic comedy released in 2016, directed and scripted by Damien Chazeley.

This achievement can be viewed in "memories of walking with you".

Let the shells fly

Neta is from the movie "let bullets fly" directed by jiang wen.

network

Unsettled, quantum mechanics

In network language, it means to muddle through. Everything that cannot be explained can be covered by "quantum mechanics".

music

Make fireworks

The songs released by DAOKO and Mijin Xuanshi in 2017 are the theme song and episode of the animated film Fireworks directed by Shinfang Zhaozhi.

other

Invisible hand

Invisible hand ( invisible hand ) "" is a phrase that appears in Chapter 2 of Chapter 4 of the Wealth of Nations and Chapter 1 of Chapter 4 of the Theory of Moral Sentiments written by Adam Smith, the father of economics, and is now widely used to emphasize the role of the market in the economy.

reference resources

]]>
three https://www.himiku.com/archives/honkai-star-rail-memes.html#comments https://www.himiku.com/feed/
My Animation Media Library organizes poses https://www.himiku.com/archives/how-i-organize-my-animation-library.html https://www.himiku.com/archives/how-i-organize-my-animation-library.html Fri, 22 Mar 2024 23:13:00 +0800 mikusa Although, like Nastool A class of NAS media file sorting tools can easily automatically identify, hard link, and rename most live action movies and TV plays, greatly reducing the workload, but it is actually unable to handle animation. In the animation I collected Blu ray disc Transcription( BDRip )In addition to feature films, resources also include various interviews, sidelights, trailers, music and other additional content. These additional contents are not only named strangely, but also some special articles are scattered in different folders, and nastool can not make accurate identification. On the other hand, I prefer to use additional noun annotations made by animation enthusiasts, or subtitles with various dynamic effects, which means that even if I can use tools to complete the sorting and renaming of videos, the processing of subtitles is still on my own.

Because of the above reasons, I finally adopted all Manual sorting To collect the BDRip of completed animation to ensure quality. (There is no additional content in the serial opera, use Autobangumi Full automation can be easily realized.)

preparation in advance

At present, I have completed the basic sorting process of BDRip animation warehousing as follows:

download video file ➡️ Hard link Documents required ➡️ classification Additional files ➡️ lookup subtitle ➡️ TMDB Search Official Name ➡️ rename Video and subtitles ➡️ Move to the destination folder.

If you just download it and don't save it, you can save the hard link step.

In Yizhong BDRip suppression group, VCB-Studio His works are the most representative. The BDRip produced by them not only has excellent video quality, but also collects all kinds of music related to animation, peripheral scanning and other additional content. The file classification is extremely clear, and the naming is also very standard. As long as the VCB Studio file layout can be completed, and then other suppression groups and even other types of works (live action movies) can be processed, it will be a piece of cake.

So before we start, we need to understand the file layout specification of VCB Studio. According to the currently published Resource arrangement specification As well as the resources actually downloaded, most of the time they will include the following files:

 [VCB Studio] # Positive Film Directory ☆ ☆ - CD # Album Catalog │Γ - SPs # special directory, video files and pictures (packages), etc │← -- Scans # scanning directory │ -- [VCB Studio] xxx. zip # font package │ -- [VCB Studio] xxx.sc.ass # subtitles │ -- [VCB Studio] xxx. mka # External audio track L -- [VCB Studio] xxx. mkv # positive

Including:

  • Fan Opera Home folder The video file under is positive , but it may also include OAD or OVA. TMDB is generally located in the outer part of Season 0;

    • The subtitle file and font package shall be determined by whether there are cooperative subtitle groups;
    • Currently measured external audio track Only Jellyfin supports , can be retained;
  • SPs The folder may contain additional content such as preview interviews, or it may store some content that is not broadcast on TV Special video , in the form of SP01.mkv, also in the list of external articles in the TMDB;
  • Scans The pictures in the scanning folder cannot be displayed together with the video in all media programs;
  • CDs Modifying the original data of the music folder will change the source file, which is not suitable for hard links. If you need to collect animation music, you need to copy them separately.

Therefore, some of the works produced by VCB Studio that can finally be put into the media library include:

  • Home folder and SPs Under folder video subtitle
  • CDs In folder music

If we understand this, the follow-up work will be simple.

File download

On resource publishing stations that you can open, such as BANGUMI MOE / SHARE. DMHY. ORG / ACG. RIP / ACGNX. SE / SHARE. ACGNX. SE, download the animation suppressed by VCB Studio.

Hard link

If you do not plan to save the type, you can directly change the source file to skip this step.

Use Docker Compose to install the hard link tool Hlink:

 hlink: image: likun7981/hlink:latest container_name: hlink ports: -9090:9090 # The left 9090 can be modified arbitrarily volumes: -/volume1/media:/media # Storage space mapping - ./ Hlink:/config # The place to store the hlink configuration file should be consistent with the following environment: - PUID=1026 - PGID=100 -HLINK_HOME=/config # hlink Profile Path restart: unless-stopped

Creating hard link rules, extracting Home folder and SPs Videos and captions under folder:

When processing music files, modifying the original data will change the source file, so you should not hard link, but directly copy a copy.
 export default { /** *Modify the hard link path by yourself. The left side is the original file path, and the right side is the hard link path */ pathsMapping: { '/media/Download': '/media/hlink' }, include: [ 'mp4', 'mkv', 'mka', 'ass' ], exclude: { globs: [ '**/CDs/**', '**/Scans/**' ], }, keepDirStruct: true, openCache: true, mkdirIfSingle: true, deleteDir: false, }

Since the hard link and the original file need to be in the same partition, here is the /media/Download Files within are hard linked to /media/hlink Folder. The subsequent sorting and renaming of files are /media/hlink Folder.

Document classification

I don't need to say much about the processing of the feature film. Please note that /SPs Special files under the folder. There are generally the following types of files in this folder. VCB Studio will name the files in strict accordance with this standard, so it is easy to organize them:

Special category TYPE
Preview (Prev) The content of the next session. Note that the number indicates the content of the next session rather than the next session Preview Web Preview
Menu BD/DVD Play Selection Menu Menu01_1 Menu01_2 Menu01_3 Menu02
Advertising Commercial Message (CM) TV broadcast advertising, the duration is generally 7s/15s/30s/45s/ about CM SPOT
Promotional Video (PV)/Trailer is usually 1~2min long, naming reference disk and jsum PV Trailer Teaser
Wordless OP/ED Non Credit Opening/Ending NCOP NCED
Music Video MV
Program/Interview/Talk/Stage For such three-dimensional video content, it can also be connected to IV IV or according to the actual content
All the remaining quadratic types of the special special (SP) can be named SP, and the special special (SP) can also be custom named SP or custom

We have used the hard link tool to filter out useless images, and only need to deal with the remaining videos and subtitles.

Each program has slightly different requirements for additional files. Here are separate examples.

Plex

According to Plex document Local Files for TV Show Trailers and Extras Classification requirements of one Plex currently supports the following classifications:

  • Behind The Scenes : Behind the Scenes
  • Deleted Scenes : scene deleted
  • Featurettes : Special report
  • Interviews : Interview
  • Scenes : Scene
  • Shorts : Short Story
  • Trailers : Preview
  • Other : Others

According to my personal understanding, the Plex classifications commonly used in the special classification under the VCB Studio specification include:

Plex classification Special classification name
Interviews IV
Trailers Preview、Web Preview、CM、SPOT、PV、Trailer、Teaser
Other Menu, NCOP, NCED and other meaningless documents

That is, if /SPs The video file name under the folder contains IV , then move to Interviews Folder, if it is Preview , move to Trailers Folder, and so on.

 Shows └── Series Name (2010) ├── Season 01 │   ├── Series Name S01E01.mkv │   ├── Series Name S01E02.mkv ├── Season 02 │   ├── Series Name S02E01.mkv │   ├── Series Name S02E02.mkv ├── Interviews │   └── Interview.mkv ├── Trailers │   └── Trailer.mp4 └── Other └── NCOP.mkv

Additional classified folders of Plex need to be matched with quarterly folders Peer

The effects are as follows, which are displayed in categories of "Gags", and the categories of trailers and others are indicated:

TV Animation

Theater Animation:

At the same time, the trailer button will use the videos in the Trailers folder:

Jellyfin

According to Jellyfin documentation Show Extras Classification requirements in two Jellyfin currently supports the following classifications:

  • behind the scenes : Behind the Scenes
  • deleted scenes : scene deleted
  • interviews : Interview
  • scenes : Scene
  • samples : Sample
  • shorts : Short Story
  • featurettes : Featurette
  • clips : Clip
  • other : Others
  • trailers : Preview
  • extras : Universal classification covering all the above classifications

Jellyfin supports the same classification as Plex, but it additionally supports clips Editing featurettes Special categories such as special series. It also supports the use of additional classifications in quarterly folders, This is not supported by Plex

 Shows └── Series Name (2010) ├── Season 01 │   ├── Series Name S01E01.mkv │   ├── Series Name S01E02.mkv │   ├── featurettes │   │   └── Some Featurette.mkv │   └── interviews │       └── Interview with the Director.mp4 ├── Season 02 │   ├── Series Name S02E01.mkv │   ├── Series Name S02E02.mkv │   └── behind the scenes │       └── Behind the Scenes.mp4 └── extras └── Fantastic Extra.mkv

TV animation (the trailer is in the button, if any Trailers Folder, click it to read the video directly, otherwise it is a preview in YouTube (mostly in English):

Theater Animation:

Emby

At present, no support documents for additional classification have been searched by Emby, but actually, they will be read Trailers The files in the folder are displayed as trailers.

The files outside the trailer can be determined to be I won't support it Of.

Subtitle download

You can use this website Download to a large number of subtitles shared by animation enthusiasts.

TMDB Search

for example space dandy , search on TMDB: https://www.themoviedb.org/search?query= space dandy

Get the following link: https://www.themoviedb.org/tv/60874-space-dandy

Directly copy the [Space Dandy (2014)] on the home page, and leave it for future renaming.

rename

In order to switch media programs as freely as possible, for example, from Jellyfin to Emby, or from Emby to Plex, we need to make the naming and file arrangement of videos be able to use these three programs meanwhile distinguish.

TV Animation

TV Animation selects the category of TV programs when creating a media library. Generally, it is arranged as follows:

 TV Animation ▄ - Four fold Half Myth Series (2010) │   ├── Season 00 ││ │ - Sidi Half Mythology Series (2010) S00E01.mkv ││ │ - Sidi Half Mythology Series (2010) S00E02.mkv │   └── Season 01 │Γ - Sidi Half Mythology Series (2010) S01E01-E02.mkv │Γ - Sidi Half Mythology Series (2010) S01E03.mkv ││ - Sidi Half Mythology Series (2010) S01E04.mkv ├── ……

That is, after creating the main folder, create the quarterly folder Season 00 Season 01 , the file is renamed to S00E01 S00E02 S by Season Abbreviation of quarter, E by Episode Abbreviation of the play. When naming video files, use Opera name (year) SXXEXX The format of is preferred, and other names can be used Simplified Chinese , do not deliberately change to Japanese Katakana or English translation.

If there are additional announcements, tidbits, etc., create folders at the same level of the quarter:

 TV Animation ▄ - Space Dandi (2014) │   ├── Season 00 ││ │ Space Dandi (2014) S00E01.mkv ││ L -- Space Dandi (2014) S00E02.mkv │   ├── Season 01 ││ │ Space Dandi (2014) S01E01.mkv ││ L -- Space Dandi (2014) S01E02.mkv │   ├── Season 02 ││ │ Space Dandi (2014) S02E01.mkv ││ │ -- Space Dandi (2014) S02E02.mkv ││ │ Space Dandi (2014) S02E03.mkv ││ L -- Space Dandi (2014) S02E04.mkv │   └── Trailers │Γ - Space Dandi (2014) PV.mkv │ L -- Space Dandy (2014) CM.mkv L -- April is your lie (2014) ├── Season 01 |☆ April is your lie (2014) S01E01.mkv |L -- April is your lie (2014) S01E02.mkv ├── Season 02 |☆ April is your lie (2014) S02E01.mkv |☆ April is your lie (2014) S02E01.mkv |L -- April is your lie (2014) S02E03.mkv └── Other ☆ April is your lie (2014) NCOP.mkv L -- April is your lie (2014) NCED.mkv
Because Plex does not support folder identification within quarterly folders, it is placed at the same level as quarterly folders.

If there are videos with different resolutions, add definition (using - Space) to distinguish:

 TV Animation ▄ - Space Dandi (2014) │   ├── Season 00 ││ │ -- Space Dandi (2014) S00E01 - 720P.mkv ││ L -- Space Dandy (2014) S00E01 - 1080P.mkv │   ├── Season 01 ││ │ Space Dandi (2014) S01E01.mkv ││ L -- Space Dandi (2014) S01E02.mkv

But for animation collection, I think you will choose the best quality version more often, right?

Theater Animation

When creating a media library for theater animation, you should select the "movie" category. Generally, it is arranged as follows:

 Theater Animation ▄ - Yan Ye Zhi Ting (2013) │ L -- The Court of Words and Leaves (2013). mp4 L -- Gullit Universe (2023) L -- Gullit Universe (2023). mp4

Or the version with other clarity, as long as the subject name is accurate, the rest of the program will automatically recognize or ignore:

 Theater Animation ☆ Your name. (2016) │Γ - your name. (2016) - 4K.mkv │ L -- your name. (2016).mkv L -- Aliette, the villain who borrows things (2010) L -- Lilietti, the villain who borrows things (2010) - 720p. mp4

If there are trailers, create folders of corresponding categories (because TMDB does not have a corresponding database, it will not be indexed, so it can be dropped directly without renaming):

 Blue superstar (2023) ├── Other │   ├── BLUE GIANT [Completion Preview Screening][Ma10p_1080p][x265_aac].mkv │   ├── BLUE GIANT [First Day Stage Greetings][Ma10p_1080p][x265_aac].mkv │   └── BLUE GIANT [Teaser02][Ma10p_1080p][x265_flac].mkv ├── Trailers │   ├── BLUE GIANT [TVCM01][Ma10p_1080p][x265_flac].mkv │   └── BLUE GIANT [Trailer][Ma10p_1080p][x265_flac].mkv ☆ -- Blue Giant Star (2023). mka ☆ -- Blue Giant Star (2023). mkv ☆ -- Blue Giant Star (2023). zh-tw.ass L -- Blue giant star (2023). zh.ass

subtitle

reference resources Plex file hierarchy example Article and experience in actual use. When renaming subtitles, the main part should be consistent with the video, and then add the suffix .zh-CN or .zh Simplified Chinese, .zh-TW Traditional Chinese to distinguish subtitle languages.

For example:

 This brave man is obviously super strong but overly cautious (2019) S01E11.zh.ass This brave man is obviously super strong but overly cautious (2019) S01E12. zh CN. ass This brave man is obviously super strong but overly cautious (2019) S01E12.zh-TW.ass

The following is a list of Chinese variants. You can refer to the list appropriately and add suffixes accurately according to the actual region of the subtitles used.

Variant Name Chinese name ISO
Simplified simplified Chinese character .zh-Hans
Traditional Traditional .zh-Hant
Simplified and using Mainland Chinese terms Continental Simplified .zh-CN
Traditional and using Taiwanese terms Taiwan Orthodox .zh-TW
Simplified and using Singaporean (and until mid 2018, Malaysian) terms Singapore Simplified (Maxi Simplified) .zh-SG
Simplified and using Malaysian terms (added in mid 2018) Simplified Chinese for Malaysia .zh-MY
Traditional and using Hong Kong (and until mid 2013, Macau) terms Hong Kong Traditional (Hong Kong and Macao Traditional) .zh-HK
Traditional and using Macau terms (added in mid 2013) Macao Traditional .zh-MO

But I don't recommend using .zh-Hans and .zh-Hant , because Jellyfin does not recognize it, it will not automatically match the subtitle:

.zh-CN Neither, but it can be used .zh-CN.forced Force enable.

zh It can be recognized normally and displayed as Chi , i.e. Chinese:

Both Emby and Plex support recognition zh-Hans and zh-Hant

 Emby
Emby

 Plex
Plex

And the subtitles named as follows

 Heaven's Great Devil Kingdom (2023) S01E01.zh.ass Heaven's Great Devil Kingdom (2023) S01E01.zh-tw.ass

Jellyfin will be displayed as Chi , which makes it impossible to distinguish:

Emby and Plex can be displayed normally.

 Emby
Emby

 Plex
Plex

If HK is added

 Heaven's Great Devil Kingdom (2023) S01E01.zh.ass Heaven's Great Devil Kingdom (2023) S01E01.zh-tw.ass Heaven's Great Devil Kingdom (2023) S01E01. zh-hk. ass

Emby and Plex can display normally

 Emby
Emby

 Plex
Plex

In conclusion conclusion

  • For Plex and Emby users, it is recommended to use .zh-CN , used in complex .zh-TW
  • If you are a Jellyfin user, it is recommended to use .zh , used in complex .zh-Hant Or others that cannot be identified as Chi The language of
  • If you need to force the use of subtitles in a certain format, add .forced , i.e Heaven's Great Devil Kingdom (2023) S01E01.zh-CN.forced.ass

You might ask why not .zh-HK It's .zh-TW Because traditional subtitles are mostly made by Taiwanese, you want to use .zh-HK It means traditional Chinese characters can also be used

At this point, the video processing is over.

music

After processing video files, there are still CDs album folders that have not been processed.

The music resources released by VCB Studio are all audio files in flac format with album numbers. Therefore, you can directly find the corresponding album in Musictrainz, and then use Musictrainz Picard to write id3tag data.

 [171129] 「More One Night」/チト&ユーリ (flac+webp) ├── Cover.jpg ├── Scans ├── ZMCZ-11750.cue ├── ZMCZ-11750.flac └── ZMCZ-11750.log

There are two main situations:

  1. Cut or native Hires music in flac format;
  2. Uncut with music data .cue Music for files

For the first case, directly copy or move to the target folder, and use Musictrainz Picard for processing.

In the second case, use FB2K to read .cue , converting to flac Used after formatting. Specific reference《 MusicBrainz Incomplete Use Guide 》One wen. If I don't use FB2K (fooba2000), I can find a chance to water again.

So far, all the files that can be used in a VCB Studio work have been processed.

other

Selection of suppression group

VCB Studio is the first, followed by Miaomiao Milk Tea House and LoliHouse. The personnel composition of these two companies and VCB Studio cannot be said to be completely the same, but there are also many similarities.

The second is Mawen1250. Although I don't know this circle, I often mention Sister Wen in VCB Studio.

Then I choose whatever I want, but I don't recommend Moozzi2, and sharpen it into a lump.

More suppression groups can visit more Subtitle forum Look at your preferences.

About the Data Mark of Fanju Opera

After collecting animations, how to determine whether the collection is complete? You can try Panzhihua Group Plan Mark the data.

For example, after downloading《 [The child I pushed] 》After sorting out the videos and music in the library, you can check whether the collection is complete in the corresponding items.

Mark the downloaded ones. If they don't have them, they can also check and fill in the gaps.

last

The above is my process of sorting out VCB Studio pressed works and related precautions, which are recorded here for reference by friends in need, and also for my own convenience in finding and correcting mistakes.

Close! Go to see Fu Lilian~

reference resources


  1. Movies also follow this classification: Local Files for Movie Trailers and Extras
  2. The standards that Jellyfin films follow are similar to those of television: Movie Extras
]]>
eleven https://www.himiku.com/archives/how-i-organize-my-animation-library.html#comments https://www.himiku.com/feed/
Optimize the shell experience of Qunhui NAS https://www.himiku.com/archives/optimizing-synology-nas-shell.html https://www.himiku.com/archives/optimizing-synology-nas-shell.html Wed, 21 Feb 2024 08:00:00 +0800 mikusa Although the DiskStation Manager (DSM) of Qunhui NAS is easy to operate, various tools can also be installed directly in the kit center. But if you already have some Linux systems, after you get used to using DSM, or understand what NAS is, you will find that for many operations, it is better to click commands directly in the shell (command line interface).

Take the most frequently used shell operation on NAS: install the Docker container. What is worth buying In most articles on, besides teaching you to install containers with Docker panel, some tutorials also teach you to install containers with Docker CLI command line after connecting SSH. Docker CLI installation is certainly possible, but I think this posture is neither elegant nor convenient, so I wrote an article《 It turns out that Qunhui can also use Docker Compose! 》It is used to briefly introduce the use of Compose - of course, Compose also needs to execute the commands to pull images, start and close images in the shell. Later, DSM 7 updated the Docker panel (now called the Container Manager) and supported the Compose function, but it is still docker compose up -d Better. This is more obvious when the NAS performance is weak. The Docker panel will crash due to the large number of containers.

In addition to deploying containers, other Linux commands can be executed in the shell, such as using tree List directory tree, use kill Command to kill the background program and so on. In other words, if you can make full use of the shell of DSM, you can give full play to its functions as Linux, so as to obtain a completely different use experience from the DSM web side.

But also because DSM is a magic Linux, the default shell is hard to use, even a package management tool like Debian or Ubuntu APT None. Installing Zsh or even Git is a problem. However, don't be afraid. The task of this article is to lead you to clear your mind, optimize the DSM shell as much as possible under the existing conditions, so as to avoid some detours as much as possible.

Enable home directory

Before we start, we need to enable user folders. Because it is not safe to use the root user, it is necessary to develop the habit of using individual users with non root permissions to operate shells.

In Control Panel - Users and Groups - Advanced Settings, check Start Home Directory Service. Enabling this option will automatically create a personal "home" folder for each user. All users' personal folders are named "home" and located in the "homes" folder. In this way, in addition to root When installing ohmyzsh, other users will not receive an error that the directory does not exist. Each user can also configure his own Zsh.

Login shell

I will not repeat the major premise of enabling SSH function.

Open the Windows terminal, and first use the command to confirm whether the SSH client is installed:

 ssh -V

If you output the version number, you can continue. Otherwise, you need to install OpenSSH Client and OpenSSH Server in System Optional Functions Add Optional Functions.

Then enter ssh username@ip -p port SSH connected to NAS. Suppose the NAS IP is 192.168.31.2, the SSH port is set to 1234, the user is your current user name, such as mikusa, and the specific commands to connect to SSH are:

 ssh  mikusa@192.168.31.2  -p 1234

This will pop up Are you sure you want to continue connecting (yes/no/[fingerprint])? Prompt for, entering yes Then enter your user password to connect to SSH. Since the password is invisible when entering, the password can be copied, pasted by right clicking in the terminal, and then entered.

Configure Shell

Install Zsh

Z Shell, also known as Zsh, is a very popular command interpreter in Linux systems. The function is much more powerful than the command interpreter provided by Groupware, and supports other functions such as automatic completion. and ohmyzsh It is a management tool of Zsh. You can install themes for Zsh and configure plug-ins developed by other communities. The main purpose of this article is to make Qunhui use Zsh.

Because Qunhui cannot be used sudo apt install zsh To install Zsh, some communities have packaged it into a package. We just need to install the package.

Open the Crowd Light Kit Center, click Settings, select Kit Source, and click Add. The name is optional. In the " position ", fill in the following links:

 https://packages.synocommunity.com

Wait a moment after application, or restart the Kit Center to see the new "Community" menu. Search for zsh and install Z shell (with modules).

Because DSM does not chsh Command, so use another method to switch the shell to zsh.

After logging in to SSH, edit the .profile File:

 vim ~/.profile

If the file exists, add the following content at the bottom; If there is no such file, vim This file will be created automatically, and the following contents will be pasted directly:

 if [[ -x /usr/local/bin/zsh ]];  then export SHELL=/usr/local/bin/zsh exec /usr/local/bin/zsh fi

Some simple vim uses are: input i Start editing, right-click to paste, press ESC Key to exit editing, type :wq Save, type :qa Undo the edit and exit.

It will be used later git Command, so install Git as well!

Install oh my zsh

Due to various network reasons, the success probability of automatically installing ohmyzsh using official scripts is too low, so it is changed to manual installation.

Open the terminal, log in to SSH, and clone the ohmyzsh repository:

 git clone  https://github.com/ohmyzsh/ohmyzsh.git  ~/.oh-my-zsh

If the warehouse cannot be cloned due to network problems, please Using Mirrors , for example https://mirror.ghproxy.com/ When used in https://github.com Add the link before.

Change the original command to:

 git clone  https://mirror.ghproxy.com/https://github.com/ohmyzsh/ohmyzsh.git  ~/.oh-my-zsh

It will not be repeated below.

Create a new zsh configuration file:

 cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

Overload configuration:

 source ~/.zshrc

If the root user is used to operate, the installation of Zsh and ohmyzsh is over. When non root users install to this step, they may be prompted as follows:

 [oh-my-zsh] Insecure completion-dependent directories detected: drwxrwxrwx+ 1 mikusa users 388 Feb 12 18:39 /var/services/homes/mikusa/.oh-my-zsh [oh-my-zsh] For safety, we will not load completions from these directories until [oh-my-zsh] you fix their permissions and ownership and restart zsh. [oh-my-zsh] See the above list for directories with group or other writability. [oh-my-zsh] To fix your permissions you can do so by disabling [oh-my-zsh] the write permission of "group" and "others" and making sure that the [oh-my-zsh] owner of these directories is either root or your current user. [oh-my-zsh] The following command may help: [oh-my-zsh]     compaudit | xargs chmod g-w,o-w [oh-my-zsh] If the above didn't help or you want to skip the verification of [oh-my-zsh] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to [oh-my-zsh] "true" before oh-my-zsh is sourced in your zshrc file.

Follow the prompts and type the following command to repair:

 compaudit | xargs chmod g-w,o-w

Install the Zsh plug-in

Zsh has a bunch of useful plug-ins, but I only use these two at present: zsh-syntax-highlighting and zsh-autosuggestions

zsh-syntax-highlighting As the name implies, it is a plug-in with highlighted code. Use the git command to install:

 git clone  https://github.com/zsh-users/zsh-syntax-highlighting.git  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

zsh-autosuggestions It is a command completion plug-in:

 git clone  https://github.com/zsh-users/zsh-autosuggestions  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Install autojump

Here I also use a function to automatically jump to the history directory autojump , also manual installation:

 git clone  https://github.com/wting/autojump.git

Enter directory:

 cd autojump

Execute the installation script on the premise that Zsh has been used as the shell, otherwise an error will be reported:

 ./install.py

After execution, the installation process will be output:

 $ ./ install.py Installing autojump to /var/services/homes/mikusa/.autojump ... creating directory: /var/services/homes/mikusa/.autojump/bin creating directory: /var/services/homes/mikusa/.autojump/share/man/man1 creating directory: /var/services/homes/mikusa/.autojump/etc/profile.d creating directory: /var/services/homes/mikusa/.autojump/share/autojump copying file: ./ bin/autojump -> /var/services/homes/mikusa/.autojump/bin copying file: ./ bin/autojump_argparse.py -> /var/services/homes/mikusa/.autojump/bin copying file: ./ bin/autojump_data.py -> /var/services/homes/mikusa/.autojump/bin copying file: ./ bin/autojump_match.py -> /var/services/homes/mikusa/.autojump/bin copying file: ./ bin/autojump_utils.py -> /var/services/homes/mikusa/.autojump/bin copying file: ./ bin/icon.png -> /var/services/homes/mikusa/.autojump/share/autojump copying file: ./ docs/autojump.1 -> /var/services/homes/mikusa/.autojump/share/man/man1 creating directory: /var/services/homes/mikusa/.autojump/etc/profile.d creating directory: /var/services/homes/mikusa/.autojump/share/autojump creating directory: /var/services/homes/mikusa/.autojump/functions copying file: ./ bin/autojump.sh -> /var/services/homes/mikusa/.autojump/etc/profile.d copying file: ./ bin/autojump.bash -> /var/services/homes/mikusa/.autojump/share/autojump copying file: ./ bin/autojump.fish -> /var/services/homes/mikusa/.autojump/share/autojump copying file: ./ bin/autojump.zsh -> /var/services/homes/mikusa/.autojump/share/autojump copying file: ./ bin/_j -> /var/services/homes/mikusa/.autojump/functions Please manually add the following line(s) to ~/.zshrc: [[ -s /var/services/homes/mikusa/.autojump/etc/profile.d/autojump.sh ]] && source /var/services/homes/mikusa/.autojump/etc/profile.d/autojump.sh autoload -U compinit && compinit -u Please restart terminal(s) before running autojump.

Prompt that .zshrc Add a command in:

 [[ -s /root/.autojump/etc/profile.d/autojump.sh ]] && source /root/.autojump/etc/profile.d/autojump.sh autoload -U compinit && compinit -u

You don't need to add it. After the subsequent installation of ohmyzsh, you can directly use the plug-in to configure autojump.

After the installation, you can delete the files you just cloned.

 cd .. rm -rf autojump

The disadvantage is that the git clone needs to be uninstalled and returned later.

Configure oh my zsh

Edit the .zshrc File, you can modify the configuration of oh my zsh. I don't have many functions that I can use personally, so I will modify the theme, add some plug-ins, and configure some command maps.

use vim edit .zshrc File:

 vim .zshrc

find ZSH_THEME modify theme , e.g. change to ys

 ZSH_THEME="ys"

Then, find plugins increase plug-in unit In addition to the self installed zsh-syntax-highlighting and zsh-autosuggestions In addition, oh my zsh has many built-in plug-ins, such as docker and docker-compose , can be ~/.oh-my-zsh/plugins These plug-ins can be found in the folder, which contains specific plug-in explanations. In addition, add the previously installed autojump

 plugins=(git zsh-autosuggestions zsh-syntax-highlighting autojump docker docker-compose z extract sudo cp aliases)

Finally, on .zshrc Add some at the bottom of the file Command Mapping , such as acme.sh.

 Alias dcl="docker system prune - a" # Clear the docker cache completely Alias dcu="docker compose up - d -- remove orphans" # Clear orphaned containers while starting containers alias acme.sh="docker exec acme.sh acme.sh" #acme.sh

After saving, execute the command to refresh .zshrc File:

 source .zshrc

demonstration

Simple demonstration of the final effect, using TAB Key to automatically prompt or complete the command.

One click installation and configuration

Of course, these tedious steps are just a few lines of commands. If you have used Zsh as the shell, you can package and install it directly:

 git clone  https://github.com/ohmyzsh/ohmyzsh.git  ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc git clone  https://github.com/wting/autojump.git  && ./ autojump/install.py git clone  https://github.com/zsh-users/zsh-syntax-highlighting.git  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting git clone  https://github.com/zsh-users/zsh-autosuggestions  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions sed -i.bak 's/plugins=(\(.*\))/plugins=(\1 autojump zsh-autosuggestions zsh-syntax-highlighting z extract sudo cp aliases docker docker-compose)/' ~/.zshrc source ~/.zshrc

Optimize Shell

After all this trouble, Qunhui's shell is barely usable. We can also perform some additional operations to facilitate the use of subsequent shells.

Sudo security free

After using a non root user, you need to add sudo Instruction. This requires adding the user to the sudo user group first. The first user created by Qunhui is already in the sudo user group, but executes sudo It is still necessary to enter the password of the current user, which is very troublesome, so we need to avoid using it sudo The phase when the password is entered.

Because Qunhui's shell is a whole bunch, it can't be used visudo edit /etc/sudoers , so use vim Operation.

Confirm your user name first:

 id

The output is as follows, mikusa It is the user name of the current user.

 $ id uid=1026(mikusa) gid=100(users) groups=100(users),101(administrators),65537(docker)

Then edit /etc/sudoers

 sudo vim /etc/sudoers

You will be asked to enter the password of the current user, and then i Type to edit, then skip to the end with the arrow key, and insert:

 mikusa ALL=(ALL) NOPASSWD: ALL

Among them, mikusa For users who want to be password free. Do not delete or fill in incorrectly!

Then force save:

 wq!

This allows the user to use sudo There is no need to enter the password when the command is given.

Log in to SSH using the key

The password is usually used to log in to SSH on Qunhui. This is actually very unsafe and troublesome. The operation of comparing geeks is to configure the key for the current user and log in with the key.

You can enter the following command on the computer terminal first, and then use ed25519 The algorithm generates a key:

 ssh-keygen -t ed25519 -C "mynas"

After returning all the way, the following contents will be output:

 $ ssh-keygen -t ed25519 -C "mynas" Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/mikusa/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/mikusa/.ssh/id_ed25519 Your public key has been saved in /c/Users/mikusa/.ssh/id_ed25519.pub The key fingerprint is: SHA256:QIQ2zmTjGZWXnF80/nfqRhe28UKLIdnt8cHIfuov/dI mynas The key's randomart image is: +--[ED25519 256]--+ |     ++o o .o    | |    O.. =  ...   | |   B =.. . + o.o  | |    =  .  +  o++* | |        S  ..= o+O| |            ..===| |             .=+ | |             +o.E| |            .o+oo| +----[SHA256]-----+

It prompts that the public and private keys are saved in the /Users/mikusa/.ssh Folder. I.e C:\Users\mikusa\.ssh , where mikusa Is your computer user name. Open this folder, find the id_ed25519.pub public key file, copy the public key, and install it in the NAS.

First, we create the. ssh folder in the NAS and grant permissions:

 mkdir -p ~/.ssh && chmod 700 ~/.ssh && cd ~/.ssh

Install public key:

 echo 'ssh-ed25519 XXXXXXXXXXXXXXXXX' > authorized_keys

Don't quit in a hurry. You need to further modify the file permissions:

 chmod 600 ~/.ssh/authorized_keys

Edit SSH profile:

 sudo vim /etc/ssh/sshd_config

Open the key login function and find the corresponding configuration. If there is # You need to delete and modify the following no by yes

 PubkeyAuthentication yes

Overload sshd:

 systemctl restart sshd

In the. ssh folder on the computer, the name of the private key we just generated is id_ed25519 , rename it to a name that is easy to remember, such as mynas

Then, create a new one named config And fill in the following contents:

 Host NAS HostName 192.168.31.2 Port 22 User mikusa IdentityFile ~/.ssh/mynas

Don't I have to explain the meaning one by one?

After saving, use the following command in the terminal to connect:

 SSH NAS

After you confirm that you have successfully logged in with the key, you can /etc/ssh/sshd_config Disable password login in configuration:

 PasswordAuthentication no

Finally, confirm whether the configuration has been modified successfully:

 sudo cat /etc/ssh/sshd_config | grep -E '^PasswordAuthentication|PubkeyAuthentication'

output

 PubkeyAuthentication yes PasswordAuthentication no

No problem, you can use it systemctl restart sshd Restart the SSH service.

Using Docker

Non root users cannot directly use the Docker command. We can create a docker user group:

 sudo synogroup --add docker

Add the current user to the docker user group:

 sudo synogroup --member docker $USER

And then docker.sock The user permissions of are modified to Docker User Group:

 sudo chown root:docker /var/run/docker.sock

You can use the Docker command normally.

Or use DSM to manually create a docker user group in "Control Panel - Users and Groups - User Groups", add the target user to the group, and finally perform the modification in SSH docker.sock The command with user permission of is also available.

last

After a series of operations, Qunhui's shell should be more comfortable than the original version. Even though the shell of Qunhui NAS is optimized, the DSM system is not suitable for learning Linux. In order to focus on storage, the DSM lacks too many functions and imposes many restrictions. If you want to learn Linux in depth, you'd rather use the WSL function of Windows than directly perform operations on DSM that may damage the system.

Last Last

I'm not a professional programmer. I don't have many opportunities to use Linux every day. So far are the functions I can show. If there are any technical errors in this article, please do not hesitate to correct them.

reference resources

]]>
thirteen https://www.himiku.com/archives/optimizing-synology-nas-shell.html#comments https://www.himiku.com/feed/
Lonely Rock! Unpacked https://www.himiku.com/archives/bocchi-the-rock-3-discs.html https://www.himiku.com/archives/bocchi-the-rock-3-discs.html Fri, 09 Feb 2024 15:00:00 +0800 mikusa In 2022, there will be such a diffuse animation. Except for the fans of the original, few people can notice its existence from the flood of 57 animations in the autumn of this year: the four grid cartoon form of the original and the theme of light lilies mean that its original audience will not be particularly large; The person in charge of animation supervision is an unknown young newcomer. This is his first work. Before that, he had just painted some original paintings, done some separation, and performed Yiditiu. That's all. However, from the moment when the animation is broadcast, it can be seen everywhere on social media and video websites, and its discussion and re creation have never disappeared from the Internet. I don't know how many people live like a year and wait for its update every week, how many people laugh because of its unconstrained performance style, and how many people cry because they resonate with the characters in the play. It shines with the light that the original cartoon does not have. Its imaginative performance and just right rhythm have raised this work to a height that everyone did not expect. Its name is called《 Lonely rock! 》。

I like this animation very much, not only because the animation depicts the protagonist's "social phobia" vividly, but also because I see the charm of 2D animation once again, in addition to Goto Ili's exaggerated expression and this "social phobia". It reminds me of the cicadas' chirping in my ears when watching Huawuyu, and the setting sun on the table when watching Chopping Maiden. And one day in the future, I will also remember the day when I curled up in the quilt and giggled at Pochi sauce. Therefore, after the completion of the animation, I fell into a deep void. The ideas of "Oh, it's my honor to see such works in my lifetime" and "I should do something for what I like" kept coming to my mind. I am very grateful to the supervisor Keiichiro Saito and the production team for their efforts in this animation, which enabled me to see such a perfect animation in 2022. Therefore, I decided to purchase the surrounding of Lonely Rock! To show my slight support for animation.

Happy New Year, friends! On the occasion of the Spring Festival holiday, I wish you all a prosperous new year and everything goes well, and we are blessed with wealth! New happiness and health for family, striving for the first place in study, thriving career, and sweet love!

As for those who don't want to get married, they won't be urged! I hope I will not be urged.

Then what will appear soon is something I have planned for a long time, from It was bought last year, but I don't know how it was written that it had been a pigeon for a year, and now I decided to take out water Three discs of Lonely Rock. They are: Blu ray CD of the first volume of animation, music CD of the opening song "Youth" and music CD of the music collection "End". (´∇ノ‘*)ノ

purchase

This purchase was entrusted to a Japanese leader I knew in the group. Maybe it is because Xinguan has lost his mind, or it may be because of impulse consumption. In short, in order to first time When I bought the first volume of BD of animation, I chose to purchase it on behalf of others rather than pre order on a treasure or wait for stock.

One of the advantages of agency purchase is that it can provide an additional "shopping" process, such as exploring stores by car, placing orders for shopping, and settling the return trip. As long as the purchasing agent is willing, it is not impossible to give you a live broadcast.

It's just that it's still "cloud" shopping. It's definitely no different from my mobile phone, I didn't buy it myself

The amount...... Is the money of the purchasing agent alone?

The express delivery package is also quite reliable. First, the boss helped me cover three discs with buffer foam, and then padded the bottom with newspapers. Finally, a pamphlet of the movie "Reincarnation as Slim" was put on it. For my album to bring as delicate as baby care.

The purchasing agent took it to the post office for me the next day. Mine is a small box on the right, and on the left is something he bought for others.

Finally, let me count the expenses of this purchase:

  • Animation Volume I Blu ray Disc: ¥ 510
  • Opening song Youth CD: ¥ 100
  • Music CD of the music collection "End": ¥ 282
  • EMS postage from Japan to China: ¥ 125

The total cost is ¥ 1017.

What about the price of Lonely Rock after a year? This is the price of a shop I searched on Taobao.

A small change in the price difference is enough to buy another volume of BD

I must have burned Toushi Lezhi before I chose to buy it!

wait for

There are still many disadvantages of purchasing on behalf of others, that is, things cannot be returned, and regret medicine cannot be taken. When you buy it, you should take it easy. During the days when you are waiting for the trans ocean express, the first thing to get up every day is to check the logistics progress, and then start the day's arrangement.

  • On January 3, the purchasing agent Osaka Send it for me and arrive at 10:50 p.m. the same day Overseas Export Exchange Bureau
  • After five days in Osaka, he left the Overseas Export Exchange Bureau on January 8.
  • Five days later, they arrived at 8:48 on January 13 Shanghai International Exchange Bureau
  • Leave Shanghai Aviation Center at 5:38 on January 14 and arrive on January 15 Fuzhou Qishan Processing Center of Fujian Postal Service Department
    So far, 12 days have passed.

In the next 14 days, the logistics information was fixed at 05:00 on January 15, 2023. It was not until 10:06 on January 29 that the logistics information changed from "in transit" to "in customs clearance".

I thought that it would be faster to spend more money to go to the post office. Unexpectedly, express delivery spent a year in Fuzhou Qishan Processing Center of Fujian Postal Service Division. From the 24th day of December to the 8th day of the first month 15 days Good year.

  • On January 29, Fuzhou delivered to the import customs
  • On February 1, the import customs released
  • On February 2, he left the customs and began to send.

So, it took 30 days just to get from Japan Customs to China Customs, and then to pass the customs inspection... Finally, it took another 4 days, and finally on February 6, 2023, the express delivery was delivered to the township post office. I received my package at 3:51 p.m. that day, a scarred paper box that had been weathered, eaten and slept in the open, and had already been ripped open.

Unpacking

With a knife, I cut the tape, and saw a shabby newspaper with a twisted shopping bag underneath.

First of all, I didn't offend anyone; Secondly, I don't know how the customs staff opened my package, but at least he didn't open the plastic protective film again to destroy my final unpacking experience; In short, I thank them.

I also recorded an unpacking video. If you are interested, you can watch it. Portal of station B: BV1q6421u7ev

End

The album "End" of the same name, "End" of "End", includes a total of 14 pieces of music, including OP, ED, episodes and new songs.

This album includes two discs, a sticker, a piece of paper that seems to be a scorecard, and a piece of BOCCHI THE ROCK! Sticker for the title of the first sentence and a lyric book.

The front of the album's outer lining is a group photo of the four ending members of the band, while the four colored circle on the back represents the four members. The pink platoon stands for Boqi, and then it means "Hongxia", "Liang" and "Xiduo".

 High definition scanning stolen online
High definition scanning stolen online

In the lyric book of the album, it turns into four interlocking rings, while Hong Xia pulls the falling Boqi.

 High definition scanning stolen online
High definition scanning stolen online

DISC 1 is the 14 pieces of music from the album "The End", and DISC 2 is the MV of the beginning and end of the animation.

 High definition scanning stolen online
High definition scanning stolen online

Youth

Youth 》A total of 4 pieces of music were included, including OP's "Youth" and ED's "Tokyo" and their accompaniments.

This EP includes a disc, a lyric poster and a sticker for the team logo of the end band.

Animation BD Vol.01

I have bought music albums before, but it is the first time for me to buy Blu ray Disc.

The cover character of this first volume is Pochi sauce. The CD contains the first and second episodes of animation, the original song "ぼっちざろっくくオゆジナル, ドトゅック vol.1" and some behind the scenes videos.

There is also a raffle ticket for participating in the activity (the day when the express arrived at my hand, it just expired, and I can't even give it to the purchasers), with an animated ED villain sticker.

And four postcards.

These four postcards are taken from the covers of four albums: Distortion.

As for the contents of the disc, I don't have a Blu ray player, so I still like the old one. I found the contents on the Internet.

When I opened the box to write about this, all the complaints about these lonely rock and roll that arrived only one month ago, were opened randomly, and spent too much money were swept away. Now I just want to see the second season of Lonely Rock right away.

Come on, Brother Saito, who is making animation!

]]>
twenty https://www.himiku.com/archives/bocchi-the-rock-3-discs.html#comments https://www.himiku.com/feed/
read https://www.himiku.com/archives/reading.html https://www.himiku.com/archives/reading.html Sat, 20 Jan 2024 01:40:00 +0800 mikusa Zhiri · The Kingdom of Books
Written in March 2021

In order to be less boring when queuing for vaccination, I specially read the book "The Kingdom of Books" that I knew today.

When we arrived at the vaccination site, there were only a few dozen people standing in line at the gate of the hospital. I was secretly glad that it would be good to come half an hour early, but after the vaccination, there would be no chance to read. But after taking the temperature and entering the door, I found that I was wrong. The hospital was already crowded with people, and the queue waiting for vaccination rolled to the end of the horizon like a lost roll of paper. It seems that everyone wants to go together. I followed the crowd and it took me five minutes to find the starting point, which was the exit of the emergency exit at the back door of the hospital. So I can only read books while waiting in line for three hours. These three hours are not all reading, standing reading is not very comfortable. What's more, there are short videos and chats all around. It's useless to wear headphones and turn on the music to the maximum. And from time to time, people rush to the front to jump in the queue... In short, it's not suitable for reading.

But now that I have decided to bring it here, I have to watch it. I don't want to use it as a decoration. Although The Land of Books was published in December 2011, it is not out of date now. The book roughly introduces the Japanese concept of reading, the forms of expression of books, and the public's attitude towards book consumption. It also introduces the production of books, including design, typesetting and printing. It also mentioned the impact of the rise of e-books on physical books, and how the market copes with this change.

With regard to the strong reading atmosphere of Japanese people, it is no longer necessary to investigate whether the Japanese really love reading or envy their reading environment. The social environment and national habits of China and Japan are not the same. It may be true that there is no reading environment in 2011 when The Land of Books was published. But with the rise of the national economy and the popularity of education, we can also see people reading in public in China. One thing to note, however, is that in Japan and China, when short videos are rampant, it is difficult to read books on the subway or bus. What's more, migrant workers are physically and mentally exhausted after a busy day, and they have to squeeze the subway after work. The simplest way to relax is to brush, shake, shake, and have fun. While reading is a matter of concentration, fragmented reading has little effect. If you really want to use the time on the subway to read, you would also like to read some current affairs or gossip. Then this is even better for short videos.

But the prosperity of Japan's publishing industry is indeed obvious to all. All kinds of strange books can be seen on the shelves of Japanese bookstores, and the subject matter is also diverse. No matter literature or comics, some people like to read even "toilet paper". It seems that domestic bookstores also have this trend, which reminds me of Big Ice. Japan's environment of "as long as there is an audience, there will be people writing" is similar to that of online articles. Unfortunately, there are few cases of online publishing in China. Most popular light novels in Japan will be published in the form of physical books, and the subsequent multimedia will be determined depending on their sales, so as to promote the sales of physical books after expanding the influence of IP. Kogawa, a well-known publishing group in Japan, is also a promoter of various light novel adaptation animations.

I have to mention the price of Japanese books here. Before I had a deep understanding of the price of Japanese books, I had the experience of buying Japanese comics imported from Hong Kong and Taiwan. For comic books of the same specification, the genuine version imported from China may cost only 10 to 15 yuan, while Hong Kong and Taiwan will cost 20 to 30 yuan (including freight, etc.), and the Japanese original version will cost 60 to 70 yuan. In other words, under the same printing quality, except for various transportation costs, only Chinese books may be so "cheap". Even across the globe, Chinese books are very cheap. I am a fanatical buyer of physical books, which makes me more willing to spend more on physical books.

As the last introduction of the Book Country, digital devices such as the Kindle, iPad and the way of reading e-books on the Internet have impacted the physical book market, especially in Japan and China. Most of the surviving bookstores in China have been transformed into cafes or other leisure places with reading. However, I prefer physical books. Although physical books are much more expensive than e-books, their reading experience is quite different from e-books.

Seeing that the noise around me was becoming more and more harsh, I closed the book. Although "The Land of Books" introduces many Japanese achievements in book layout design, its own layout is very poor. Maybe this is one of the reasons for the decline of domestic paper books. At least I felt my eyes ache after reading it.

 Retro
Retro
 So is this one
So is this one

Maybe the e-book is better in the case of waiting in line for vaccination. I should bring my Kindle.

Thinking of this, I opened the Legend of Hearthstone on my mobile phone.

Because I really don't know what to send, so I found some previous materials and added some current materials, and combined them into one article. No one has read it anyway, including this sentence. Little impact. This directly filled several holes in my inventory, comfortable!

Sleeping Mermaid's Home

Keigo Dongno's best-selling books are getting worse and worse. I suspect they are money spinners: "The brain dead daughter relies on high-tech to maintain her life", "The heart disease children in urgent need of organ transplantation can't wait until the moment of surgery". What's more, this book basically has no ingredients of reasoning and suspense, and it is more and more deliberately provocative. It even uses the magical ending of "dreaming that women's physical health value drops sharply after their daughter says goodbye". There is a feeling of reading chicken soup for the soul.

Single Love

Written in September 2023

Keiwu Dongno has used up all his materials, so he took a different approach and wrote "The Devil of Laplace", which is not a mystery novel at all. He should be addicted to writing. I turned to Wikipedia. After he wrote La Plath's Witch in 2015, he launched the Fetal Movement of Magic in 2018 (known as the prequel of La Plath's Witch. The score is naturally poor, only 5.9 on Douban). The cover of the version introduced in China is pretty good, and I almost bought it; This year, we plan to launch the third volume of the series of La Plath's Witch. I have already eaten the bowl of La Plath's Witch 💩, Want to cheat me to eat the second bowl and the third bowl again?

Of course, I am not stupid enough. So I found his "Single Love" written in 2001, which was introduced by Nanhai Publishing House in China. However, on the waist of the book, there is also a striking sign that "I will try my best to write works that will be interesting even for those who do not like mystery novels or even reading." This kind of slogan is much lighter than the words on the waist of the book La Plath's Witch: "I want to destroy my previous novels, so this work was born.", I still have to wipe a cold sweat. I bought physical books, which should be a bunch 💩, There's no refund.

Fortunately, Single Love is a well reasoned story, telling a relatively simple case. This time, Keigo Toyano focused on the "sexual minorities" who "have different sexual orientation, sexual behavior and gender identity from the surrounding social groups", and focused on describing those "gender identity barriers" who have "male body and female heart" or "female body and male heart", that is, now often referred to as "cross gender". Venus, a famous dancer, belongs to this category.

Keiwu Dongno spent a lot of time describing his understanding of this group. He compared the gender to the poles on the "Mobius Ring", and the people with "gender identity barriers" were between the poles:

"If it is an ordinary piece of paper, then the reverse is always the reverse, and the front is always the front, and there is no chance for the two to meet. But if it is replaced by a Mobius ring, the front will become the reverse unconsciously. The front and the back are closely connected. All people in the world are on this Mobius ring, and there is no complete woman, nor complete man. And everyone has more than one Mobius ring. Some are male, but others are female, which is the general situation. Even your body has a female part. It's transgender, but it can't be generalized. There are many types of transsexualism. There are no identical people in this world.

In the age of the book, there is nothing wrong with this description. But if we judge it by the current standards, we will fall behind several versions. In 3202, there were dozens of genders. However, I can't express my opinion on "cross gender". After all, "sex" is a profound subject, which can be explained clearly in a few words, let alone "cross gender". So I can only evaluate this work from the perspective of mystery novels.

In my opinion, due to his one-sided understanding of "sexual minorities", the description of sexual minorities in the book is limited to the part quoted above, and then the concept is repeated constantly. There are few descriptions of the complex psychology that can really be cultivated because of the torture of gender cognition, which is different from the compliant crowd. As a result, the structure of the character "Japan, Pu, America and the Moon" in Single Love is flawed, and the story as a whole cannot be deeply examined.

The role of "Ripu Meiyue" is in essence an extremely selfish and headstrong person, which is why he makes such unimaginable actions as confessing to Li Sha, showing love to Zhe Lang, and leaving without saying goodbye for several times. Meiyue misleads readers that it is true to think, and it is false to set up a character image. These Sao operations have nothing to do with whether she is transgender, just because she wants to do so. What's more, she knew the truth of the incident from beginning to end, but all her actions did not help hide the truth, instead, they helped her to die faster. Moreover, Meiyue always appears at the beginning of a story, disappears at the climax, and reappears at the end. It is not a role normally used for narration, but a story driven machine at the textbook level. At the end of the article, Dongo also tried to directly explain Meiyue's series of behaviors with the sentence "Meiyue is a woman and a man". I guess he didn't understand what this "transgender" was about, so he shaped Meiyue into a strange character who "acts like a woman or a man, thinks like an adult, and insists that he may only have some mental illness". Otherwise, how could he write a happy ending of making dumplings?

In a word, this novel, "Single Love", which seems to be intended to narrate through "cross gender", is not suitable for understanding the mood of cross gender people, nor is it a qualified mystery novel.

Confession

When I first saw "Confession", people would think that it is a mystery novel related to "confession", but actually "confession" here means "confession", or "monologue" is more appropriate. Because the whole book is written in the first person. Strictly speaking, this should be a crime record novel from the perspective of case related persons. In the six chapters of "Confession", the five characters explained the whole story of the case out of their own positions. Although they did not involve too much reasoning, they could let the readers connect a story that formed a strong contrast with the warmth of "Confession", a distorted society full of the dark side of human nature.

Having the same dream again

"Another Dream, the Same Dream" is a composition with the theme of "happiness". I bought it because I was deeply impressed with the original novel cover painted by Loundraw. Although the cover of the domestic introduction is not like this.

This light novel tells the definition of "happiness" from her perspective, as well as the people and things that happened when she explored "happiness" through the childish tone of the primary school girl "Little Liu Naihua". The "same dream" runs through it, adding a touch of magic to this ordinary story.

The story is not complicated. In the process of reading, I can gradually realize that "Sister Nan", "Sister Abazilei" and "Grandma" met by Xiao Nai are all themselves in different periods of time in the parallel world. "Happiness" is the ultimate pursuit of life, while "dream" is the mistake made in the process of pursuing happiness. "Sister Nan" and "Sister Abazilei" were troubled by "dreams" with regret for their childhood behavior, so as to teach young Nai; "Grandma" has experienced everything and lives happily. She is also the future of Xiao Nai who is not troubled by "dreams".

You can read it at leisure.

]]>
six https://www.himiku.com/archives/reading.html#comments https://www.himiku.com/feed/
If only I had a sister. Endcard and the author https://www.himiku.com/archives/imouto-sae-ireba-ii.html https://www.himiku.com/archives/imouto-sae-ireba-ii.html Sun, 31 Dec 2023 23:56:00 +0800 mikusa Recently, I began to tend to watch some animations that were not highly rated, the subject matter was not very new, or even "cool". "If only I had a sister." is one of them.

If only I had a sister one It is a TV animation broadcast in October 2017 SILVER LINK. make, Big marsh heart Supervised, 12 episodes in total, adapted from the light novel of the same name created by Hirasaka Doo. The novel was completed in February 2020, with 14 volumes in total.

When I first saw the title of the film, I thought that "Fruit Girl" would be a sister controlled work similar to "How can my sister be so cute". I watched two episodes with ecstasy, but just the first episode can conclude that this is not a female control fan, but a low-cost table with no lower limit, and Temeow's title fraud! Too much role benefits I can only After reading it, I realized that Fruit Girl was about the daily life of a group of light novelists. Moreover, "Guo Mei" does not focus entirely on "sister", just because the main character "Haneda Yiyue" takes "if only there was a sister" as its motto novelist ( Grand hentai ) He is extremely eager to have his sister's belief into the power of writing, and will Nonexistent MEI MEI's love is integrated into the text, and then he created a series of light novels with MEI MEI as the theme. He is surrounded by a group of friends who are full of personality, and the daily narrative between them is full of fun—— Even if Yi Yue really has a person who is not related by blood Legitimate sister

Although the portrayal of character attributes in "Guo Mei" also follows the consistent style of Hirasaka's reading of another work, "My Friends Are Few", such as the male novelist who has no sister but is heavily female dominated, the female genius novelist who likes to open a yellow tone, and the "Didi" who dresses as a man only to hide from her brother... But the story of "Guo Mei" is somewhat restrained, at least not "My Friends Are Few" Then the tripping deviates from the reality. On the contrary, the stories in "Guo Mei" do have traces to follow. Some people even said that "Sister Fruit" was Hirasaka reading about himself. I agree with this view. I fully believe that there are novelists who can't find inspiration to travel and look for materials. I also believe that there is a genius who can write things only in the fruit state. Of course, there are many original authors who are called "dung works" because of the animation of novels. It is the premise of these true stories that can be properly applied to the characters with "two-dimensional properties" to deduce the interesting stories in the play.

But then again, Fruit Girl is not an excellent animation worthy of Amway. Even if the supervisor is Kenobi Ohnuma, and even if his story rhythm is reasonable, "selling meat" and "controlling sister" still persuade most people to quit. But Zhu Jun, I like the edge ball! Maybe "Fruit Girl" is someone else's bad work, maybe? But I think this movie is good, and the board games with frequent animations are also very interesting, and some scenes really moved me. But there is nothing worth praising, It's not that I don't know how to write because my writing style is too bad! That's why I thought about Endcard's underwater animation.

It seems that there is no more formal translation of "Ending Card", so I simply call it "End Card". It is the ending picture that appears at the end of each episode of animation. Generally, it is an illustration related to animation that the animation production team asks industry personnel or illustrators to draw.

The first sentence

い~どぅ~ He is the author of the cartoon "Guo Mei". The style of painting is not very similar to the novel illustration. Could it be the supervision of novel illustration Zhu Yu in front? Look at his new work《 Weakened brave people 》The style of painting is OK, but it seems that it is not warm or hot? This illustration was officially released Tweets

The game of this is: black story

As one of the materials of the lateral thinking game, the topic with strong eventuality is as full of "dark" events as the title. Because there are some outrageous events, please feel free to play.

The second sentence

コバシコ The style of this endcard and his Twitter The illustration on the photo is not like the work of the same person, but the drawing method of eyes seems to be unchanged... so does he《 If only I had a sister. If only I could become a sister! 》Maybe it is because of deliberately imitating the style of novels and comics? 17 years of animation, 18 years of publicity... even the style of this publicity cartoon has changed a lot. Currently being serialized《 Boys who can't stop women's clothes 》。

The game of this is: good luck

The special game of "How many girls can welcome you during the three years of high school" will be called "Prince of Planting". Be careful not to quarrel because you are too involved.

The third word is "red thread"

Red thread Just looking at the list of works is much more active than the one above. She has posted this illustration on Twitter Tweets

Hongxu or《 Slim, who has played for three hundred years, unknowingly reached the full level 》She also has an ADV game planned and drawn by her, called《 LACKGIRL I - “Astra inclinant, sed non obligant.” 》, the evaluation is acceptable.

This illustration was officially released Tweets

This is not a game, but a popular science about "whale sharks":

The largest living fish. Predation of plankton and fish. Because of its slow movement and gentle character, it is less dangerous to human beings. The huge body swimming slowly in the water will attract the attention of the viewer.

Lesson 4 Aoki Shenping

Aoki Shenping It's SILVER LINK The original painting, character setting and chief painting supervisor. The most recent work is《 Ragnar, a hunter of dragons 》In this animation, he is the first person to set up characters.

This illustration was officially released Tweets

Because this story is mainly about "tax collectors", it is a popular science about "home tax":

The system of donating money to any autonomous group, and that amount will be returned. Most groups will give local specialties and accommodation vouchers in return according to the donation amount.

The fifth sentence

ぶーた She is a cartoonist and illustrator. She posted this illustration on Twitter Tweets She is a novel《 Shaving. Then I found a female high school student 》Illustrations are drawn. I didn't really want to see this animation, but Z paste wrote《 The shaved me and the female high school students found 》Come to Amway and look at it at one time when you are free.

Recently, he also took charge of the new product in October 2023《 Our Rain Color Agreement 》The original case of the character. This is the one Animations that drive pan crazy

This illustration was officially released Tweets

This is about the introduction of Yi Yue's novel "Sister Law School Series":

The series being serialized by Ishiyuki Yushima. The brother and sister of Jike and Siddell, who studied in the magic school, have deepened their fetters due to various events. The published works include Brother and Sister at the Crane Tail of the Sister Law School, the most ferocious knight of, the Rhapsody of, the Student Union of, and the Struggle of.

Sixth Session:

Decision making He is a versatile player, proficient in illustration, script and planning. Not only responsible for《 The sword dance of the spirit envoy 》Illustrations or games《 Camus in the blue sky 》Author of. But his Twitter is almost deleted, Personal website The work on is very different from this endcard. I still like him pixiv The painting style of the early works on the painting

This is about the introduction of "Xiangnan Gold":

The beer is brewed with a rare orange developed in Kanagawa County and Hunan gold. Because of the refreshing taste and fragrance of citrus, it is very popular with young women. The alcohol content is 5%.

Lesson 7

The value set by four people for their roles in TRPG.

8. Mu Yexia in Chengjiang

Mu Yexia Chengjiang As an animator from SHAFT, he is responsible for《 Spy Classroom 》Character design and chief painting supervisor. She is also the chief drawing supervisor of this animation, and the official video of her folding a fat bow in 29 seconds has been released on Twitter, Station B transmission door

By the way, our chief painting supervisor is the "underwear school".

The game of this is: pseudo artists in New York

The player plays the role of artist and paints according to the theme, but there is a fake artist who does not know the theme You can enjoy the game even if you don't have the ability to draw. It is a classic party game.

Lesson 9 Kotaro Yamada

Kotaro Yamada There is not much information available for him. At present, I only know that he is a cartoonist, and his works are also several. He posted this illustration on Twitter Tweets

A new book I was reading for Hirasaka recently《 Monster's salad bowl 》Draw cartoons. This work will also be animated next year. I'm looking forward to it.

This is about the popular science of the roles in the play in the two counties.

First, Gifu County:

In recent years, the border area has been overwhelmed by the stage of many animes. The fish species in the county is fragrant fish. Special persimmon.

Gunma County:

In recent years, the border area has become very proud because it is the stage of many big river dramas. The fish species in the county is fragrant fish. Special Konjak.

Speaking of this, the whole process is high-energy, and everyone is blowing up XP. For example, the supervisor is totally naked, and the original author, Hirasaka Readu, is also totally naked. Bangumi Others on the list have calculated the proportions of various factions in the STAFF list, which are as follows:

  • All Naked Sect: 52 (32.1%)
  • Underwear pie: 79 (48.8%)
  • Sock pie: 6 (3.7%)
  • Indifferent: 17 (10.5%)
  • Others: 8 (4.9%)

Lesson 10 Quan Meisha

Quanmei Shazi is the original painter, responsible for the design of props in this work. Recently participated in animation《 UniteUp! 》The original painting work.

By the way, she is a lingerie pie.

This is about whisky ichiro's malt:

The masterpiece of Japanese whisky produced by Venturewisky is also widely praised abroad. If you taste the profound flavor, you will be captured.

Lesson 11 White Body Fish

Unexpectedly, Whitebody Fish also drew endcard for this work and released it Twitter News , full of Kyoto flavor. I have already written about white body fish. You can go to here See the detailed introduction.

This is about Golden Alert:

Its aroma, mellow, and taste are praised as "this is the strong beer", and it has a royal delicacy that makes people not tired of drinking. It is also recommended for people who have never drunk strong beer but want to try it. The alcohol content is 5%.

12th sentence

カントク He is the illustrator of this novel. I don't need to say more about supervising the name! What does it look like《 One Room 》、《 To you like a god 》、《 Abnormal Prince and Smiling Cat 》They are all original paintings in his charge. The recognition of the works is quite high, and the style is also very popular, especially the astringent part of the painting (\\\\\\\\\\\\\)

reference resources

Finally, attach the lovely Beijing sauce! Happy 2024 New Year( ^▽^ )


  1. Abbreviated to "Guo Mei"
]]>
fourteen https://www.himiku.com/archives/imouto-sae-ireba-ii.html#comments https://www.himiku.com/feed/
Mikusa Annual Issue 5 https://www.himiku.com/archives/mikusa-annual-issue-5.html https://www.himiku.com/archives/mikusa-annual-issue-5.html Sun, 10 Dec 2023 00:00:00 +0800 mikusa "Mikusa Annual Issue", as a program that focuses on minor repairs and supplements of blogs, if it does not reflect specific improvement plans for the current situation of blogs and continues to be the same as before, it may be difficult to convince people in the long run. I will use it from 2019 VOID The theme is almost five years old now. Although VOID has not been updated for more than three years, it is still the most comfortable theme I use. A Beef with sauce! Just time changes, I also want to add something to my blog. In the past years, I could say, "I don't know any programming language, and I can't add other functions to my blog", so I can use some simple things in a dignified way. But this year the situation is different. The emergence of AI such as ChatGPT has enabled people who do not understand code to write code.

So, with the help of ChatGPT and New Bing teachers (mainly Bing teachers, GPT teachers charge too much), this code Xiaobai added the following functions to the blog.

Code box copy button

As we all know, Chuzhiyin is a lifestyle blog focusing on unpacking and hydrology, but after the blogger bought NAS, he wrote a series of NAS After the relevant tutorials, the code content of hydrology has risen sharply. Therefore, in order to facilitate people to copy these codes with one click, I refer to the " Yacan Blog "About《 Add Code Block Copy Button 》And copied a copy icon from other places to simply realize this function. During the use process, I found that Yacan's code does not support copying on the mobile phone.

I tried to ask ChatGPT, and she said:

document.execCommand compatibility: document.execCommand It is gradually abandoned in modern browsers, and different browsers support it differently. You can consider using a more modern Clipboard API to perform replication operations.

In addition, this script does not seem to support PJAX, and you need to refresh the page to use it. I also asked GPT to add PJAX overloading and night mode.

And copy tips:

In a word, after many friendly and intense discussions with GPT, the repaired code box copy button JS Some are as follows:

 //Copy handler Function copyHandle (content, successMessage="Copying succeeded", errorMessage="Copying failed"){ navigator.clipboard.writeText(content) .then(() => { VOID.alert(successMessage); }) .catch((error) => { console.error(errorMessage, error); VOID.alert(errorMessage); }); } //Click the event to delegate processing through the event function addClickListener() { $('.clipboard').on('click', function () { copyHandle($(this).next().text()); }); } //Initialize clipboard function function loadClipboard() { $('pre').prepend('<div class="clipboard"><svg aria-hidden="true" role="img" class="clipboard-icon" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display: inline-block; user-select: none; vertical-align: text-bottom;"><path fill-rule="evenodd"  d= "M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25- .25v-9.5a.25.25 0 01.126-.217z"></path></svg></div>'); //Rebind event handlers addClickListener(); } //Set event on page load $(document).ready(() => { loadClipboard(); });

Added night mode CSS part:

 /*Shear plate*/ .clipboard { position: absolute; top: 3px; right: 10px; color: #22252b; z-index: 100; text-align: center; cursor: pointer; line-height: 18px; } body.theme-dark .clipboard { color: white; }

And the most important PJAX overloaded functions. If you use PJAX, don't forget to set the " PJAX Overload Function ", fill in this function:

 loadClipboard();

You only need to set the " Head tag output content Chinese <script> </script> and <style> </style> Respectively wrap JS and CSS Code, you can have this copy button!

Homepage header dynamic effect

The dynamic effect of the homepage header is from Erdao Blog You can go back now Home page (Only PC side) Check the effect.

Specifically VOID/includes/banner.php final <? php elseif($this->is('index')): ?> Add a script to condition judgment. The detailed code is as follows:

 <? php elseif($this->is('index')): ?> <? php $title = Helper::options()->title; if($setting['indexBannerTitle']!='') $title = $setting['indexBannerTitle']; $subtitle = Helper::options()->description; if($setting['indexBannerSubtitle']!='') $subtitle = $setting['indexBannerSubtitle']; ?> <div class="banner-title index<?php if(!empty($banner)) echo ' force-normal'; ?>"> <h1 class="post-title"><span class="brand"><span><? php echo $title; ?></ span></span><br><span class="subtitle"><? php echo $subtitle; ?></ span></h1> </div> <!--  Start of dynamic effect of homepage header --> <script> detect = document.querySelector(".index"); banner_img = document.querySelector("#banner > img"); banner_img.style.width = "110%"; banner_img.style.left = "-5%"; detect.addEventListener("mouseenter", function(n) { this.x = n.clientX, banner_img.style.transition = "none" }); detect.addEventListener("mousemove", function(n) { this._ x = n.clientX; n = 0 - (this._x - this.x) / -30; banner_img.style.transform = "translate(" + n + "px, 0px)" }); detect.addEventListener("mouseleave", function(n) { banner_img.style.transition = ".3s", banner_img.style.transform = "translate(0,0)" }); </script> <!--  End of dynamic effect of homepage header --> <? php endif; ?> </div>

It's just that I haven't seen him for a few days. I have copied it.

First, a paragraph css

 #scrollButton { position: absolute; left: 50%; bottom: 10px; color: white; transform: translateX(-50%); } #scrollButton:hover { filter: drop-shadow(2px 5px 6px white); } #scrollButton.rotated { transform: rotateX(180deg); /* Rotates the button 180 degrees around the X-axis */ transition: transform 0.5s ease; /* Smooth transition for rotation */ } .lazy-wrap:not(.no-banner) { min-height: 0vh; filter: brightness(1); transition: min-height 0.5s ease, filter 1s ease; }

Another script, also in VOID/includes/banner.php final <? php elseif($this->is('index')): ?> Add:

 <!--  Enlargement effect of homepage header --> <? php if (!Utils::isMobile()): ?> <div id="scrollButton" aria-label="Scroll Down"> <svg xmlns=" http://www.w3.org/2000/svg " xmlns:xlink=" http://www.w3.org/1999/xlink " fill="white" height="15px" width="15px" version="1.1" id="Layer_1" viewBox="0 0 330 330" xml:space="preserve"> <path id="XMLID_225_" d="M325.607,79.393c-5.857-5.857-15.355-5.858-21.213,0.001l-139.39,139.393L25.607,79.393  c-5.857-5.857-15.355-5.858-21.213,0.001c-5.858,5.858-5.858,15.355,0,21.213l150.004,150c2.813,2.813,6.628,4.393,10.606,4.393  s7.794-1.581,10.606-4.394l149.996-150C331.465,94.749,331.465,85.251,325.607,79.393z" /> </svg> </div> <script> document.getElementById('scrollButton').addEventListener('click', function () { var lazyWrap = document.querySelector('.lazy-wrap:not(.no-banner)'); var button = document.getElementById('scrollButton'); if (lazyWrap) { lazyWrap.style.minHeight = lazyWrap.style.minHeight === '89vh' ? '' : ' 89vh'; lazyWrap.style.filter = lazyWrap.style.filter === 'brightness(1.3)' ? '' : ' brightness(1.3)'; } // Toggle the 'rotated' class on the button button.classList.toggle('rotated'); }); </script> <? php endif; ?>

Footer

Earlier versions of VOID came with " a brief remark ", which was later removed. Like this:

 The early VOID is also very beautiful!
The early VOID is also very beautiful!

I want to add it back. Official website Example of use That's true:

We assume that there is a block level element in your web page to display the text content of one word, and we want it to jump to the specified page of one word for subsequent collection and feedback.

 <!--  Note that the following example contains hyperlinks, and you may need to manually configure the style so that it does not change color. If you find it troublesome, you can remove it. --> <p id="hitokoto"> <a href="#" id="hitokoto_text">: D Getting</ a> </p>

Then we can <script></script> Medium or .js Our interface is used in the file:

 <!--  This example cannot add link content. It is placed here only because this interface is convenient and may be able to solve most of the requirements --> <script src=" https://v1.hitokoto.cn/?encode=js&select=%23hitokoto " defer></script>

Or use Fetch API

 //Please note the compatibility of this web API, //IE is not supported, iOS Safari<10.1, //Full Support List Reference: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API fetch(' https://v1.hitokoto.cn ') .then(response => response.json()) .then(data => { const hitokoto = document.querySelector('#hitokoto_text') hitokoto.href = ` https://hitokoto.cn/?uuid= ${data.uuid}` hitokoto.innerText = data.hitokoto }) .catch(console.error)

I finally chose Fetch API The scheme of. But there is no provenance for such a word. I hope that the one word format is the one that comes from earlier VOID. After asking New Bing, the code is changed as follows:

 fetch(' https://v1.hitokoto.cn ') .then(response => response.json()) .then(data => { const hitokoto = document.querySelector('#hitokoto_text') hitokoto.href = ` https://hitokoto.cn/?uuid= ${data.uuid}` hitokoto.innerText = data.hitokoto + " —— " + "「" + data.from + "」" }) .catch(console.error)

The effect of a word would be like this:

The lightning from your fingertips is my unchanging belief in this life. Only my super electromagnetic gun will last forever—— "A scientific super electromagnetic gun"

But this is not enough. This is a word with a link. You can jump to the official website of Yiyan. To be honest, I don't want this effect. I just need words. After continuing to ask New Bing, the code referring to one sentence is changed as follows:

 <p id="hitokoto"><span id="hitokoto_text">The girl is praying</ span></p>

Open the VOID theme folder in the /VOID/includes/ Found in footer.php , insert this code under "Thank you for your company":

 <p>Thank you for your company:<span id="uptime"></span></p> <p><span id="hitokoto_text">The girl is praying</ span></p>

Since no link is required, the original script will be changed as follows:

 function loadHitokoto() { fetch(' https://v1.hitokoto.cn/?c=a&c=c ') .then(response => response.json()) .then(data => { const hitokoto = document.querySelector('#hitokoto_text') hitokoto.innerText = data.hitokoto + " —— " + "「" + data.from + "」" }) .catch(console.error) }

It's not over yet. Because I have enabled VOID PJAX Function, so this script needs to be reloaded when switching pages. At the same time, I also hope that when the one word service is interrupted, I can output an error prompt instead of displaying "girls praying...". With the help of New Bing, this script is adapted PJAX

 //Define a function to load a word function loadHitokoto() { //Get data from Yiyan server using fetch API fetch(' https://v1.hitokoto.cn/?c=a&c=c ') //When the response arrives, parse it into JSON .then(response => response.json()) //When the data is parsed, update the text of the # hitokoto_text element .then(data => { const hitokoto = document.querySelector('#hitokoto_text') hitokoto.innerText = data.hitokoto + " —— " + "「" + data.from + "」" }) //If an error occurs in the above process, change the text of the # hitokoto_text element to an error message .catch(error => { console.error(error); const hitokoto = document.querySelector('#hitokoto_text') Hitokoto.innerText="Yiyan service is invalid~"; }); } $(document).ready(function () { loadHitokoto(); });

Finally, add one word overload function in VOID theme settings:

 loadHitokoto();

Emoticon Script

For VOID emoticons, see《 Mikusa Yearly Issue 2 》In the article, I copied other bloggers to add some expressions on my own (in fact, I'm curious about how those codes are generated). Now I'm tired of using those expressions, and adding them manually is not only time-consuming and laborious, but also does not conform to the theme of this issue. I wrote a script through New Bing to automate this process as much as possible:

 #Create an empty ArrayList to store results $jsonArray = New-Object System. Collections. ArrayList #Traverse all. png files in the current directory Get-ChildItem -Filter "*.png" | ForEach-Object { #$_ is a special variable that represents the object currently being processed (here, it represents the file currently being processed) #Get the file name of the current file (excluding the extension) $oldName = $_. BaseName #Get the extension of the current file $extension = $_. Extension #Encode file names using URL encoding $newName = [System.Web.HttpUtility]::UrlEncode($oldName) #Delete% from file name $newName = $newName. Replace("%", "") #Convert file names to uppercase $newName = $newName. ToUpper() #Merge the file name and extension to get a new file name $newName = $newName + $extension #Rename File Rename-Item -Path $_. Name -NewName $newName #Create a Hashtable to store the information of the current file $jsonObject = New-Object PSObject #Add "icon" field to Hashtable $jsonObject | Add-Member -MemberType NoteProperty -Name "icon" -Value ("<img class=`"biaoqing`" data-src=`"/usr/themes/VOID/assets/libs/owo/biaoqing/mihoyo/$newName`">") #Add "data" field to Hashtable,! The slash in front of ($oldName)  please delete it manually, it will be escaped by VOID $jsonObject | Add-Member -MemberType NoteProperty -Name "data" -Value (":\!($oldName)") #Add "text" field to Hashtable $jsonObject | Add-Member -MemberType NoteProperty -Name "text" -Value ("$oldName") #Add the information of the current file to the results $jsonArray. Add($jsonObject) | Out-Null } #Convert the results to JSON format and output them to a file named owo.json $jsonArray | ConvertTo-Json | Out-File -FilePath owo.json

Now you just need to manually prepare the emoticons, such as the above Mi You Club Remove some patchouli. The name of the emoticon package file should preferably be in the format shown in the figure.

Then create a new text document, fill in the above script, and modify .txt Suffix is .ps1

Win 11 has its own terminal. Right click the current directory to open the terminal and enter

 .\owo.ps1

After entering, the emoticon file name is automatically changed to delete % And generate JSON files conforming to VOID emoticon format.

 [ { "icon": "<img class=\"biaoqing\" data-src=\"/usr/themes/VOID/assets/libs/owo/biaoqing/mihoyo/E897BFE897BF_E5A5BDE7979B.png\">", "Data": ":/!", "Text": "Huohuo pain" }, { "icon": "<img class=\"biaoqing\" data-src=\"/usr/themes/VOID/assets/libs/owo/biaoqing/mihoyo/E897BFE897BF_E68D8FE884B8.png\">", "Data": ":/!", "Text": "Huohuo_pinching face" }, { "icon": "<img class=\"biaoqing\" data-src=\"/usr/themes/VOID/assets/libs/owo/biaoqing/mihoyo/E897BFE897BF_E68A93E78B82.png\">", "Data": ":/! (Huohuo _ Crazy)", "Text": "Huohuo _ Crazy" } ]

Reference《 Mikusa Yearly Issue 2 》Modify the files related to the emoticon package, and you can have a new emoticon package!!

It would be great if I could add an emoticon pack. Unfortunately, I don't know how to ask GPT about this function.

Copyright plug-in

Also in《 Mikusa Yearly Issue 2 》In the article, I mentioned the use of the Copyright plug-in. At that time, Shapian Nian could not directly use the markdown format link. This time, relying on New Bing, it also successfully added the markdown parsing function. Although I can't understand the principle and seem to have a bug, at least I can use markdown directly.

Specifically, this part of code:

 $t_cover='<p class="content copyright"><strong>Source of cover:</strong>'$ cr['cover'] . '</ p>';

It is modified as follows:

 $parsedCover = Typecho_Widget::widget('Widget_Abstract_Contents')->markdown($cr['cover']); $parsedCover = strip_tags($parsedCover, '<a><em><strong>');  //  Keep links and accent tags $t_cover='<p class="content copyright"><strong>Source of cover:</strong>'$ parsedCover . '</ p>';

You can use the markdown syntax link in the cover source like this.

 [XilmO @ Xilmo/sad # Pixiv]( https://www.pixiv.net/artworks/109181977 )

By the way, change the author's piece to be able to parse markdown:

 $t_author='<p class="content copyright"><strong>Author:</strong>'$ cr['author'] . '</ p>';

It is modified as follows:

 $parsedAuthor = Typecho_Widget::widget('Widget_Abstract_Contents')->markdown($cr['author']); $parsedAuthor = strip_tags($parsedAuthor, '<a><em><strong>');  //  Keep links and accent tags $t_author='<p class="content copyright"><strong>Author:</strong>'$ parsedAuthor . '</ p>';

You can use the markdown syntax directly like this:

 [mikusa]( https://www.himiku.com )

However, during the test, it is found that the Copyright plug-in is not compatible with Typecho 1.2. If you disable it and then enable it, all functions will fail. Therefore, do not disable plug-ins rashly, or you can only enable related functions by manually modifying the database.

However, you can also manually modify the plug-in to enable two functions by default, namely, "Show original (local) text links" and "Show in article". Plug in Plugin.php Search in NULL, NULL, NULL , put the first NULL Change to one OK.

 $form->addInput($notice); $showURL=new Typecho_Widget_Helper_Form_Element_Checkbox ('showURL ', array (1=>_t ('display original (text) link')), 1, NULL, NULL); $form->addInput($showURL); $showOnPost=new Typecho_Widget_Helper_Form_Element_Checkbox ('showOnPost ', array (1=>_t ('display in article')), 1, NULL, NULL); $form->addInput($showOnPost); $showOnPage=new Typecho_Widget_Helper_Form_Element_Checkbox ('showOnPage ', array (1=>_t ('display on independent page')), NULL, NULL, NULL); $form->addInput($showOnPage);

Mirror station

I didn't want to write this part at first, but I was afraid that my friends who didn't know the truth would think that I had no place to spend so much money on domain names. Although I did buy several domain names.

Maybe my PHP program doesn't " Always exposed to danger one Even if there is a real danger, I don't know how to find clues from the log, but I will search myself! So I really caught these two guys. These two mirror stations do not directly request the data of the source station like Z sauce, but do their own work, or use batch programs to create new sites. I just used my name, my articles and my pictures, and didn't even use the links from the websites directly. So I have nothing to do with them.

first Voice of the beginning of piracy It was found in the background reference of the blog around May this year. I don't know which version of Typecho has updated this function. In short, thanks to its self imposed network, I was able to find this replication site at the first time.

I really didn't expect to register the Pinyin domain name of "Chuzhiyin", but I didn't expect this kind of thing to prevent trademark theft to happen to me. So far, it has copied and pasted 11 of my articles, 2 photos and 4 friend chains.

At first, I wanted to make a statement in time, but when I calmed down, I found that, I can't do anything about it The statement will only take up my valuable blog space, and when you are curious, you will click twice to attract my few remaining traffic. Besides, after it copied those articles, there was no further action, so I didn't pay attention to it.

For a long time, Google has included it and it is still listed below me.

the other one Voice of the beginning of piracy ... How to say, it used my landing page, didn't say anything, but also stole my random map, and opened one of its own

It was probably at the time of its establishment that another map station experienced a large picture request, which directly blew up my machine

I have nothing to do with it. I just hope it doesn't make trouble with my ID. Z sauce said that when I was mirrored, I was jealous of why I was not mirrored, Is there not enough water. When I was copied and pasted, I had a headache again

last

Although this time it looks like the goods are full, I can't understand many codes. This year, thanks to the AI model, I was able to make these changes to the small station. It is difficult to debug without basic code knowledge. I guess there must be something worth optimizing... I don't know if I can still rely on the power of AI to fix the bugs in the small station if there are problems later.

In short, the above is the issue of this year! I urged you a while ago Z sauce When updating, I noticed that there was still no water in the log this year. Then, with this log, the KPI of this year's blog will be completed! Thanks for Z sauce ヾ (≥ \\\\\\\\\\\\\\\\\\ Z sauce cheated the radio station That's right.

But I won't fix the bug if I cheat. It seems that I'm trapped in an endless loop

Well, let's leave the affectation for later. Let's say goodbye to the next issue~

]]>
thirty-three https://www.himiku.com/archives/mikusa-annual-issue-5.html#comments https://www.himiku.com/feed/
Navidrome: another option for self built music library https://www.himiku.com/archives/navidrome.html https://www.himiku.com/archives/navidrome.html Sat, 25 Nov 2023 22:15:00 +0800 mikusa On《 My Music Library Solution 》In this article, I briefly introduced some plans for my self built music library on NAS at this stage. But whether it's Jel ­ Lyfin, Emby or Plex are not special music media programs. Even though these software have the function of playing music, and the interface is also very beautiful, their core purpose is still to play video after all. Therefore, I only recommend friends who have video viewing needs to deploy such media programs, so that they will not be troubled by too many useless functions.

In fact, I found an open source music server software " Navidrome 」。 However, compared with Yu Sanjia, although the interface of Navidrome adopts the material design design, the display effect does not meet my personal aesthetic needs; Although the web side is universal across all platforms, it still needs an app on the mobile device to facilitate instant use; Even if it is compatible with a series of music streaming protocols such as Subsonic/Madsonic/Airsonic, most of the players on the market that support these protocols are in English, almost no Chinese, and they are also very difficult to use; Not to mention that until the release of this article, Navidrome still does not support plug-in LRC lyrics one ……

With such criticism, you must understand why I didn't get to Amway Navidrome in time. But what is the reason for hydrological recommendation now? In the past two days, I saw the group friends recommend a music player program "Audio Stream" developed by Chinese people. The interface is in line with Chinese aesthetics, the design is simple, and the functions are practical, which indirectly solved the pain points of Navidrome that is not beautiful and easy to use. Therefore, Navidrome is worth recommending to everyone.

The following operations are carried out in the DS220+equipped with DSM 7.2.1-69057 Update 3. The Docker Compose version is 2.25.0.

install

It is recommended to use Docker Compose to install Navidrome. establish docker-compose.yml File, fill in the following contents:

 services: navidrome: image: deluan/navidrome:latest container_name: navidrome User: 1026:100 # user id, see the following for details ports: -4533:4533 # If the port on the left conflicts, you can modify it at will volumes: - ./ Navidrome:/data # Data path -/volume1/media/music:/music: ro # music path environment: #Program default language - ND_DEFAULTLANGUAGE=zh-Hans #Enable GRAVATAR avatar - ND_ENABLEGRAVATAR=true #Turn off transcoding. If transcoding is required, set it to true - ND_ENABLETRANSCODINGCONFIG=false #SPOTIFY related # - ND_SPOTIFY_ID= # - ND_SPOTIFY_SECRET= #LAST. FM related # - ND_LASTFM_LANGUAGE=zh # - ND_LASTFM_APIKEY= # - ND_LASTFM_SECRET= #PROXY related # - HTTP_PROXY= http://proxy:port # - HTTPS_PROXY= http://proxy:port restart: unless-stopped

about user Part, Navidrome is not recommended root User run. Qunhui administrator users are generally 1026:100 , you can use this user to log in to the SSH terminal and enter id username Query. For example, my Qunhui user name is mikusa

 $ id mikusa uid=1026(mikusa) gid=100(users) groups=100(users),101(administrators),65537(docker)

If you are really uncertain or too lazy to check, fill in 1000:1000

stay volumes For the mount part of the folder, it is recommended to set read-only for the music folder :ro Mark to ensure that music files are not modified. Qunhui users should also pay attention to pre creation navidrome Data folder.

As for the environment variables, although there are dozens of environment variables to choose from in the official document, there are not many configurations actually used. Except for the fixed language and turning off transcoding, they are all functions that do not affect the use.

If you want Navidrome to display artist avatar, you need to configure Spotify Relevant parts. You need to create a Spotify account first, and then https://developer.spotify.com/dashboard/applications Create an application in Create app.

Just fill in App name App description as well as Redirect URI Redirect URI needs to be filled in these three places http://localhost/ , you can save it.

Then return to the console, click Application, enter Application Settings, and get Client ID and Client secret Corresponding to the ND_SPOTIFY_ID and ND_SPOTIFY_SECRET

If you want Navidrome to display information about singers and popular songs, you need to configure it in the environment variable Last.fm Also create a Last.fm Account, going to https://www.last.fm/zh/api/account/create To create an API account, just fill in the application name. After submission API Application Copy and paste the Key and Secret to the environment variable on the page.

The above two external functions depend on the personal network condition. If they cannot be used, you may also need to configure proxy Item.

If you need to increase or decrease environment variables, please refer to Official Documents

If you need to use the domain name to access Navidrome, here is a simple Nginx reverse proxy configuration:

 server { listen 80; server_name navidrome.you.domain; return 301  https://navidrome.you.domain $request_uri; } server { listen 443 ssl http2; server_name navidrome.you.domain; #SSL configuration omitted location / { proxy_pass  http://navidrome:4533 ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_buffering off; } access_log /home/wwwlogs/navidrome.log; }

use

After the container is started, Navidrome can be used directly, and almost no other additional settings are required.

The first time you visit IP: 4533, Navidrome will ask you to create an administrator account first.

Because the default language has been configured in the environment variable, the user's language need not be modified, and it is directly Chinese.

Although Navidrome does not strictly obtain music data from MusicBrainz as Plex does, you can still refer to《 MusicBrainz Incomplete Use Guide 》Add ID3Tags information to music before adding it to Navidrome.

In short, as long as you are ready for music, Navidrome can be used out of the box.

 This is the album page
This is the album page

Spotify and Last.fm configured during the installation of Navidrome will eventually enable the artist page to display relevant information such as avatar and introduction.

Even if you do not configure Last.fm related environment variables, you can check "Enable Last.fm preference recording" in personalization settings to record the music you have heard through Last.fm.

Log in to Last.fm account on the authorization page and allow access. In Navidrome, each user can configure their Last.fm account to record the music played.

As long as the network is OK, you can almost view the music being played in real time.

I forgot to introduce it. This is how Navidrome displays lyrics. Currently, only embedded lyrics can be displayed.

This is true on mobile devices.

By the way, I have embedded bilingual lyrics, which normally should be displayed in two lines.

 Effects on Plex
Effects on Plex

Now Zhu Jun knows how bad Navidrome's support for lyrics is.

App

In order to make Navidrome a little easier to use, my suggestion is to use a third-party client. Navidrome currently supports the Subsonic/Analog/Audio protocol. There are many Subsonic/Analog/Audio clients on the market (iOS App Store), but they are all No Chinese The emergence of "audio stream" gives Chinese users a choice.

Sound stream

Sound stream "Is a music player developed by Chinese people, which supports Subsonic/Navidrome/Jellyfin/Emby/AudioStation. It is now logged in to Android and iOS, and may support Windows and tvOS platforms in the future. The audio stream is developed with Flutter, and the interface is simple and beautiful. It is mainly transparent and Gaussian fuzzy. The layout is similar to Netease Cloud music, and there is no threshold for getting started. You can Audio official website Get the Android installation package, or directly search the iOS App Store for "audio streaming" to download.

Here, I only introduce the usage of audio stream (There's really nothing to say) We just need to fill in the Navidrome address, user name and password to log in, and then we can enter the audio home page.

If you have a lot of music, the stream may need to be scanned for a while.

Then, you should notice that the " Main line "These three words. This is the most surprising function in the audio stream. It supports the switching between active and standby lines two In other words, you can fill in the intranet address for the main line and the internet address for the standby line. In this way, when you go out, the audio stream can automatically switch to the Internet address, and when you return home, it will automatically switch back to the Internet. Because streaming media has a cache, the process of switching networks will not interrupt playing music.

But I'm not sure if switching the network when I'm ready to buffer the next song will cause the software to crash.

The measured music will jam, which may be caused by my Navidrome.

All aspects of audio stream are very similar to Netease Cloud. The home page is arranged according to the latest album, daily recommendation, recently played, most frequently played and random album. Among them, the daily recommendation is 50 random songs. If you feel that these 50 songs are not suitable for your current mood, you can refresh and change them immediately, which is a good function.

You can slide left to enter the recommendation page and right to enter the lyrics page. The audio stream supports reading the lyrics embedded in the music and displaying them in two lines in both languages. If the audio stream is charged later, I guess it may start with providing the lyrics API. As long as the buyout price is moderate, we can consider starting. Wrong guess, not the lyrics.

Symfonium

A friend in the comment area recommended " Symfonium ", online only Android End. It's really good to try it out. The internal purchase price is $5.

Unlike audio streaming, the Symfonium design language is closer to Android's Material You and has more powerful functions. It supports connection to Plex, Emby, Jellyfin, Subsonic, OpenSubsonic, Kodi, Samba (SMB v2/v3), WebDAV servers, and supports direct cloud providers (Google Drive, OneDrive, DropBox, Box), which is much more than current audio streaming can connect to.

Maybe the UI is not as simple and beautiful as audio streaming, but it can customize a lot of functions and scan the database faster than audio streaming, which is one of the advantages.

lyric

Group friends told me that there is an open source API program for lyrics/cover " LrcApi ", which can be directly used on the sound stream. No wonder this is not the payment for audio streaming.

According to the official introduction, LrcApi is built for voice traffic. Support Kugou/Aggregation API to obtain LRC lyrics and music/album/artist covers. The installation is also very simple. Compose a shuttle:

 services: lyricapi: image: hisatri/lyricapi:latest container_name: lyricapi ports: - 28883:28883 environment: - TZ=Asia/Shanghai #- API_AUTH=Customize an authentication key volumes: -/volume1/media/music:/music: ro # Consistent music path with Navidrome restart: unless-stopped

about volumes For the mount part, if you are using Navidrome, you can map the music path of Navidrome to the container, so that LrcApi can directly use your local existing LRC lyrics. It directly solves the problem that Navidrome cannot use local lyrics.

About Environment Variables API_AUTH If you publicly created LrcApi but do not want others to pay for it, you can fill in this environment variable and add a password (header authentication) to LrcApi. Only the correct password can be used in the audio stream.

Then cooperate with Nginx reverse proxy. You can put LrcApi in the same Nginx configuration of Navidrome:

 location /jsonapi { proxy_pass  http://lyricapi:28883/jsonapi ; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }

In this way, you can add /jsonapi To access this API.

Or, you don't like to use /jsonapi Access, as long as location /jsonapi In /jsonapi Just change it to something you like. For example, change to /lrc You can fill in the sound stream https://navidrome.you.domain/lrc To use LrcApi.

However, LrcApi currently does not support obtaining lyrics with translations, and hopes to support the use of lyrics sources of Netease Cloud Music in the future. Therefore, if you have friends who use Navidrome and have saved many LRC lyrics locally, it would be better to build a LrcApi.

  • Figure 1: Paid items of official audio stream
  • Figure 2: Music payment interface, fill in the API you created or the API published online address If there is password authentication, fill in the password Verification information In one column
  • Figure 3: Lyrics obtained through API
  • Figure 4: Local lyrics obtained through API
 Figure 1
Figure 1
 Figure 2
Figure 2
 Figure 3
Figure 3
 Figure 4
Figure 4

That's it. For other functions on Navidrome, audio stream or Symfonium, please find and experience them yourself!

reference resources


  1. The official Github had a report two years ago about " Support external LRC "Is still open
  2. Automatic line switching is a paid function in the official version.
]]>
forty-two https://www.himiku.com/archives/navidrome.html#comments https://www.himiku.com/feed/