Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Pobieracz tekstów piosenek by Phoenix_PL


Rekomendowane odpowiedzi

Opublikowano

Witam.

Wkurzało mnie to że podczas szukania tekstów piosenek na stronie musiało się ładować jeszcze pierdyliard reklam, a ja chciałem szybko wrzucić tekst w tagi, więc machnąłem taki oto program. Wpisujemy wykonawcę oraz tytuł piosenki a on sam wyszuka nam tekst w serwisie tekstowo.pl

 

Jeśli macie jakieś uwagi do kodu, piszcie, dawno nie pisałem w c# więc mogą być jakieś błędy.

 

Kod aplikacji:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;

namespace teksty
{
    public partial class Form1 : Form
    {
        WebClient wcl;
        public Form1()
        {
            InitializeComponent();
            tytul.KeyDown += new KeyEventHandler(keyevent);
            tekst.KeyDown += new KeyEventHandler(zaznacztekst);
            wcl = new WebClient();
        }

        private void keyevent(object sender, KeyEventArgs key)
        {
            //reakcja tylko po kliknięciu entera
            if (key.KeyCode != Keys.Enter) return;
            
            //główny kod
            //zamiana spacji na myślniki
            char[] znaki = { '\'', '"', ':', '.', '(', ')', '=', '-', '/', '\\', '*', '?', '&', ' ' };
            string _autor = autor.Text, _tytul = tytul.Text;

            foreach (char element in znaki)
            {
                _autor = _autor.Replace(element, '_');
                _tytul = _tytul.Replace(element, '_');
            }

            //utworzenie adresu
            System.Uri adres = new Uri("http://tekstowo.pl/" + "piosenka," + _autor + "," + _tytul + ".html");
           
            //pobranie źródła strony
            
            string htmlsrc;
            try
            {
                 htmlsrc = Encoding.UTF8.GetString(wcl.DownloadData(adres));
            }
            catch
            {
                adres = new Uri("http://tekstowo.pl/" + "piosenka," + _autor + "," + _tytul + "_1.html");
                try
                {
                    htmlsrc = Encoding.UTF8.GetString(wcl.DownloadData(adres));
                }
                catch
                {
                    tekst.Text = "Nie można pobrać tekstu";
                    return;
                }
            }

            //pozycja tekstu w źródle strony
            int startpos = htmlsrc.IndexOf("<h2>Tekst piosenki:</h2>") + 52;
            int endpos = htmlsrc.IndexOf("<p> </p>", startpos) - 22;

            //wydobycie tekstu ze źródła strony
            string songtxt = htmlsrc.Substring(startpos, endpos - startpos);

            //kosmetyka stringa
            songtxt = songtxt.Replace(Environment.NewLine, "");
            songtxt = songtxt.Replace("<br />", Environment.NewLine);
            songtxt = songtxt.Replace("’", "'");
            tekst.Text = songtxt;
        }

        private void zaznacztekst(object sender, KeyEventArgs key)
        {
            if (!(key.Control && key.KeyCode.ToString() == "A")) return;

            tekst.SelectAll();
        }
    }
}

 

 

Paczka z projektem, aplikacja oraz link do folderu na dropboxie:

 

Dropbox:

https://www.dropbox.com/sh/m8brf4cookdxwfw/oW1U3brdd6
Paczka:

 

 

 

Aplikacja:

 

 

Jak coś to będę na bieżąco aktualizował, te linki będą zawsze aktywne.

 

//CHANGELOG//

v1.1 Program obsługuje znaki specjalne typu " ; ( ) w tytułach i wykonawcach piosenek, wcześniej nie znajdował tekstu jeśli wstawiliśmy taki znak.

 

v1.2 Teraz WebClient inicjuje się tylko raz.

846331404756772371599.jpeg
Bywalec
Opublikowano

Dodaj coś tego typu że jak wpiszemy błędny tytuł na przykład

-Firma - reprezentuje jotpe

 

to w propozycjach daje

-Firma - reprezentuje jp

 

 

Z tego co wiem na tekstowo poprawia tak jak się źle wpisze ;p

 

 

Program zajebisty.

Prosty ale przydatny :)

88498905942410602516.png

Opublikowano

Zamiast bawienia się substring mogłeś użyć wyrażeń regularnych, a do oczyszczenia końcowego stringa System.Web.HttpUtility.HtmlDecode(str), ale kod nawet ładny.

Opublikowano

Wiem że mogłem regularnych użyć, ale potrzebowałem tego na szybko a ich z grubsza nie ogarniam.

Dzięki za HtmlDecode, poczytam, potrzebuję czegoś co wywali dziwne niewyjaśnione białe znaki z końców linijek które powodują że AIMP wstawia dodatkowe entery w tekst, może to pomoże.

846331404756772371599.jpeg

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...