[LINUX] Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen

Motiviert

Es gibt viele Animationen auf der Festplatte, aber es ist mühsam, die Festplatte an den Computer anzuschließen und anzusehen. Machen wir sie also im Browser sichtbar.

Umgebung

Da der Ort, an dem die Animation gespeichert wird, kein NAS, sondern nur eine Festplatte ist, wird davon ausgegangen, dass es sich bei der Festplatte um einen NAS mit Raspberry Pi handelt. Das Verfahren zum Verwandeln einer Festplatte in ein NAS wird hier nicht gezeigt.

HDD(NAS)Ort


/mnt/hdd/HD-V3/Anime/

Einführung von Tomcat

Das Verfahren auf dieser Seite ist sehr einfach zu verstehen, folgen Sie also hier. Umgebungseinstellung für Himbeerkuchen-Tomcat-8

Wenn Sie die Grundlagen wie geschrieben ausführen, funktioniert dies reibungslos. Wenn Sie dies jedoch genauso mit wget tun, funktioniert es nicht, da apache-tomcat-8.5.4.tar.gz nicht mehr verfügbar ist. Da 8.5.31 auf dem neuesten Stand war, sollten Sie apache-tomcat-8.5.31.tar.gz unter Windows herunterladen und mit scp oder so an Raspai senden. Es schien, als würde ich gedit (?) Verwenden, um das Skript zu bearbeiten, aber es war irgendwie so, also schrieb ich das Skript in meinem Lieblings-Nano. Wenn Sie den Schritten im obigen Link folgen, wechselt tomcat zu / usr / local / tomcat. Dieses Mal werde ich hier mit Tomcat mit der Geschichte fortfahren.

Standort des Kater


/usr/local/tomcat/

Verzeichnisstruktur, Hierarchie

Die Arbeit wird in einem Ordner namens Arbeitsbereich ausgeführt. tomcat scheint den Ordnernamen anzugeben, um die Klassendatei der Webanwendung abzulegen. Wenn Sie eine Anwendung mit einer darauf basierenden Hierarchie erstellen, lautet die Hierarchie wie folgt. 2018-05-08 (2).png Ursprünglich scheint es, dass ich dieses Mal einen Ordner meiner eigenen Anwendung unter tomcat / webapps / erstellen werde, aber da sich NAS auf einer höheren Ebene befindet, möchte ich keine Webanwendung unter webapps erstellen. Deshalb wird der Arbeitsbereich auf der Festplatte platziert.

Arbeitsbereich


/mnt/hdd/HD-V3/Anime/workspace/

Der Arbeitsbereich befindet sich nicht unter Webanwendungen, daher müssen Sie Tomcat informieren. Schreiben Sie wie folgt. Der Name der Datei muss der Name des Verzeichnisses sein. (Es scheint eine Möglichkeit zu geben, es in server.xml zu schreiben, aber es hat nicht funktioniert.)

/usr/local/tomcat/conf/Catalina/localhost/workspace.xml


<Context path="/workspace" docBase="/mnt/hdd/HD-V3/Anime/workspace" />

Bearbeiten von web.xml

Schreiben Sie die Seitenstruktur des Arbeitsbereichs.

/mnt/hdd/HD-V3/Anime/workspace/WEB-INF/web.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>
	<servlet-name>cookie1</servlet-name>
	<servlet-class>cookie1</servlet-class>
</servlet>

<servlet>
	<servlet-name>cookie2</servlet-name>
	<servlet-class>cookie2</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>
		cookie1
	</servlet-name>
	<url-pattern>
		/servlet/cookie1
	</url-pattern>
</servlet-mapping>

<servlet-mapping>
	<servlet-name>
		cookie2
	</servlet-name>
	<url-pattern>
		/servlet/cookie2
	</url-pattern>
</servlet-mapping>

</web-app>

Hauptprogramm erstellen

Ich hatte ursprünglich geplant, Cookies zu verwenden, daher wird dieser Name verwendet, aber ich habe ihn nicht im Programm verwendet. cookie1.java Rufen Sie die Dateinamenliste in / mnt / hdd / HD-V3 / anime / workspace / anime / ab, fügen Sie sie dem Pulldown-Menü hinzu, wählen Sie einen Titel aus und wechseln Sie zu cookie2.java.

cookie1.java


import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.File;

public class cookie1 extends HttpServlet {     
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws  IOException, ServletException {
	         response.setContentType("text/html; charset=utf-8");
	         PrintWriter out = response.getWriter();
                 request.setCharacterEncoding("UTF-8"); 
                 out.println("<html><head>"); 
                 out.println("<title>cookie1</title>");
                 out.println("</head><body>");
                 out.println("<h1>Wiki Anime DB</h1><hr>");
		          String root="/mnt/hdd/HD-V3/Anime/workspace/anime/"; 
				  File dir=new File(root);
				  File[] list=dir.listFiles();
				  out.println("Anzahl der Titel:"+list.length+"<br>");
      	         out.println("<form action=\"/workspace/servlet/cookie2\" method=\"GET\">");
      	         out.println("Name: <input type=\"text\" name=\"name\" size=32>");
       	         out.println("<br>");         
       	         out.println("<input type=\"submit\" value=\"Codegenerierung\">");   
				 out.println("<br>");  
				 out.println("<select name=\"anime\">");
				 for(int i=0;i<list.length;i++){
					 String dst=list[i].toString();
					 dst=dst.replace(root,"");
					 out.println("<option value=\""+dst+"\">"+dst+"</option>");
				 }
				 out.println("<select>");       
       	         out.println("</form>"); 
       	         out.println("</body></html>"); 
        }
} 

cookie2.java Basierend auf dem Animationstitel, der von cookie1.java empfangen wurde, werden nur die Dateien mit der Erweiterung .mp4 | .MP4 in der Hierarchie eine Ebene unterhalb dieses Ordners ausgegeben, indem sie mit Video-Tags belegt werden.

cookie2.java


import java.io.*; 
import java.net.*;
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.File;
 
public class cookie2 extends HttpServlet {     
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws  IOException, ServletException {
	        response.setContentType("text/html; charset=utf-8");
	        PrintWriter out = response.getWriter();
            request.setCharacterEncoding("UTF-8");
            String aname=request.getParameter("anime");
            String eaname=URLDecoder.decode(aname,"UTF-8");
            String root="../anime/";
            String root_t="/mnt/hdd/HD-V3/Anime/workspace/anime/";
            out.println("<html><head>");
            out.println("<title>cookie2</title>");  
            out.println("</head><body>");      
            out.println("<h1>"+eaname+"</h1><hr>"); 
            out.println("Ausgewählter Anime-Ordner="+eaname+"<br>");
	        out.println("<form action=\"/workspace/servlet/cookie1\" method=\"GET\">");
	        out.println("<input type=\"submit\" value=\"Rückkehr\">");     
            out.println("</form>"); 
            File dir=new File(root_t+eaname);
				  File[] list=dir.listFiles();
                  out.println("Datei="+list.length+"<br>");
                  for(int i=0;i<list.length;i++){
                      String dst=list[i].toString();
                      dst=dst.replace(root_t+eaname+"/", "");
                      if(dst.indexOf(".mp4")!=-1  || dst.indexOf(".MP4")!=-1){
                        dst=root+eaname+"/"+dst;
                        out.println(dst+"<br>");
                        out.println("<video src=\""+dst+"\" preload=\"none\" controls></video><br>");
                      }
				  }
	        out.println("</body></html>");
	  }
}

kompilieren

Sie müssen kompilieren, indem Sie servlet-api.jar mit der Option classpath hinzufügen.

/mnt/hdd/HD-V3/Anime/workspace/WEB-INF/classes/


$ javac -classpath "/usr/local/tomcat/lib/servlet-api.jar" cookie1.java
$ javac -classpath "/usr/local/tomcat/lib/servlet-api.jar" cookie2.java

Hinweis Die Kompilierung schlug zunächst fehl, da /usr/local/tomcat/lib/servlet-api.jar keine Berechtigungen hat.

Genehmigung


$sudo chmod 755 /usr/local/tomcat/lib/servlet-api.jar

Ich habe die Berechtigungen erteilt und sie dann kompiliert und es hat funktioniert.

Lauf

python


$ sudo /etc/init.d/tomcat start

Cookie1 Bildschirm

2018-05-08.png

Cookie2 Bildschirm

2018-05-08 (1).png

Aufgabe

  1. Die Anzahl der Geschichten ist nicht in aufsteigender Reihenfolge
  2. Es gibt zu viele Titel und es ist schwer, sie im Pulldown-Menü zu finden

Derzeit können Sie mit ZOY die Animation auf der Festplatte bequemer von Ihrem Smartphone aus ansehen.

Recommended Posts

Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
[Elektronische Arbeit] Ich habe mit Raspberry Pi einen Suica Touch-Sounddetektor hergestellt
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Ich habe mit Raspberry Pi gesprochen
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich habe Sie dazu gebracht, Befehle über einen WEB-Browser auszuführen
Ich habe mit Python eine Lotterie gemacht.
Aufbau eines VPN-Servers mit Raspberry Pie
Ich habe mit Python einen Daemon erstellt
Verwenden einer Webkamera mit Raspberry Pi
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Ich habe mit Python einen Zeichenzähler erstellt
Verbesserter menschlicher Sensor mit Raspberry Pi
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Ich habe mit Python eine Hex-Map erstellt
Ich habe eine Web-API erstellt
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
Ich habe ein Tool erstellt, um Jupyter py mit VS Code in ipynb zu konvertieren
Ich habe einen Bot erstellt, um ihn auf Twitter zu posten, indem ich mit AWS Lambda eine dynamische Site im Internet abgekratzt habe (Fortsetzung).
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Python Web Content mit Lolipop billigen Server gemacht
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich möchte ein Spiel mit Python machen
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.